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
- 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ı
- 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 ${AWSSDK_LINK_LIBRARIES})
- Bu dosya, AWS SDK ile bağlantıyı sağlar.
4. Projeyi Derleme ve Çalıştırma
- Derleme adımları:
cd build
cmake ..
make
./do_spaces_cpp
- Bu komutlar, dosyayı Spaces’e yükler.
Güvenlik İpuçları
-
Anahtarları asla kod içine yazmayın.
-
Ortam değişkenleri veya .env dosyası kullanın.
-
En az yetki prensibini uygulayın.
-
Bu yaklaşım, yetkisiz erişimi önler.
Sıkça Sorulan Sorular (SSS)
-
AWS C++ SDK neden kullanılıyor? S3 uyumluluğu sayesinde Spaces ile doğrudan çalışır.
-
Region neden us-east-1? Spaces için sahte bölge yeterlidir.
-
Dosya yüklenmezse ne yapmalıyım? Endpoint ve anahtarları kontrol edin.
-
Birden fazla dosya yüklenebilir mi? Evet, döngü ile PutObject çağrılabilir.
-
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.