の C++ チュートリアル AWS Cloud9 - AWS Cloud9

AWS Cloud9 は、新しいお客様では利用できなくなりました。 AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

の C++ チュートリアル AWS Cloud9

このチュートリアルでは、 AWS Cloud9 開発環境で C++ コードを実行できます。このコードは、AWS SDK for C++で提供されたリソースも使用できます。Amazon Web Services に接続するために使用できる、モジュール化されたクロスプラットフォームのオープンソースライブラリです。

このチュートリアルに従い、このサンプルを作成すると、 AWS アカウントに料金が発生する可能性があります。これらには、Amazon EC2や Amazon S3 などのサービスに対して発生する可能性のある料金が含まれます。詳細については、「Amazon EC2料金」とAmazon S3料金」を参照してください。

前提条件

このサンプルを使用する前に、設定が次の要件を満たしていることを確認します。

  • 既存の AWS Cloud9 EC2開発環境が必要です。このサンプルは、EC2Amazon EC2 Linux または Ubuntu サーバー。別のタイプの環境またはオペレーティングシステムがある場合、このサンプルの指示を関連ツールを設定する必要がある場合があります。詳細については、「での環境の作成 AWS Cloud9」を参照してください。

  • 既存の環境の は既に開いています AWS Cloud9 IDE。環境を開くと、 はウェブブラウザでその環境IDEの AWS Cloud9 を開きます。詳細については、「AWS Cloud9 で環境を開く」を参照してください。

ステップ1:g ++と必要な dev パッケージをインストールする

C++ アプリケーションを構築して実行するには、GNUComplier Collection (GCC) が提供する C++ コンパイラである g++などのユーティリティが必要です。

また、ヘッダーファイル (-devパッケージ) を libcurllibopenssllibuuidzlib、およびオプションで、libpulse Amazon Polly のサポートのため追加する必要があります。

開発ツールをインストールするプロセスは、Amazon Linux/Amazon Linux 2 インスタンスと Ubuntu インスタンスのどちらを使用しているかによって若干異なります。

Amazon Linux-based systems

AWS Cloud9 ターミナルで次のコマンドを実行して、 が既にgccインストールされているかどうかを確認できます。

g++ --version

もし g++ がインストールされていない場合は、「開発ツール」と呼ばれるパッケージグループのパートを簡単にインストールできます。これらのツールは、yum groupinstallコマンドでインスタンスに追加:

sudo yum groupinstall "Development Tools"

g++ --version を再度実行して、コンパイラがインストールされていることを確認します。

次に、システムのパッケージマネージャを使用して、必要なライブラリのパッケージをインストールします。

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

AWS Cloud9 ターミナルで次のコマンドを実行して、 が既にgccインストールされているかどうかを確認できます。

g++ --version

gcc がインストールされていない場合は、次のコマンドを実行して Ubuntu ベースのシステムにインストールできます。

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

g++ --version を再度実行して、コンパイラがインストールされていることを確認します。

次に、システムのパッケージマネージャを使用して、必要なライブラリのパッケージをインストールします。

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

ステップ 2: CMake をインストールする

cmake ツールをインストールする必要があります。このツールは、ソースコードから実行可能ファイルを構築するプロセスを自動化します。

  1. IDE ターミナルウィンドウで、次のコマンドを実行して必要なアーカイブを取得します。

    wget https://cmake.org/files/v3.18/cmake-3.18.0.tar.gz
  2. アーカイブからファイルを抽出し、解凍したファイルが含まれているディレクトリに移動します。

    tar xzf cmake-3.18.0.tar.gz cd cmake-3.18.0
  3. 次に、ブートストラップスクリプトを実行し、次のコマンドを実行して cmake をインストールします。

    ./bootstrap make sudo make install
  4. 次のコマンドを実行して、ツールがインストールされていることを確認します。

    cmake --version

ステップ 3: SDK for C++ を取得して構築する

for C++ を設定するには AWS SDK、ソースSDKから直接 を構築するか、パッケージマネージャーを使用してライブラリをダウンロードします。利用可能なオプションの詳細については、 AWS SDK for C++ デベロッパーガイド「 for C++ の使用 AWS SDK開始」を参照してください。

このサンプルではgit、 を使用してSDKソースコードをクローンし、 SDK for C++ を構築cmakeしています。

  1. ターミナルで次のコマンドを実行して、リモートリポジトリをクローンし、 AWS Cloud9 環境のため、すべての git サブモジュールを再帰的に取得します。

    git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp
  2. 新しいaws-sdk-cppディレクトリに移動し、 for C++ を構築するための AWS SDKサブディレクトリを作成し、それに移動します。

    cd aws-sdk-cpp mkdir sdk_build cd sdk_build
  3. 注記

    時間を節約するため、このステップは、 AWS SDK for C++の Amazon S3 部分のみを構築します。完全な を構築する場合はSDK、 cmake コマンド-DBUILD_ONLY=s3から を省略します。

    Amazon EC2インスタンスまたは独自のサーバーで利用可能なコンピューティングリソースによっては、SDK完成までに 1 時間以上かかる場合があります。

    cmake を使用して、次のコマンドを実行してSDK、 for C++ の Amazon S3 部分を sdk_build ディレクトリに構築します。

    cmake .. -DBUILD_ONLY=s3
  4. ここでmake install、 コマンドを実行して、ビルドされた にアクセスSDKできるようにします。

    sudo make install cd ..

ステップ 4: C++ とCMakeListsファイルを作成する

このステップでは、C++ ファイルを作成し、プロジェクトのユーザーに Amazon S3 バケットと対話を許可します。

また、CMakeLists.txt ファイルを作成して、C ++ライブラリを構築するために、cmake で使用する指示を提供します。

  1. で AWS Cloud9 IDE、このコンテンツを含むファイルを作成し、その名前のファイルを環境のルート (/) s3-demo.cpp に保存します。

    #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. このコンテンツを含んだ 2 番目のファイルを作成し、環境のルート (/) に CMakeLists.txt という名前をつけてファイルを保存します。このファイルを使用すると、コードを実行可能ファイルに組み込むことができます。

    # 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})

ステップ 5: C++ コードを構築および実行する

  1. s3-demo.cppCMakeLists.txt を保存した環境のルートディレクトリで、cmake を実行してプロジェクトを構築します。

    cmake . make
  2. これで、コマンドラインからプログラムを実行できます。次のコマンドで、my-unique-bucket-name を Amazon S3 バケットの一意の名前に置き換え、必要であれば、us-east-1 を別の AWS リージョン (バケットを作成したい場所)の識別子に置き換えます。

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

    プログラムが正常に実行された場合は、次のような出力が返されます。

    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.

ステップ 6: クリーンアップする

このサンプルが終了した後に AWS アカウントへの継続的な料金が発生するのを防ぐには、環境を削除します。手順については、AWS Cloud9 で環境を削除する を参照してください。