Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat aplikasi sederhana menggunakan AWS SDK for C++
CMake
Contoh ini melaporkan bucket Amazon S3 yang Anda miliki. Memiliki bucket Amazon S3 di AWS akun Anda tidak diperlukan untuk contoh ini, tetapi akan jauh lebih menarik jika Anda memiliki setidaknya satu. Lihat Membuat Bucket di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon jika Anda belum memilikinya.
Langkah 1: Tulis kodenya
Contoh ini terdiri dari satu folder yang berisi satu file sumber (hello_s3.cpp) dan satu CMakeLists.txt file. Program ini menggunakan Amazon S3 untuk melaporkan informasi bucket penyimpanan. Kode ini juga tersedia di Repositori Contoh AWS Kode
Anda dapat mengatur banyak opsi dalam file konfigurasi CMakeLists.txt build. Untuk informasi lebih lanjut, lihat CMaketutorial
catatan
Deep Dive: Pengaturan CMAKE_PREFIX_PATH
Secara default, AWS SDK untuk C++ pada macOS, Linux, Android dan platform non-Windows lainnya diinstal ke dalam /usr/local dan pada Windows diinstal ke dalam. \Program
Files (x86)\aws-cpp-sdk-all
Saat Anda menginstal AWS SDK ke lokasi standar ini, CMake secara otomatis menemukan sumber daya yang diperlukan. Namun, jika Anda menginstal AWS SDK ke lokasi kustom, Anda harus memberi tahu CMake di mana menemukan sumber daya berikut yang dihasilkan dari pembuatan SDK:
-
AWSSDKConfig.cmake: File konfigurasi yang memberi tahu CMake cara menemukan dan menggunakan pustaka AWS SDK dalam proyek Anda. Tanpa file ini, CMake tidak dapat menemukan file header AWS SDK, menautkan ke pustaka AWS SDK, atau menyiapkan flag kompiler yang tepat. -
(untuk versi 1.8 dan sebelumnya) Lokasi dependensi:
aws-c-event-stream,,aws-c-commonaws-checksums
Untuk mengatur jalur instalasi kustom:
cmake -DCMAKE_PREFIX_PATH=/path/to/your/aws-sdk-installation /path/to/project/you/are/building
Jika Anda tidak menyetel CMAKE_PREFIX_PATH untuk instalasi kustom, build Anda akan gagal dengan kesalahan seperti “Tidak dapat ditemukan AWSSDK” ketika CMake mencoba untuk memproses find_package(AWSSDK) di AndaCMakeLists.txt.
catatan
Deep Dive: Pustaka Runtime Windows
Untuk menjalankan program Anda, beberapa DLLs diperlukan di lokasi yang dapat dieksekusi program Anda:aws-c-common.dll,aws-c-event-stream.dll,aws-checksums.dll,aws-cpp-sdk-core.dll,, serta spesifik apa pun DLLs berdasarkan komponen program Anda (contoh ini juga memerlukan aws-cpp-sdk-s3 karena menggunakan Amazon S3). ifPernyataan kedua dalam CMakeLists.txt file menyalin pustaka ini dari lokasi instalasi ke lokasi yang dapat dieksekusi untuk memenuhi persyaratan ini. AWSSDK_CPY_DYN_LIBSadalah makro yang ditentukan oleh AWS SDK untuk C++ yang menyalin SDK DLLs dari lokasi instalasi ke lokasi yang dapat dieksekusi dari program Anda. Jika ini tidak DLLs berada di lokasi yang dapat dieksekusi maka pengecualian runtime dari 'file tidak ditemukan' terjadi. Tinjau bagian CMakeLists.txt file ini untuk perubahan yang diperlukan untuk lingkungan unik Anda jika Anda mengalami kesalahan ini.
Untuk membuat folder dan file sumber
-
Buat and/or proyek
hello_s3direktori untuk menyimpan file sumber Anda.catatan
Untuk melengkapi contoh ini di Visual Studio: pilih Create New Project dan kemudian pilih CMake Project. Beri nama proyek
hello_s3. Nama proyek ini digunakan dalamCMakeLists.txtfile. -
Di dalam folder itu, tambahkan
hello_s3.cppfile yang menyertakan kode berikut, yang melaporkan bucket Amazon S3 yang Anda miliki.#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; } -
Tambahkan
CMakeLists.txtfile yang menentukan nama proyek Anda, executable, file sumber, dan pustaka tertaut.# 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})
Langkah 2: Membangun dengan CMake
CMake menggunakan informasi CMakeLists.txt untuk membangun program yang dapat dieksekusi.
Kami merekomendasikan untuk membangun aplikasi mengikuti praktik standar untuk IDE Anda.
Untuk membangun aplikasi dari baris perintah
-
Buat direktori tempat
cmakeakan membangun aplikasi Anda.mkdir my_project_build -
Ubah ke direktori build dan jalankan
cmakemenggunakan jalur ke direktori sumber proyek Anda.cd my_project_build cmake ../ -
Setelah
cmakemembuat direktori build, Anda dapat menggunakanmake(ataunmakedi Windows), atau MSBUILD (msbuild ALL_BUILD.vcxprojataucmake --build . --config=) untuk membangun aplikasi Anda.Debug
Langkah 3: Jalankan
Saat Anda menjalankan aplikasi ini, aplikasi ini menampilkan output konsol yang mencantumkan jumlah total bucket Amazon S3 dan nama setiap bucket.
Sebaiknya jalankan aplikasi mengikuti praktik standar untuk IDE Anda.
catatan
Ingatlah untuk masuk! Jika Anda menggunakan IAM Identity Center untuk mengautentikasi, ingatlah untuk masuk menggunakan perintah. AWS CLI aws sso login
Untuk menjalankan program melalui baris perintah
-
Ubah ke direktori Debug tempat hasil build dibuat.
-
Jalankan program menggunakan nama executable.
hello_s3
Untuk contoh tambahan menggunakan AWS SDK untuk C++, lihatContoh terpandu untuk memanggil Layanan AWS menggunakan AWS SDK for C++.