C ++ tutorial untuk AWS Cloud9 - AWS Cloud9

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

C ++ tutorial untuk AWS Cloud9

Tutorial ini memungkinkan Anda untuk menjalankan C ++ kode dalam lingkungan AWS Cloud9 pengembangan. Kode ini juga menggunakan sumber daya yang disediakan oleh AWS SDK for C++, pustaka sumber terbuka lintas platform termodulasi yang dapat Anda gunakan untuk terhubung ke Amazon Web Services.

Mengikuti tutorial ini dan membuat sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk layanan seperti Amazon EC2 dan Amazon S3. Untuk informasi selengkapnya, lihat Harga Amazon EC2 dan Harga Amazon S3.

Prasyarat

Sebelum Anda menggunakan sampel ini, pastikan bahwa pengaturan Anda memenuhi persyaratan berikut:

  • Anda harus memiliki lingkungan pengembangan AWS Cloud9 EC2 yang ada. Contoh ini mengasumsikan bahwa Anda sudah memiliki lingkungan EC2 yang terhubung ke instans Amazon EC2 yang menjalankan Amazon Linux atau Server. Ubuntu Jika Anda memiliki jenis lingkungan atau sistem operasi yang berbeda, Anda mungkin perlu menyesuaikan petunjuk sampel ini untuk menyiapkan alat terkait. Untuk informasi selengkapnya, lihat Membuat lingkungan di AWS Cloud9.

  • Anda memiliki AWS Cloud9 IDE untuk lingkungan yang ada sudah terbuka. Saat Anda membuka lingkungan, AWS Cloud9 membuka IDE untuk lingkungan itu di peramban web Anda. Untuk informasi selengkapnya, lihat Membuka lingkungan di AWS Cloud9.

Langkah 1: Pasang g++ dan paket dev yang diperlukan

Untuk membangun dan menjalankan aplikasi C++, Anda memerlukan utilitas seperti g++, yang merupakan kompiler C++ yang disediakan oleh GNU Complier Collection (GCC).

Anda juga perlu menambahkan file header (paket -dev) untuk libcurl, libopenssl, libuuid, zlib dan, secara opsional, libpulse untuk dukungan Amazon Polly.

Proses memasang alat developer sedikit berbeda tergantung pada apakah Anda menggunakan instans Amazon Linux/Amazon Linux 2 atau instans Ubuntu.

Amazon Linux-based systems

Anda dapat memeriksa apakah Anda sudah memasang gcc dengan menjalankan perintah berikut di terminal AWS Cloud9:

g++ --version

Jika g++ tidak terpasang, Anda dapat dengan mudah memasangnya bagian dari grup paket yang disebut "Alat Developer". Alat-alat ini ditambahkan ke sebuah instans dengan perintah yum groupinstall:

sudo yum groupinstall "Development Tools"

Jalankan g++ --version lagi untuk mengonfirmasi bahwa kompiler telah terpasang.

Sekarang pasang paket untuk perpustakaan yang diperlukan menggunakan pengelola paket sistem Anda:

sudo yum install libcurl-devel openssl-devel libuuid-devel pulseaudio-libs-devel
Ubuntu-based systems

Anda dapat memeriksa apakah Anda sudah memasang gcc dengan menjalankan perintah berikut di terminal AWS Cloud9:

g++ --version

Jika gcc tidak terpasang, Anda dapat memasangnya di sistem berbasis Ubuntu dengan menjalankan perintah berikut:

sudo apt update sudo apt install build-essential sudo apt-get install manpages-dev

Jalankan g++ --version lagi untuk mengonfirmasi bahwa kompiler telah terpasang.

Sekarang pasang paket untuk perpustakaan yang diperlukan menggunakan pengelola paket sistem Anda:

sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev

Langkah 2: Pasang CMake

Anda perlu memasang alat cmake, yang mengotomatisasi proses pembangunan file yang dapat dieksekusi dari kode sumber.

  1. Di jendela terminal IDE, jalankan perintah berikut untuk mendapatkan arsip yang diperlukan:

    wget https://cmake.org/files/v3.18/cmake-3.18.0.tar.gz
  2. Ekstrak file dari arsip dan arahkan ke direktori yang berisi file yang belum dibongkar:

    tar xzf cmake-3.18.0.tar.gz cd cmake-3.18.0
  3. Selanjutnya, jalankan skrip bootstrap dan pasang cmake dengan menjalankan perintah berikut:

    ./bootstrap make sudo make install
  4. Konfirmasikan bahwa Anda telah memasang alat dengan menjalankan perintah berikut:

    cmake --version

