Ana içeriğe geç

DigitalOcean Spaces Dosya Yükleme: AWS C++ SDK ile Rehber

Bu rehberde ne öğreneceksiniz?

Bu rehber, C++ ile DigitalOcean Spaces üzerine dosya yüklemeyi anlatır.
AWS S3 uyumlu yapı sayesinde AWS C++ SDK kullanılır.
CMake ile derleme ve VS Code ile geliştirme süreci gösterilir.


Teknik Özet

Bu rehber, C++ uygulamasından DigitalOcean Spaces’e dosya yüklemeyi açıklar.
Amaç, S3 uyumlu uç nokta kullanarak güvenli yükleme yapmaktır.
Adımlar: SDK kurulumu, kod yazımı, CMake yapılandırması ve test.


Ön Koşullar

Başlamadan önce aşağıdakiler hazır olmalı:

  • CMake 3.13+
  • GCC veya Clang
  • AWS C++ SDK
  • Bir DigitalOcean Spaces alanı
  • Access Key ve Secret Key
  • Yüklenecek bir dosya (example.txt)

Proje Yapısı

Aşağıdaki dizin yapısı kullanılır:

do_spaces_cpp/ ├── build/ ├── CMakeLists.txt ├── main.cpp └── example.txt

Bu yapı, CMake ile derlemeyi kolaylaştırır.


1. AWS C++ SDK Kurulumu

Aşağıdaki komutlar SDK’yı kurar.

git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp.git
cd aws-sdk-cpp
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_ONLY="s3"
make -j4
sudo make install
  • Bu komutlar, yalnızca S3 bileşeniyle SDK’yı derler.

2. main.cpp Dosyasını Oluşturma

  1. Aşağıdaki örnek, Spaces’e dosya yükler.

#include <aws/core/Aws.h>
#include <aws/core/auth/AWSCredentialsProvider.h>
#include <aws/core/client/ClientConfiguration.h>
#include <aws/s3/S3Client.h>
#include <aws/s3/model/PutObjectRequest.h>
#include <fstream>
#include <iostream>

int main() {
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::String access_key = "ACCESS_KEY";
Aws::String secret_key = "SECRET_KEY";

Aws::String bucket = "ornek-bucket";
Aws::String endpoint = "fra1.digitaloceanspaces.com";
Aws::String region = "us-east-1";

Aws::Client::ClientConfiguration config;
config.endpointOverride = endpoint;
config.region = region;
config.scheme = Aws::Http::Scheme::HTTPS;

Aws::S3::S3Client client(
Aws::Auth::AWSCredentials(access_key, secret_key),
config,
Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never,
false
);

Aws::S3::Model::PutObjectRequest request;
request.SetBucket(bucket);
request.SetKey("example.txt");

auto input_data = Aws::MakeShared<Aws::FStream>(
"UploadTag", "example.txt", std::ios::binary | std::ios::in
);

request.SetBody(input_data);
auto outcome = client.PutObject(request);

if (outcome.IsSuccess())
std::cout << "Dosya başarıyla yüklendi." << std::endl;
else
std::cerr << "Yükleme hatası." << std::endl;
}
Aws::ShutdownAPI(options);
}
  • Bu kod, yerel dosyayı Spaces alanına yükler.

3. CMakeLists.txt Yapılandırması

  1. CMake yapılandırması aşağıdaki gibidir.

cmake_minimum_required(VERSION 3.16)
project(do_spaces_cpp)

set(CMAKE_CXX_STANDARD 17)
find_package(AWSSDK REQUIRED COMPONENTS s3)

add_executable(do_spaces_cpp main.cpp)
target_link_libraries(do_spaces_cpp $&#123;AWSSDK_LINK_LIBRARIES&#125;)
  • Bu dosya, AWS SDK ile bağlantıyı sağlar.

4. Projeyi Derleme ve Çalıştırma

  1. Derleme adımları:

cd build
cmake ..
make
./do_spaces_cpp
  • Bu komutlar, dosyayı Spaces’e yükler.

Güvenlik İpuçları

  1. Anahtarları asla kod içine yazmayın.

  2. Ortam değişkenleri veya .env dosyası kullanın.

  3. En az yetki prensibini uygulayın.

  4. Bu yaklaşım, yetkisiz erişimi önler.


Sıkça Sorulan Sorular (SSS)

  1. AWS C++ SDK neden kullanılıyor? S3 uyumluluğu sayesinde Spaces ile doğrudan çalışır.

  2. Region neden us-east-1? Spaces için sahte bölge yeterlidir.

  3. Dosya yüklenmezse ne yapmalıyım? Endpoint ve anahtarları kontrol edin.

  4. Birden fazla dosya yüklenebilir mi? Evet, döngü ile PutObject çağrılabilir.

  5. Anahtarlar nasıl saklanmalı? Environment variable kullanılması önerilir.


Sonuç

Bu rehberle, C++ uygulamanızdan DigitalOcean Spaces’e dosya yükleyebilirsiniz. AWS C++ SDK, S3 uyumluluğu sayesinde güçlü bir çözüm sunar.

Yüksek performanslı depolama çözümleri için Rabisu Bulut altyapısını hemen deneyebilirsiniz.