Tutoriel C++ pour AWS Cloud9 - AWS Cloud9

AWS Cloud9 n'est plus disponible pour les nouveaux clients. Les clients existants de AWS Cloud9 peuvent continuer à utiliser le service normalement. En savoir plus

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tutoriel C++ pour AWS Cloud9

Ce didacticiel vous permet d'exécuter du code C++ dans un environnement de AWS Cloud9 développement. Le code utilise également les ressources fournies par AWS SDK for C++, une bibliothèque open source modularisée, multiplateforme, que vous pouvez utiliser pour vous connecter à Amazon Web Services.

Le fait de suivre ce didacticiel et de créer cet exemple peut entraîner des frais sur votre AWS compte. Cela inclut les frais éventuels pour des services tels qu'Amazon EC2 et Amazon S3. Pour plus d'informations, consultez les sections EC2 Tarification Amazon et Tarification Amazon S3.

Prérequis

Avant d'utiliser cet exemple, vérifiez que votre configuration respecte les conditions requises suivantes :

  • Vous devez disposer d'un environnement AWS Cloud9 EC2 de développement existant. Cet exemple suppose que vous disposez déjà d'un EC2 environnement connecté à une EC2 instance Amazon exécutant Amazon Linux ou Ubuntu Serveur. Si vous utilisez un autre type d'environnement ou de système d'exploitation, vous devrez peut-être adapter les instructions de cet exemple pour configurer les outils associés. Pour de plus amples informations, veuillez consulter Création d'un environnement dans AWS Cloud9.

  • L' AWS Cloud9 IDEenvironnement existant est déjà ouvert. Lorsque vous ouvrez un environnement, AWS Cloud9 ouvre le champ IDE correspondant à cet environnement dans votre navigateur Web. Pour de plus amples informations, veuillez consulter Ouverture d'un environnement dans AWS Cloud9.

Étape 1 : Installer g++ et les paquets de développement requis

Pour créer et exécuter une application C++, vous avez besoin d'un utilitaire tel qu'g++un compilateur C++ fourni par la collection GNU Complier (GCC).

Vous devez également ajouter des fichiers d'en-tête (paquets -dev) pour libcurl, libopenssl, libuuid, zlib et éventuellement libpulse pour la prise en charge d'Amazon Polly.

Le processus d'installation des outils de développement varie légèrement selon que vous utilisez une instance Amazon Linux/Amazon Linux 2 ou une instance Ubuntu.

Amazon Linux-based systems

Vous pouvez vérifier si vous l'avez déjà gcc installé en exécutant la commande suivante dans le AWS Cloud9 terminal :

g++ --version

Si g++ n'est pas installé, vous pouvez facilement l'installer dans le groupe de paquets appelé « Outils de développement ». Ces outils sont ajoutés à une instance avec l'outil de commande yum groupinstall :

sudo yum groupinstall "Development Tools"

Exécutez g++ --version à nouveau pour confirmer que le compilateur a été installé.

Installez maintenant les paquets pour les bibliothèques requises à l'aide du gestionnaire de paquets de votre système :

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

Vous pouvez vérifier si vous l'avez déjà gcc installé en exécutant la commande suivante dans le AWS Cloud9 terminal :

g++ --version

Si gcc n'est pas installé, vous pouvez l'installer sur un système Ubuntu en exécutant les commandes suivantes :

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

Exécutez g++ --version à nouveau pour confirmer que le compilateur a été installé.

Installez maintenant les paquets pour les bibliothèques requises à l'aide du gestionnaire de paquets de votre système :

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

Étape 2 : Installation CMake

Vous devez installer l'outil cmake, qui automatise le processus de création de fichiers exécutables à partir du code source.

  1. Dans la fenêtre du IDE terminal, exécutez la commande suivante pour obtenir l'archive requise :

    wget https://cmake.org/files/v3.18/cmake-3.18.0.tar.gz
  2. Extrayez les fichiers de l'archive et accédez au répertoire contenant les fichiers décompressés :

    tar xzf cmake-3.18.0.tar.gz cd cmake-3.18.0
  3. Ensuite, exécutez un script d'amorçage et installez cmake en exécutant les commandes suivantes :

    ./bootstrap make sudo make install
  4. Vérifiez que vous avez installé l'outil en exécutant la commande suivante :

    cmake --version

Étape 3 : Obtenir et créer le SDK pour C++

Pour configurer le AWS SDK pour C++, vous pouvez soit le créer SDK vous-même directement à partir de la source, soit télécharger les bibliothèques à l'aide d'un gestionnaire de packages. Vous trouverez des informations détaillées sur les options disponibles dans Getting Started Using the AWS SDK for C++ dans le manuel du AWS SDK for C++ développeur.

Cet exemple montre git comment cloner le code SDK source et le compiler cmake SDK pour C++.

  1. Clonez le référentiel distant et obtenez tous les sous-modules git récursivement pour votre environnement AWS Cloud9 en exécutant la commande suivante dans le terminal :

    git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp
  2. Accédez au nouveau aws-sdk-cpp répertoire, créez un sous-répertoire dans lequel intégrer le AWS SDK for C++, puis naviguez jusqu'à celui-ci :

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

    Pour gagner du temps, cette étape génère uniquement la partie Amazon S3 du AWS SDK for C++. Si vous souhaitez créer le fichier completSDK, omettez-le dans -DBUILD_ONLY=s3 la cmake commande.

    La création de la version complète SDK pour C++ peut prendre plus d'une heure, selon les ressources informatiques disponibles sur votre EC2 instance Amazon ou sur votre propre serveur.

    cmakeÀ utiliser pour intégrer la partie Amazon S3 du SDK code C++ dans le sdk_build répertoire en exécutant la commande suivante :

    cmake .. -DBUILD_ONLY=s3
  4. Exécutez maintenant la make install commande afin que le SDK build soit accessible :

    sudo make install cd ..

Étape 4 : Création de C++ et de CMakeLists fichiers

Au cours de cette étape, vous créez un fichier C++ qui permet aux utilisateurs du projet d'interagir avec les compartiments Amazon S3.

Vous créez également un fichier CMakeLists.txt qui fournit des instructions utilisées par cmake pour créer votre bibliothèque C ++.

  1. Dans le AWS Cloud9 IDE, créez un fichier avec ce contenu et enregistrez le fichier avec le nom s3-demo.cpp à la racine (/) de votre environnement.

    #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. Créez un second fichier avec ce contenu et enregistrez-le sous le nom CMakeLists.txt à la racine (/) de votre environnement. Ce fichier vous permet de créer votre code dans un fichier exécutable.

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

Étape 5 : Créer et exécuter le code C++

  1. Dans le répertoire racine de votre environnement dans lequel vous avez enregistré s3-demo.cpp et CMakeLists.txt, exécutez cmake pour créer votre projet :

    cmake . make
  2. À présent, vous pouvez exécuter votre programme à partir de la ligne de commande. Dans la commande suivante, remplacez my-unique-bucket-name par un nom unique pour le compartiment Amazon S3 et, si nécessaire, remplacez us-east-1 par l'identifiant d'une autre région AWS dans laquelle vous souhaitez créer un compartiment.

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

    Si le programme s'exécute correctement, vous obtenez une sortie similaire à ce qui suit :

    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.

Étape 6 : Nettoyer

Pour éviter que votre AWS compte ne soit débité une fois que vous aurez terminé d'utiliser cet exemple, supprimez l'environnement. Pour obtenir des instructions, consultez Suppression d'un environnement dans AWS Cloud9.