Langkah 3: Dapatkan dan bangun SDK for C++

Untuk mengatur AWS SDK for C++, Anda dapat membangun SDK sendiri langsung dari sumbernya atau mengunduh pustaka menggunakan pengelola paket. Anda dapat menemukan detail tentang opsi yang tersedia di Memulai Menggunakan AWS SDK for C++ di Panduan Developer AWS SDK for C++.

Sampel ini menunjukkan penggunaan git untuk mengkloning kode sumber SDK dan cmake untuk membangun SDK for C++.

  1. Kloning repositori jarak jauh dan dapatkan semua submodul git secara rekursif untuk AWS Cloud9 lingkungan Anda dengan menjalankan perintah berikut di terminal:

    git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp
  2. Navigasikan ke direktori aws-sdk-cpp baru, buat sub-direktori untuk membangun AWS SDK for C++, lalu navigasikan ke sana:

    cd aws-sdk-cpp mkdir sdk_build cd sdk_build
  3. catatan

    Untuk menghemat waktu, langkah ini hanya membangun bagian Amazon S3 dari AWS SDK for C++. Jika Anda ingin membangun SDK lengkap, hilangkan -DBUILD_ONLY=s3 dari perintah cmake.

    Membangun SDK for C++ lengkap dapat memakan waktu lebih dari satu jam untuk diselesaikan, tergantung pada sumber daya komputasi yang tersedia untuk instans Amazon EC2 atau server Anda sendiri.

    Gunakan cmake untuk membangun bagian Amazon S3 dari SDK for C++ ke dalam direktori sdk_build dengan menjalankan perintah berikut:

    cmake .. -DBUILD_ONLY=s3
  4. Sekarang jalankan perintah make install sehingga SDK yang dibangun dapat diakses:

    sudo make install cd ..

Langkah 4: Buat file C ++ dan C MakeLists

Pada langkah ini, Anda membuat file C++ yang memungkinkan pengguna proyek berinteraksi dengan bucket Amazon S3.

