C++ में S3 और क्लाउड स्टोरेज के साथ कार्य: aws-sdk-cpp लाइब्रेरी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

aws-sdk-cpp लाइब्रेरी: C++ में S3 और क्लाउड स्टोरेज का एकीकरण



आधुनिक C++ अनुप्रयोगों को तेजी से क्लाउड स्टोरेज के साथ इंटरैक्शन की आवश्यकता होती है। चाहे वह बैकअप हो, मीडिया फ़ाइलों का भंडारण हो या सेवाओं के बीच डेटा साझा करना हो — S3-संगत स्टोरेज (Amazon S3, MinIO, Yandex Object Storage, DigitalOcean Spaces) डी-फैक्टो मानक बन गए हैं। Amazon की आधिकारिक लाइब्रेरी aws-sdk-cpp C++ कोड से सीधे S3 के साथ काम करने के लिए एक शक्तिशाली और लचीला टूलसेट प्रदान करती है।



इस लेख में, हम देखेंगे कि aws-sdk-cpp को कैसे कनेक्ट करें, प्रमाणीकरण कैसे सेट करें, ऑब्जेक्ट और बकेट के साथ बुनियादी संचालन कैसे करें, और संगत स्टोरेज के साथ काम करने की विशेषताओं पर भी विचार करेंगे।



aws-sdk-cpp क्या है?



aws-sdk-cpp C++ भाषा के लिए Amazon Web Services का आधिकारिक SDK है। इसमें S3, DynamoDB, Lambda, EC2 और अन्य सहित सभी प्रमुख AWS सेवाओं के लिए मॉड्यूल शामिल हैं। क्लाउड स्टोरेज के साथ काम करने के लिए S3 मॉड्यूल का उपयोग किया जाता है, जो समर्थन करता है:



  • बकेट (buckets) बनाना, हटाना और सूचीबद्ध करना।
  • ऑब्जेक्ट अपलोड, डाउनलोड, कॉपी और डिलीट करना।
  • बड़ी फ़ाइलों के लिए मल्टीपार्ट अपलोड (multipart upload) के साथ कार्य।
  • मेटाडेटा और ACL (Access Control Lists) का प्रबंधन।
  • स्ट्रीमिंग डेटा ट्रांसफर और एसिंक्रोनस ऑपरेशन का समर्थन।


स्थापना और कनेक्शन



SDK स्थापित करने का सबसे आसान तरीका पैकेज मैनेजर vcpkg के माध्यम से है:



vcpkg install aws-sdk-cpp[s3]


स्रोत से मैन्युअल बिल्ड के लिए CMake और C++14 या उससे नए संस्करण का समर्थन करने वाले कंपाइलर की आवश्यकता होती है। स्थापना के बाद, CMakeLists.txt में लाइब्रेरी को शामिल करें:



find_package(aws-sdk-cpp REQUIRED COMPONENTS s3 s3-crt)target_link_libraries(your_project PRIVATE AWS::aws-cpp-sdk-s3 AWS::aws-cpp-sdk-s3-crt)


ध्यान दें: s3-crt कॉमन रनटाइम पर आधारित एक वैकल्पिक कार्यान्वयन है, जो स्ट्रीमिंग ऑपरेशन के लिए बेहतर प्रदर्शन देता है।



S3 क्लाइंट कॉन्फ़िगरेशन



काम शुरू करने से पहले, एक Aws::S3::S3Client ऑब्जेक्ट बनाना आवश्यक है। संगत स्टोरेज (जैसे MinIO या Yandex Object Storage) तक पहुँचने के लिए, एक कस्टम endpoint निर्दिष्ट करना होगा:



#include <aws/core/Aws.h>#include <aws/s3/S3Client.h>#include <aws/s3/model/ListObjectsV2Request.h>

Aws::SDKOptions options;Aws::InitAPI(options);{ Aws::Client::ClientConfiguration config; config.endpointOverride = "https://storage.yandexcloud.net"; // Yandex Object Storage के लिए config.region = "ru-central1"; config.scheme = Aws::Http::Scheme::HTTPS;

// स्थानीय MinIO के लिए: config.endpointOverride = "http://localhost:9000"; // config.region = "us-east-1"; // MinIO डिफ़ॉल्ट रूप से इस क्षेत्र का उपयोग करता है

Aws::Auth::AWSCredentials credentials("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY"); Aws::S3::S3Client s3_client(credentials, config);

// आगे क्लाइंट के साथ काम करें}Aws::ShutdownAPI(options);


उदाहरण: S3 में फ़ाइल अपलोड करना



एक बुनियादी ऑपरेशन पर विचार करें — बकेट में स्थानीय फ़ाइल अपलोड करना:



#include <aws/s3/model/PutObjectRequest.h>#include <fstream>

bool UploadFile(const Aws::S3::S3Client& client, const std::string& bucket_name, const std::string& object_key, const std::string& file_path){ Aws::S3::Model::PutObjectRequest request; request.SetBucket(bucket_name); request.SetKey(object_key);

std::shared_ptr<Aws::IOStream> input_data = Aws::MakeShared<Aws::FStream>("UploadFile", file_path.c_str(), std::ios_base::in | std::ios_base::binary);

if (!input_data->good())\

अनुशंसाएँ