AWS Cloud9 non è più disponibile per i nuovi clienti. I clienti esistenti di AWS Cloud9 possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Questo tutorial consente di eseguire codice C++ in un ambiente di AWS Cloud9 sviluppo. Il codice utilizza anche risorse fornite da AWS SDK per C++, una libreria open source modularizzata multipiattaforma che puoi usare per connetterti ad Amazon Web Services.
L'esecuzione di questo tutorial e la creazione di questo esempio potrebbero comportare addebiti sul tuo AWS account. Questi includono eventuali addebiti per servizi come Amazon EC2 e Amazon S3. Per ulteriori informazioni, consulta i prezzi di Amazon e EC2 i prezzi
Argomenti
Prerequisiti
Prima di usare questo esempio, assicurati che la configurazione soddisfi i seguenti requisiti:
-
È necessario disporre di un ambiente di AWS Cloud9 EC2 sviluppo esistente. Questo esempio presuppone che tu disponga già di un EC2 ambiente connesso a un' EC2 istanza Amazon che esegue Amazon Linux o Ubuntu Server. Se disponi di un altro tipo di ambiente o sistema operativo, potrebbe essere necessario adattare le istruzioni di questo esempio per configurare gli strumenti correlati. Per ulteriori informazioni, consulta Creare un ambiente in AWS Cloud9.
-
L' AWS Cloud9 IDE per l'ambiente esistente è già aperto. Quando apri un ambiente, AWS Cloud9 apre l'IDE per quell'ambiente nel tuo browser web. Per ulteriori informazioni, consulta Aprire un ambiente in AWS Cloud9.
Fase 1: installare g++ e i pacchetti di sviluppo richiesti
Per costruire ed eseguire un'applicazione C ++, è necessaria un'utilità come g++
, che è un compilatore C ++ fornito da GNU Complier Collection (GCC)
Devi inoltre aggiungere i file di intestazione (pacchetti -dev
) per libcurl
, libopenssl
, libuuid
, zlib
e, facoltativamente, libpulse
per il supporto di Amazon Polly.
Il processo di installazione degli strumenti di sviluppo varia leggermente a seconda che tu stia utilizzando un'istanza Amazon Linux/Amazon Linux 2 o un'istanza Ubuntu.
Puoi verificare se l'hai già gcc
installato eseguendo il seguente comando nel AWS Cloud9 terminale:
g++ --version
Se g++
non è installato, puoi farlo facilmente con parte del gruppo di pacchetti chiamato "Strumenti di sviluppo". Questi strumenti vengono aggiunti a un'istanza con il comando yum groupinstall
:
sudo yum groupinstall "Development Tools"
Esegui g++ --version
ancora una volta per confermare che il compilatore è installato.
Ora installa i pacchetti per le librerie richieste usando il programma di gestione dei pacchetti del sistema:
sudo yum install libcurl-devel openssl-devel libuuid-devel pulseaudio-libs-devel
Passaggio 2: installazione CMake
Devi installare lo strumento cmake
, che automatizza il processo di costruzione di file eseguibili dal codice sorgente.
-
Nella finestra del terminale IDE, esegui il comando seguente per ottenere l'archivio richiesto:
wget https://cmake.org/files/v3.18/cmake-3.18.0.tar.gz
-
Estrai i file dall'archivio e accedi alla directory che contiene i file decompressi:
tar xzf cmake-3.18.0.tar.gz cd cmake-3.18.0
-
Quindi, esegui uno script di bootstrap e installa
cmake
eseguendo i comandi seguenti:./bootstrap make sudo make install
-
Conferma di aver installato lo strumento eseguendo il comando seguente:
cmake --version
Fase 3: ottenere e costruire SDK per C++
Per configurare l' AWS SDK per C++, puoi creare l'SDK direttamente dal codice sorgente o scaricare le librerie utilizzando un gestore di pacchetti. Puoi trovare dettagli sulle opzioni disponibili in Guida introduttiva all'uso dell' AWS SDK for C++ AWS SDK per C++ nella Guida per gli sviluppatori.
Questo esempio illustra l'utilizzo di git
per clonare il codice sorgente SDK e cmake
per costruire l'SDK per C++.
-
Clona il repository remoto e ottieni tutti i sottomoduli git in modo ricorsivo per l'ambiente AWS Cloud9 eseguendo i comandi seguenti nel terminale:
git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp
-
Passa alla nuova
aws-sdk-cpp
directory, crea una sottodirectory in cui creare l' AWS SDK for C++, quindi vai a quella:cd aws-sdk-cpp mkdir sdk_build cd sdk_build
-
Nota
Per risparmiare tempo, in questa fase si costruisce solo la sezione Amazon S3 di AWS SDK per C++. Se desideri costruire l'SDK completo, ometti
-DBUILD_ONLY=s3
dal comandocmake
.La creazione dell'SDK for C++ completo può richiedere più di un'ora, a seconda delle risorse di elaborazione disponibili per la tua istanza EC2 Amazon o il tuo server.
Utilizza
cmake
per costruire la sezione Amazon S3 dell'SDK per C++ nella directorysdk_build
eseguendo il comando seguente:cmake .. -DBUILD_ONLY=s3
-
Esegui il comando
make install
in modo l'SDK costruito sia accessibile:sudo make install cd ..
Passaggio 4: creare file C++ e Lists CMake
In questa fase si crea un file C++
che permette agli utenti del progetto di interagire con i bucket Amazon S3.
Puoi anche creare un file CMakeLists.txt
che fornisce istruzioni utilizzate da cmake
per costruire la libreria C++.
-
Nell' AWS Cloud9 IDE, create un file con questo contenuto e salvate il file con il nome
s3-demo.cpp
nella radice (/
) del vostro ambiente.#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 ®ion) { 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
-
Crea un secondo file con questo contenuto e salvalo con il nome
CMakeLists.txt
nella radice (/
) dell'ambiente. Questo file ti consente di compilare il tuo codice in un file eseguibile.# 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})
Fase 5: costruire ed eseguire il codice C++
-
Nella directory principale dell'ambiente in cui hai salvato
s3-demo.cpp
eCMakeLists.txt
, eseguicmake
per costruire il progetto:cmake . make
-
Ora puoi eseguire il programma dalla riga di comando. Nel comando seguente, sostituisci
my-unique-bucket-name
con un nome univoco per il bucket Amazon S3 e, se necessario, sostituiscius-east-1
con l'identificatore di un'altre regione AWS in cui desideri creare un bucket../s3-demo my-unique-bucket-name us-east-1
Se il comando viene eseguito correttamente, verrà visualizzato un output simile al seguente:
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.
Fase 6: pulizia
Per evitare addebiti continui AWS sul tuo account dopo aver finito con questo esempio, elimina l'ambiente. Per istruzioni, consultare Eliminazione di un ambiente in AWS Cloud9.