Travailler avec S3 et les stockages cloud en C++ à l'aide d'AWS SDK pour C++
\n\nDans le développement d'applications moderne, l'intégration avec les stockages cloud est de plus en plus courante. Amazon S3 (Simple Storage Service) est le standard de facto pour le stockage d'objets dans le cloud. Pour le langage C++, la solution la plus puissante et la mieux prise en charge est la bibliothèque officielle AWS SDK pour C++ (aws-sdk-cpp). Elle fournit un ensemble complet d'outils pour travailler non seulement avec S3, mais aussi avec MinIO, DigitalOcean Spaces, Yandex Object Storage et tout autre stockage compatible S3.
\n\nCaractéristiques et avantages
\n- \n
- API complète — la bibliothèque couvre toutes les opérations S3 : création/suppression de buckets, téléchargement/téléchargement d'objets, gestion des versions, téléchargement multi-thread de gros fichiers. \n
- Multiplateforme — fonctionne sur Linux, macOS, Windows, ainsi que sur les plateformes mobiles (iOS, Android). \n
- Asynchrone — prise en charge intégrée d'async/await via des futures, permettant d'écrire du code non bloquant efficace. \n
- Compatibilité avec les alternatives S3 — il suffit de modifier l'endpoint et les credentials pour passer d'AWS S3 à MinIO ou Yandex Object Storage. \n
- Prise en charge des flux — téléchargement/téléchargement de données directement via
std::iostreamsans stocker l'intégralité du fichier en mémoire. \n
Installation et connexion
\nLa bibliothèque est distribuée via vcpkg, Conan ou compilée à partir des sources. La méthode recommandée est via vcpkg :
\n# Installation de vcpkg (si pas déjà installé)\ngit clone https://github.com/Microsoft/vcpkg.git\ncd vcpkg\n./bootstrap-vcpkg.sh # ou bootstrap-vcpkg.bat pour Windows\n\n# Installation du SDK pour S3\n./vcpkg install aws-sdk-cpp[s3]\n\nDans CMakeLists.txt, il suffit d'ajouter :
\nfind_package(AWSSDK REQUIRED COMPONENTS s3)\ntarget_link_libraries(your_target PRIVATE ${AWSSDK_LINK_LIBRARIES})\n\nExemple de base : téléchargement d'un objet dans S3
\nAvant de commencer, il est nécessaire de configurer les identifiants. La méthode la plus sûre est d'utiliser le fichier ~/.aws/credentials ou les variables d'environnement AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY.
#include <aws/core/Aws.h>\n#include <aws/s3/S3Client.h>\n#include <aws/s3/model/PutObjectRequest.h>\n#include <fstream>\n\nint main() {\n Aws::SDKOptions options;\n Aws::InitAPI(options);\n {\n Aws::S3::S3Client s3_client;\n\n const Aws::String bucket_name = "my-bucket";\n const Aws::String object_key = "example.txt";\n\n // Préparation de la requête\n Aws::S3::Model::PutObjectRequest request;\n request.SetBucket(bucket_name);\n request.SetKey(object_key);\n\n // Lecture du fichier\n auto input_data = Aws::MakeShared<Aws::FStream>("tag",\n "local_file.txt", std::ios::in | std::ios::binary);\n request.SetBody(input_data);\n\n // Exécution de la requête\n auto outcome = s3_client.PutObject(request);\n if (outcome.IsSuccess()) {\n std::cout << "Fichier téléchargé avec succès !" << std::endl;\n } else {\n std::cerr << "Erreur : " << outcome.GetError().GetMessage() << std::endl;\n return 1;\n }\n }\n Aws::ShutdownAPI(options);\n return 0;\n}\n\nTravailler avec MinIO (stockage S3 local)
\nPour le développement et les tests, il est pratique d'utiliser MinIO. Pour que le SDK fonctionne avec MinIO, il faut modifier l'endpoint et désactiver la vérification SSL (si HTTPS n'est pas configuré) :
\n#include <aws/core/Aws.h>\n#include <aws/s3/S3Client.h>\n\nint main() {\n Aws::SDKOptions options;\n Aws::InitAPI(options);\n {\n // Configuration du client pour MinIO\n Aws::Client::ClientConfigura Aussi dans la bibliothèque
Planificateur de tâches en Go (Golang) : guide de mise en œuvre des tâches cron
PhotosUI pour Swift : guide complet avec exemples
Analyse HTML en PHP : aperçu des bibliothèques et outils
Autorisation et authentification en C# (.NET) : Guide complet