Anda juga membuat file CMakeLists.txt yang menyediakan instruksi yang digunakan oleh cmake untuk membangun pustaka C++ Anda.

  1. Di AWS Cloud9 IDE, buat file dengan konten ini, dan simpan file dengan nama s3-demo.cpp di root (/) lingkungan Anda.

    #include <iostream> #include <aws/core/Aws.h> #include <aws/s3/S3Client.h> #include <aws/s3/model/Bucket.h> #include <aws/s3/model/CreateBucketConfiguration.h> #include <aws/s3/model/CreateBucketRequest.h> #include <aws/s3/model/DeleteBucketRequest.h> // Look for a bucket among all currently available Amazon S3 buckets. bool FindTheBucket(const Aws::S3::S3Client &s3Client, const Aws::String &bucketName) { Aws::S3::Model::ListBucketsOutcome outcome = s3Client.ListBuckets(); if (outcome.IsSuccess()) { std::cout << "Looking for a bucket named '" << bucketName << "'..." << std::endl << std::endl; Aws::Vector<Aws::S3::Model::Bucket> bucket_list = outcome.GetResult().GetBuckets(); for (Aws::S3::Model::Bucket const &bucket: bucket_list) { if (bucket.GetName() == bucketName) { std::cout << "Found the bucket." << std::endl << std::endl; return true; } } std::cout << "Could not find the bucket." << std::endl << std::endl; } else { std::cerr << "ListBuckets error: " << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); } // Create an Amazon S3 bucket. bool CreateTheBucket(const Aws::S3::S3Client &s3Client, const Aws::String &bucketName, const Aws::String& region) { std::cout << "Creating a bucket named '" << bucketName << "'..." << std::endl << std::endl; Aws::S3::Model::CreateBucketRequest request; request.SetBucket(bucketName); if (region != "us-east-1") { Aws::S3::Model::CreateBucketConfiguration createBucketConfig; createBucketConfig.SetLocationConstraint( Aws::S3::Model::BucketLocationConstraintMapper::GetBucketLocationConstraintForName( region)); request.SetCreateBucketConfiguration(createBucketConfig); } Aws::S3::Model::CreateBucketOutcome outcome = s3Client.CreateBucket(request); if (outcome.IsSuccess()) { std::cout << "Bucket created." << std::endl << std::endl; } else { std::cerr << "CreateBucket error: " << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); } // Delete an existing Amazon S3 bucket. bool DeleteTheBucket(const Aws::S3::S3Client &s3Client, const Aws::String &bucketName) { std::cout << "Deleting the bucket named '" << bucketName << "'..." << std::endl << std::endl; Aws::S3::Model::DeleteBucketRequest request; request.SetBucket(bucketName); Aws::S3::Model::DeleteBucketOutcome outcome = s3Client.DeleteBucket(request); if (outcome.IsSuccess()) { std::cout << "Bucket deleted." << std::endl << std::endl; } else { std::cerr << "DeleteBucket error: " << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); } #ifndef TESTING_BUILD // Create an S3 bucket and then delete it. // Before and after creating the bucket, and again after deleting the bucket, // try to determine whether that bucket still exists. int main(int argc, char *argv[]) { if (argc < 3) { std::cout << "Usage: s3-demo <bucket name> <AWS Region>" << std::endl << "Example: s3-demo my-bucket us-east-1" << std::endl; return 1; } Aws::SDKOptions options; Aws::InitAPI(options); { Aws::String bucket_name = argv[1]; Aws::String region = argv[2]; Aws::Client::ClientConfiguration config; config.region = region; Aws::S3::S3Client s3_client(config); if (!FindTheBucket(s3_client, bucket_name)) { return 1; } if (!CreateTheBucket(s3_client, bucket_name, region)) { return 1; } if (!FindTheBucket(s3_client, bucket_name)) { return 1; } if (!DeleteTheBucket(s3_client, bucket_name)) { return 1; } if (!FindTheBucket(s3_client, bucket_name)) { return 1; } } Aws::ShutdownAPI(options); return 0; } #endif // TESTING_BUILD
  2. Buat file kedua dengan konten ini, dan simpan file dengan nama CMakeLists.txt di root (/) lingkungan Anda. File ini memungkinkan Anda untuk membangun kode Anda menjadi file yang dapat dieksekusi.

    # A minimal CMakeLists.txt file for the AWS SDK for C++. # The minimum version of CMake that will work. cmake_minimum_required(VERSION 2.8) # The project name. project(s3-demo) # Locate the AWS SDK for C++ package. set(AWSSDK_ROOT_DIR, "/usr/local/") set(BUILD_SHARED_LIBS ON) find_package(AWSSDK REQUIRED COMPONENTS s3) # The executable name and its source files. add_executable(s3-demo s3-demo.cpp) # The libraries used by your executable. target_link_libraries(s3-demo ${AWSSDK_LINK_LIBRARIES})

Langkah 5: Membangun dan menjalankan kode C++

  1. Di direktori root lingkungan Anda tempat Anda menyimpan s3-demo.cpp dan CMakeLists.txt, jalankan cmake untuk membangun proyek Anda:

    cmake . make
  2. Anda sekarang dapat menjalankan program Anda dari baris perintah. Dalam perintah berikut, ganti my-unique-bucket-name dengan nama unik untuk bucket Amazon S3 dan, jika perlu, ganti us-east-1 dengan pengenal Wilayah AWS lain tempat Anda ingin membuat bucket.

    ./s3-demo my-unique-bucket-name us-east-1

    Jika program berhasil dijalankan, output yang mirip dengan berikut akan dikembalikan:

    Looking for a bucket named 'my-unique-bucket-name'... Could not find the bucket. Creating a bucket named 'my-unique-bucket-name'... Bucket created. Looking for a bucket named 'my-unique-bucket-name'... Found the bucket. Deleting the bucket named 'my-unique-bucket-name'... Bucket deleted. Looking for a bucket named 'my-unique-bucket-name'... Could not find the bucket.

Langkah 6: Membersihkan

Untuk mencegah tagihan berkelanjutan ke akun AWS Anda setelah Anda selesai dengan sampel ini, hapus lingkungan. Untuk instruksi, lihat Menghapus lingkungan di AWS Cloud9.