C++-Tutorial für AWS Cloud9 - AWS Cloud9

AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS Cloud9 können den Service weiterhin wie gewohnt nutzen. Erfahren Sie mehr“

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 und Amazon S3-Preise.

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 oder Ubuntu Server ausgeführt wird. 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 bereitgestellt wird.

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.

Amazon Linux-based systems

Sie können überprüfen, ob Sie es bereits gcc installiert haben, indem Sie den folgenden Befehl im AWS Cloud9 Terminal ausführen:

g++ --version

Wenn g++ nicht installiert ist, können Sie es einfach als Teil der Paketgruppe „Development Tools“ installieren. Diese Tools werden einer Instance mit dem Befehl yum groupinstall hinzugefügt:

sudo yum groupinstall "Development Tools"

Führen Sie g++ --version erneut aus, um zu überprüfen, ob der Compiler installiert wurde.

Installieren Sie nun die Pakete für die benötigten Bibliotheken mit dem Paketmanager Ihres Systems:

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

Sie können überprüfen, ob Sie bereits gcc installiert haben, indem Sie den folgenden Befehl im AWS Cloud9 Terminal ausführen:

g++ --version

Wenn gcc nicht installiert ist, können Sie ihn auf einem Ubuntu-basierten System installieren, indem Sie die folgenden Befehle ausführen:

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

Führen Sie g++ --version erneut aus, um zu überprüfen, ob der Compiler installiert wurde.

Installieren Sie nun die Pakete für die benötigten Bibliotheken mit dem Paketmanager Ihres Systems:

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

Schritt 2: Installieren CMake

Sie müssen das Tool cmake installieren, das den Prozess der Erstellung ausführbarer Dateien aus dem Quellcode automatisiert.

  1. 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
  2. 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
  3. 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
  4. Ü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++.

  1. 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
  2. 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
  3. 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 dem cmake 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 verwendetcmake, um den Amazon S3 S3-Teil von SDK for C++ in das sdk_build Verzeichnis einzubauen, indem Sie den folgenden Befehl ausführen:

    cmake .. -DBUILD_ONLY=s3
  4. 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.

  1. 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 &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. 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

  1. Führen Sie im Stammverzeichnis Ihrer Umgebung, in dem Sie die Dateien s3-demo.cpp und CMakeLists.txt gespeichert haben, cmake aus, um Ihr Projekt zu erstellen:

    cmake . make
  2. 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 Sie us-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.