Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Creazione di un'applicazione semplice utilizzando l' AWS SDK for C++
CMake
Questo esempio riporta i bucket Amazon S3 che possiedi. Per questo esempio non è necessario avere un bucket Amazon S3 nel tuo AWS account, ma sarà molto più interessante se ne hai almeno uno. Se non ne hai già uno, consulta Create a Bucket nella Guida per l'utente di Amazon Simple Storage Service.
Passaggio 1: scrivi il codice
Questo esempio è costituito da una cartella contenente un file sorgente (hello_s3.cpp) e un CMakeLists.txt file. Il programma utilizza Amazon S3 per riportare le informazioni sui bucket di archiviazione. Questo codice è disponibile anche nel Code AWS Examples Repository
È possibile impostare molte opzioni in un file di configurazione della CMakeLists.txt build. Per ulteriori informazioni, consulta il CMaketutorial
Nota
Deep Dive: Impostazione CMAKE_PREFIX_PATH
Per impostazione predefinita, le AWS SDK per C++ piattaforme macOS, Linux, Android e altre piattaforme non Windows vengono installate in /usr/local e su Windows. \Program
Files (x86)\aws-cpp-sdk-all
Quando installi l' AWS SDK in queste posizioni standard, trova CMake automaticamente le risorse necessarie. Tuttavia, se installi l' AWS SDK in una posizione personalizzata, devi indicare CMake dove trovare le seguenti risorse risultanti dalla creazione dell'SDK:
-
AWSSDKConfig.cmake: un file di configurazione che spiega CMake come trovare e utilizzare le librerie AWS SDK nel progetto. Senza questo file, CMake non è possibile individuare i file di intestazione AWS SDK, collegarsi alle librerie AWS SDK o impostare i flag appropriati del compilatore. -
(per la versione 1.8 e precedenti) La posizione delle dipendenze:,,
aws-c-event-streamaws-c-commonaws-checksums
Per impostare un percorso di installazione personalizzato:
cmake -DCMAKE_PREFIX_PATH=/path/to/your/aws-sdk-installation /path/to/project/you/are/building
Se non hai impostato CMAKE_PREFIX_PATH un'installazione personalizzata, la build fallirà con errori come «Impossibile trovare AWSSDK» quando CMake tenta di elaborarla find_package(AWSSDK) nella tuaCMakeLists.txt.
Nota
Deep Dive: librerie di Windows Runtime
Per eseguire il programma, DLLs ne sono necessari diversi nella posizione eseguibile del programma: aws-c-common.dllaws-c-event-stream.dll,aws-checksums.dll,aws-cpp-sdk-core.dll,,, oltre a uno specifico DLLs basato sui componenti del programma (anche questo esempio è necessario aws-cpp-sdk-s3 perché utilizza Amazon S3). La seconda if istruzione del CMakeLists.txt file copia queste librerie dalla posizione di installazione alla posizione eseguibile per soddisfare questo requisito. AWSSDK_CPY_DYN_LIBSè una macro definita da AWS SDK per C++ che copia gli SDK DLLs dalla posizione di installazione alla posizione eseguibile del programma. Se questi non si DLLs trovano nella posizione eseguibile, si verificano le eccezioni di runtime del tipo «file non trovato». Se riscontrate questi errori, controllate questa parte del CMakeLists.txt file per verificare le modifiche necessarie per il vostro ambiente specifico.
Per creare la cartella e i file sorgente
-
Crea un and/or progetto di
hello_s3directory per contenere i tuoi file sorgente.Nota
Per completare questo esempio in Visual Studio: scegli Crea nuovo progetto, quindi scegli CMake Progetto. Assegnare un nome al progetto
hello_s3. Questo nome di progetto viene utilizzato nelCMakeLists.txtfile. -
All'interno di quella cartella, aggiungi un
hello_s3.cppfile che include il codice seguente, che riporta i bucket Amazon S3 di tua proprietà.#include <aws/core/Aws.h> #include <aws/s3/S3Client.h> #include <iostream> #include <aws/core/auth/AWSCredentialsProviderChain.h> using namespace Aws; using namespace Aws::Auth; /* * A "Hello S3" starter application which initializes an Amazon Simple Storage Service (Amazon S3) client * and lists the Amazon S3 buckets in the selected region. * * main function * * Usage: 'hello_s3' * */ int main(int argc, char **argv) { Aws::SDKOptions options; // Optionally change the log level for debugging. // options.loggingOptions.logLevel = Utils::Logging::LogLevel::Debug; Aws::InitAPI(options); // Should only be called once. int result = 0; { Aws::Client::ClientConfiguration clientConfig; // Optional: Set to the AWS Region (overrides config file). // clientConfig.region = "us-east-1"; // You don't normally have to test that you are authenticated. But the S3 service permits anonymous requests, thus the s3Client will return "success" and 0 buckets even if you are unauthenticated, which can be confusing to a new user. auto provider = Aws::MakeShared<DefaultAWSCredentialsProviderChain>("alloc-tag"); auto creds = provider->GetAWSCredentials(); if (creds.IsEmpty()) { std::cerr << "Failed authentication" << std::endl; } Aws::S3::S3Client s3Client(clientConfig); auto outcome = s3Client.ListBuckets(); if (!outcome.IsSuccess()) { std::cerr << "Failed with error: " << outcome.GetError() << std::endl; result = 1; } else { std::cout << "Found " << outcome.GetResult().GetBuckets().size() << " buckets\n"; for (auto &bucket: outcome.GetResult().GetBuckets()) { std::cout << bucket.GetName() << std::endl; } } } Aws::ShutdownAPI(options); // Should only be called once. return result; } -
Aggiungi un
CMakeLists.txtfile che specifichi il nome, gli eseguibili, i file sorgente e le librerie collegate del progetto.# Set the minimum required version of CMake for this project. cmake_minimum_required(VERSION 3.13) # Set the AWS service components used by this project. set(SERVICE_COMPONENTS s3) # Set this project's name. project("hello_s3") # Set the C++ standard to use to build this target. # At least C++ 11 is required for the AWS SDK for C++. set(CMAKE_CXX_STANDARD 11) # Use the MSVC variable to determine if this is a Windows build. set(WINDOWS_BUILD ${MSVC}) if (WINDOWS_BUILD) # Set the location where CMake can find the installed libraries for the AWS SDK. string(REPLACE ";" "/aws-cpp-sdk-all;" SYSTEM_MODULE_PATH "${CMAKE_SYSTEM_PREFIX_PATH}/aws-cpp-sdk-all") list(APPEND CMAKE_PREFIX_PATH ${SYSTEM_MODULE_PATH}) endif () # Find the AWS SDK for C++ package. find_package(AWSSDK REQUIRED COMPONENTS ${SERVICE_COMPONENTS}) if (WINDOWS_BUILD AND AWSSDK_INSTALL_AS_SHARED_LIBS) # Copy relevant AWS SDK for C++ libraries into the current binary directory for running and debugging. # set(BIN_SUB_DIR "/Debug") # if you are building from the command line you may need to uncomment this # and set the proper subdirectory to the executables' location. AWSSDK_CPY_DYN_LIBS(SERVICE_COMPONENTS "" ${CMAKE_CURRENT_BINARY_DIR}${BIN_SUB_DIR}) endif () add_executable(${PROJECT_NAME} hello_s3.cpp) target_link_libraries(${PROJECT_NAME} ${AWSSDK_LINK_LIBRARIES})
Fase 2: Costruisci con CMake
CMake utilizza le informazioni CMakeLists.txt per creare un programma eseguibile.
Ti consigliamo di creare l'applicazione seguendo le pratiche standard per il tuo IDE.
Per creare l'applicazione dalla riga di comando
-
Crea una directory in cui
cmakeverrà creata la tua applicazione.mkdir my_project_build -
Passa alla directory di compilazione ed esegui
cmakeutilizzando il percorso della directory dei sorgenti del progetto.cd my_project_build cmake ../ -
Dopo aver
cmakegenerato la directory di compilazione, è possibile utilizzaremake(onmakesu Windows) o MSBUILD (msbuild ALL_BUILD.vcxprojocmake --build . --config=) per creare l'applicazione.Debug
Fase 3: Esegui
Quando esegui questa applicazione, visualizza l'output della console che elenca il numero totale di bucket Amazon S3 e il nome di ogni bucket.
Ti consigliamo di eseguire l'applicazione seguendo le pratiche standard per il tuo IDE.
Nota
Ricordati di effettuare l'accesso! Se utilizzi IAM Identity Center per l'autenticazione, ricordati di accedere utilizzando il AWS CLI aws sso login comando.
Per eseguire il programma tramite riga di comando
-
Passa alla directory Debug in cui è stato generato il risultato della build.
-
Esegui il programma utilizzando il nome dell'eseguibile.
hello_s3
Per ulteriori esempi di utilizzo di AWS SDK per C++, vedereEsempi guidati per chiamare Servizi AWS utilizzando l' AWS SDK for C++.