Tutorial C++ untuk AWS Cloud9 - AWS Cloud9

AWS Cloud9 tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Cloud9 dapat terus menggunakan layanan seperti biasa. Pelajari lebih lanjut”

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

Tutorial C++ untuk AWS Cloud9

Tutorial ini memungkinkan Anda untuk menjalankan kode C ++ di 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 EC2Harga Amazon dan Harga Amazon S3.

Prasyarat

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

  • Anda harus memiliki lingkungan AWS Cloud9 EC2 pengembangan yang ada. Contoh ini mengasumsikan bahwa Anda sudah memiliki EC2 lingkungan yang terhubung ke EC2 instans Amazon yang menjalankan Amazon Linux atau Ubuntu Server. 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 Menciptakan lingkungan di AWS Cloud9.

  • Anda memiliki AWS Cloud9 IDE untuk lingkungan yang ada sudah terbuka. Ketika Anda membuka lingkungan, AWS Cloud9 buka IDE untuk lingkungan itu di browser 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 sepertig++, yang merupakan kompiler C++ yang disediakan oleh GNUComplier 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 gcc menginstal dengan menjalankan perintah berikut di AWS Cloud9 terminal:

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 gcc menginstal dengan menjalankan perintah berikut di AWS Cloud9 terminal:

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: Instal CMake

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

  1. Di jendela IDE terminal, 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 untuk C ++

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

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

  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. Arahkan ke aws-sdk-cpp direktori baru, buat sub-direktori untuk membangun C++ ke dalam, dan kemudian arahkan ke itu: AWS SDK

    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 yang lengkapSDK, hilangkan cmake perintah -DBUILD_ONLY=s3 dari.

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

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

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

    sudo make install cd ..

Langkah 4: Buat C ++ dan file CMakeLists

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 EXCLUDE_MAIN_FUNCTION // 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 bucketName = argv[1]; Aws::String region = argv[2]; Aws::Client::ClientConfiguration config; config.region = region; Aws::S3::S3Client s3Client(config); if (!FindTheBucket(s3Client, bucketName)) { return 1; } if (!CreateTheBucket(s3Client, bucketName, region)) { return 1; } if (!FindTheBucket(s3Client, bucketName)) { return 1; } if (!DeleteTheBucket(s3Client, bucketName)) { return 1; } if (!FindTheBucket(s3Client, bucketName)) { return 1; } } Aws::ShutdownAPI(options); return 0; } #endif // EXCLUDE_MAIN_FUNCTION
  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: Bersihkan

Untuk mencegah tagihan yang sedang berlangsung ke AWS akun Anda setelah Anda selesai dengan sampel ini, hapus lingkungan. Untuk petunjuk, lihat Menghapus lingkungan di AWS Cloud9.