AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS Cloud9 können den Service weiterhin wie gewohnt nutzen. Weitere Informationen
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
C++-Tutorial für AWS Cloud9
In diesem Tutorial können Sie C++-Code in einer AWS Cloud9 Entwicklungsumgebung ausführen. Der Code verwendet auch Ressourcen, die von AWS SDK for C++ bereitgestellt werden, einer modularisierten, plattformübergreifenden Open-Source-Bibliothek, die Sie für die Verbindung mit Amazon Web Services verwenden können.
Wenn Sie diesem Tutorial folgen und dieses Beispiel erstellen, kann dies zu Gebühren für Ihr AWS Konto führen. Dazu gehören mögliche Gebühren für Dienste wie Amazon EC2 und Amazon S3. Weitere Informationen finden Sie unter EC2Amazon-Preise
Themen
Voraussetzungen
Bevor Sie dieses Beispiel verwenden, stellen Sie sicher, dass Ihre Einrichtung die folgenden Anforderungen erfüllt:
-
Sie müssen über eine bestehende AWS Cloud9 EC2 Entwicklungsumgebung verfügen. In diesem Beispiel wird davon ausgegangen, dass Sie bereits über eine EC2 Umgebung verfügen, die mit einer EC2 Amazon-Instance verbunden ist, auf der Amazon Linux ausgeführt wird, oder Ubuntu Server. Wenn Sie ein andere Art von Umgebung oder ein anderes Betriebssystem verwenden, müssen Sie die Anweisungen dieses Beispiels zum Einrichten zugehöriger Tools möglicherweise anpassen. Weitere Informationen finden Sie unter Schaffung einer Umgebung in AWS Cloud9.
-
Sie haben die AWS Cloud9 IDE für die bestehende Umgebung bereits geöffnet. Wenn Sie eine Umgebung AWS Cloud9 öffnen, wird die IDE für diese Umgebung in Ihrem Webbrowser geöffnet. Weitere Informationen finden Sie unter Öffnen einer Umgebung in AWS Cloud9.
Schritt 1: Installieren von g++ und der erforderlichen Entwicklungspakete
Um eine C++-Anwendung zu erstellen und auszuführen, benötigen Sie ein Hilfsprogramm wieg++
, bei dem es sich um einen C++-Compiler handelt, der von der GNUComplier Collection () GCC
Sie müssen außerdem Header-Dateien (-dev
-Pakete) fürlibcurl
, libopenssl
, libuuid
, zlib
und, optional libpulse
, für Amazon Polly-Support hinzufügen.
Der Prozess der Installation von Entwicklungstools variiert leicht, je nachdem, ob Sie eine Amazon Linux/Amazon Linux 2-Instance oder eine Ubuntu-Instance verwenden.
Schritt 2: Installieren CMake
Sie müssen das Tool cmake
installieren, das den Prozess der Erstellung ausführbarer Dateien aus dem Quellcode automatisiert.
-
Führen Sie im IDE Terminalfenster den folgenden Befehl aus, um das erforderliche Archiv abzurufen:
wget https://cmake.org/files/v3.18/cmake-3.18.0.tar.gz
-
Extrahieren Sie die Dateien aus dem Archiv und navigieren Sie zu dem Verzeichnis mit den entpackten Dateien:
tar xzf cmake-3.18.0.tar.gz cd cmake-3.18.0
-
Führen Sie als Nächstes ein Bootstrap-Skript aus und installieren Sie
cmake
, indem Sie die folgenden Befehle ausführen:./bootstrap make sudo make install
-
Überprüfen Sie, ob Sie das Tool installiert haben, indem Sie den folgenden Befehl ausführen:
cmake --version
Schritt 3: Besorgen und erstellen Sie das SDK für C++
Um das AWS SDK für C++ einzurichten, können Sie es entweder SDK selbst direkt aus der Quelle erstellen oder die Bibliotheken mit einem Paketmanager herunterladen. Einzelheiten zu den verfügbaren Optionen finden Sie unter Erste Schritte mit der Verwendung von AWS SDK for C++ im AWS SDK for C++ Entwicklerhandbuch.
Dieses Beispiel demonstriert die Verwendung git
zum Klonen des SDK Quellcodes und cmake
zum Erstellen von SDK für C++.
-
Klonen Sie das entfernte Repository und rufen Sie alle Git-Submodule rekursiv für Ihre AWS Cloud9 -Umgebung ab, indem Sie den folgenden Befehl im Terminal ausführen:
git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp
-
Navigieren Sie zu dem neuen
aws-sdk-cpp
Verzeichnis, erstellen Sie ein Unterverzeichnis, in das Sie das AWS SDK für C++ erstellen möchten, und navigieren Sie dann zu diesem:cd aws-sdk-cpp mkdir sdk_build cd sdk_build
-
Anmerkung
Aus Zeitgründen wird in diesem Schritt nur der Amazon S3-Teil von AWS SDK for C++ erstellt. Wenn Sie das vollständige Verzeichnis erstellen möchtenSDK, lassen Sie das
-DBUILD_ONLY=s3
aus demcmake
Befehl weg.Die vollständige Erstellung SDK für C++ kann mehr als eine Stunde dauern, abhängig von den Rechenressourcen, die Ihrer EC2 Amazon-Instance oder Ihrem eigenen Server zur Verfügung stehen.
Wird verwendet
cmake
, um den Amazon S3 S3-Teil von SDK for C++ in dassdk_build
Verzeichnis einzubauen, indem Sie den folgenden Befehl ausführen:cmake .. -DBUILD_ONLY=s3
-
Führen Sie nun den
make install
Befehl aus, sodass auf den SDK Build zugegriffen werden kann:sudo make install cd ..
Schritt 4: C++ und CMakeLists Dateien erstellen
In diesem Schritt erstellen Sie eine C++
-Datei, mit der die Benutzer des Projekts mit Amazon S3-Buckets interagieren können.
Sie erstellen auch eine CMakeLists.txt
-Datei, die Anweisungen enthält, die von cmake
zur Erstellung Ihrer C++-Bibliothek verwendet werden.
-
Erstellen Sie in der AWS Cloud9 IDE eine Datei mit diesem Inhalt und speichern Sie die Datei mit dem Namen
s3-demo.cpp
im Stammverzeichnis (/
) Ihrer Umgebung.#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
-
Erstellen Sie eine zweite Datei mit diesem Inhalt, und speichern Sie die Datei unter dem Namen
CMakeLists.txt
im Stammverzeichnis (/
) Ihrer Umgebung. Diese Datei ermöglicht es Ihnen, aus Ihrem Code eine ausführbare Datei zu erstellen.# 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})
Schritt 5: Erstellen und Ausführen des C++-Codes
-
Führen Sie im Stammverzeichnis Ihrer Umgebung, in dem Sie die Dateien
s3-demo.cpp
undCMakeLists.txt
gespeichert haben,cmake
aus, um Ihr Projekt zu erstellen:cmake . make
-
Sie können jetzt Ihr Programm über die Befehlszeile ausführen. Ersetzen Sie im folgenden Befehl
my-unique-bucket-name
durch einen eindeutigen Namen für den Amazon S3-Bucket und ersetzen Sieus-east-1
gegebenenfalls durch den Bezeichner einer anderen AWS Region, in der Sie einen Bucket erstellen möchten../s3-demo my-unique-bucket-name us-east-1
Wird das Programm erfolgreich ausgeführt, wird eine Ausgabe ähnlich der folgenden zurückgegeben:
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.
Schritt 6: Bereinigen
Löschen Sie die Umgebung, um zu verhindern, dass Ihr AWS Konto weiterhin belastet wird, nachdem Sie mit diesem Beispiel fertig sind. Detaillierte Anweisungen finden Sie unter Löschen einer Umgebung in AWS Cloud9.