Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
OCI Object Storage-Amazon S3-Kompatibilitäts-API mit AWS SDK für C++ verwenden
Einführung
Mit Oracle Cloud Infrastructure (OCI) Object Storage können Kunden jeden Datentyp in seinem nativen Format sicher speichern. Mit integrierter Redundanz ist OCI Object Storage ideal für die Erstellung moderner Anwendungen, die Skalierbarkeit und Flexibilität erfordern, da es zur Konsolidierung mehrerer Datenquellen für Analyse-, Backup- oder Archivierungszwecke verwendet werden kann.
OCI Object Storage ist für Cloud-Workloads grundlegend. Seine Elastizität, Skalierbarkeit, Zuverlässigkeit und Kosteneffizienz hat ihn zum primären Speicher für unstrukturierte Daten in der Cloud gemacht. Aufgrund seiner Beliebtheit gibt es ein riesiges Ökosystem von Tools für die Arbeit mit OCI Object Storage.
OCI Object Storage bietet eine Amazon S3-Kompatibilitäts-API. Kunden können ihre vorhandenen Amazon S3-Tools weiterhin verwenden und für die Arbeit mit OCI Object Storage minimale Änderungen an ihren Anwendungen vornehmen. Die Amazon S3-Kompatibilitäts-API und die OCI Object Storage-Datasets sind deckungsgleich. Wenn Daten mit der Amazon S3-Kompatibilitäts-API in OCI Object Storage geschrieben werden, können die Daten mit der nativen OCI Object Storage-API zurück gelesen werden und umgekehrt. Kunden, die das AWS SDK für C++ verwenden, finden den Authentifizierungsaspekt bei der Verwendung der Amazon S3-Kompatibilitäts-API möglicherweise herausfordernd. Dieses Tutorial enthält zwei einfache Beispiele für den Einstieg in die Verwendung des AWS SDK für C++.
Hinweis: Hierbei handelt es sich um Beispielskripte, die das AWS-SDK für C++ verwenden. Sie sind keine offiziellen Oracle-Anwendungen und werden nicht von Oracle verwaltet oder unterstützt. Da es sich um Beispiele handelt, sollten Sie sie möglicherweise für Ihren Anwendungsfall in Ihrem eigenen Software-Repository prüfen, aktualisieren und anpassen. Oracle zertifiziert oder unterstützt keine Drittanbieter-SDKs.
Ziele
-
Vermeiden Sie SSL-Zertifikat- und Authentifizierungsprobleme, wenn Sie das AWS-SDK für C++ mit OCI Object Storage verwenden.
-
Führen Sie den C++-Beispielcode für ListBuckets und ListObjectsV2 im OCI Object Storage-Service aus.
Voraussetzungen
-
Ein OCI-Account.
-
Benutzerberechtigung zum Lesen von Buckets und Objekten in OCI Object Storage. Weitere Informationen finden Sie unter Herunterladen von Objekten aus Objektspeicher-Buckets durch Benutzer zulassen.
-
Zugriff auf einen vorhandenen Bucket mit vorhandenen Objekten, die in einem Präfix/Verzeichnis verschachtelt sind. Der Bucket-Name wird für das Tutorial benötigt. Weitere Informationen finden Sie im Tutorial Daten in Objektspeicher einfügen.
-
Vertraut mit der Verwendung einer Terminal- oder Shellschnittstelle unter macOS, Linux, Berkeley Software Distribution (BSD) und unter Windows PowerShell, Eingabeaufforderung oder bash.
-
Zugriff auf ein Linux-System.
-
Fähigkeit oder Berechtigungen zur Installation von Software auf einem Linux-System.
-
Installieren Sie die Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI), und konfigurieren Sie sie auf Ihrem Linux-System. Weitere Informationen finden Sie unter CLI installieren.
-
Installieren Sie AWS SDK for C++ mit den Shared Librarys in
LD_LIBRARY_PATH
auf Ihrem Linux-System. Weitere Informationen finden Sie unter AWS SDK für C++ unter Linux/macOS erstellen. -
Installieren Sie Git auf Ihrem Linux-System. Weitere Informationen finden Sie unter Erste Schritte - Git installieren.
Aufgabe 1: Pfad- und virtuell gehostete Format-URLs verstehen
Zum Zeitpunkt des Schreibens dieses Tutorials unterstützt die OCI Object Storage-Amazon S3-Kompatibilitäts-API pfadähnliche URLs. Das bedeutet, dass sich der Bucket im URL-Pfad befindet.
Beispiel:
https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/MyBucketName
OR
https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/MyBucketName/MyObjectName
In URLs im virtuell gehosteten Stil ist der OCI Object Storage-Bucket-Name in der Subdomain (oder am Anfang) der URL enthalten.
Beispiel:
https://MyBucketName.MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com
OR
https://MyBucketName.MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/MyObjectName
Standardmäßig verwendet das AWS SDK für C++ URLs im virtuell gehosteten Stil. Wenn Sie die von AWS erstellten Codebeispiele befolgen und Werte aus Ihrem OCI-Mandanten ersetzen, wird ein Fehler ähnlich der folgenden Ausgabe angezeigt. Weitere Informationen finden Sie unter Buckets erstellen, auflisten und löschen.
curlCode: 60, SSL peer certificate or SSH remote key was not OK
Da der Code eine virtuell gehostete Format-URL verwendet, referenziert der Code weder den OCI Object Storage-Bucket noch ein gültiges Zertifikat.
Die Einstellung S3Client muss geändert werden, damit URLs im Pfadformat verwendet werden. Die Konfiguration sollte mit dem folgenden Befehl festgelegt werden.
Aws::Client::ClientConfiguration config;
S3Client s3Client(config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
Aufgabe 2: Mandanten-Namespace und API-Compartment S3 bestimmen
-
Melden Sie sich bei Ihrem Linux-System an.
Hinweis: Alle Befehle werden in Ihrem Linux-System ausgeführt, in dem Sie die erforderlichen Voraussetzungen installiert und konfiguriert haben.
-
Führen Sie den OCI-CLI-Befehl
oci os ns get-metadata
aus.$ oci os ns get-metadata { "data": { "default-s3-compartment-id": "ocid1.tenancy.oc1..bbbbcccdabcc0x0aaaaaa00aaaaaaaaaaa0b0b00ccccccccbbbbbbbb00aa", "default-swift-compartment-id": "ocid1.tenancy.oc1..bbbbcccdabcc0x0aaaaaa00aaaaaaaaaaa0b0b00ccccccccbbbbbbbb00aa", "namespace": "MyNamespace" } }
-
Wenn die Compartment-OCID S3 das Wort
tenancy
enthält, handelt es sich um das Root Compartment. Rufen Sie den Namen mit dem folgenden Befehl ab.$ oci iam compartment get --compartment-id <compartment_ocid>
Oder führen Sie für das Root Compartment des Mandanten den folgenden Befehl aus.
$ oci iam tenancy get --tenancy-id <tenancy_ocid>
Alternativ können Sie die OCI-Konsole verwenden, indem Sie zu Ihrem Profil in der oberen rechten Ecke navigieren und den Mandanten (
your_tenancy_name
) auswählen, um den Namespace und das API-Compartment S3 zu bestimmen.Das Compartment S3 wird in Aufgabe 4 erneut verwendet.
Aufgabe 3: Kunden-Secret-Key für den Zugriff auf die mit S3 kompatible API erstellen
Generieren Sie einen Secret Key mit OCI-CLI-Befehlen.
-
Führen Sie den Befehl
oci iam customer-secret-key create
aus.oci iam customer-secret-key create --display-name display-name --user-id ocid1.user.oc1..aaaaaaaa-user-ocid-sdd6ahdouq { "data": { "display-name": "display-name", "id": "7aaaa3462aa34271a276002015f30674a5325aaa", "inactive-status": null, "key": "1aaa577aaaa/aa3aa92aa7aa7aaaaaaAa0aaaAa8AAa=", "lifecycle-state": "ACTIVE", "time-created": "2024-07-19T19:58:03.794000+00:00", "time-expires": null, "user-id": "ocid1.user.oc1..aaaaaaaa-user-ocid-sdd6ahdouq" }, "etag": "e63038c73fc24fa087a2a4c3339ef709" }
-
Kopieren Sie die ID (
AWS_ACCESS_KEY_ID
) und den Schlüssel (AWS_SECRET_ACCESS_KEY
) an eine sichere Stelle, um später zum Festlegen von Umgebungsvariablen verwendet zu werden.Hinweis: Die Benutzer-OCID befindet sich in der OCI-CLI-Konfigurationsdatei, die normalerweise in
$HOME/.oci/config
gespeichert ist.
Oder
Ein Secret Key kann auch mit der OCI-Konsole generiert werden. Navigieren Sie in der oberen rechten Ecke zu Ihrem Profil, und wählen Sie dann den angezeigten Benutzernamen aus. Klicken Sie auf den Link Kunden-Secret-Keys, Secret-Key generieren, und legen Sie einen Anzeigenamen fest. Klicken Sie auf Kopieren, speichern Sie den Secret Key in einem sicheren Speicherort, und klicken Sie auf Schließen.
Nachdem Sie das Fenster Secret Key generieren geschlossen haben, suchen Sie in der Liste der Kunden-Secret-Keys nach dem Anzeigenamen, zeigen Sie mit der Maus auf die Zugriffstaste, und kopieren Sie den Zugriffstaste.
Aufgabe 4: Zeitraumdaten für die Einrichtung erfassen
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Speicher, und klicken Sie auf Buckets.
-
Klicken Sie unter den Voraussetzungen auf den Bucket-Namen, und notieren Sie sich die folgenden Informationen.
- Der Name des Buckets.
- Der Speicherort von Objekten. Dies ist das Präfix.
- Der Regionsname. Rufen Sie den Regionscode hier ab: Regionen und Availability-Domains. Beispiel: US East (Ashburn) wird durch us-ashburn-1 dargestellt.
Aufgabe 5: Umgebungsvariablen festlegen
Legen Sie die Umgebungsvariablen mit dem folgenden Befehl basierend auf Informationen aus den vorherigen Aufgaben fest.
export AWS_ACCESS_KEY_ID="<your access key ID from Task 3>"
export AWS_SECRET_ACCESS_KEY="<your secret key ID from Task 3>"
export OCI_REGION="bukcet region from Task 4>"
export OCI_NAMESPACE="<namespace name from Task 1>"
export OCI_BUCKET="<your bucket name from Task 4>"
export OCI_PREFIX="<object prefix name from Task 4>"
Beispiel:
export AWS_ACCESS_KEY_ID="da34baaa4ab029f51c34c1cee83d40f0dEXAMPLE"
export AWS_SECRET_ACCESS_KEY="7w3uMS6kYiYkUpziSlLFcBimBsYDJfojwCWKEXAMPLE="
export OCI_REGION="us-ashburn-1"
export OCI_NAMESPACE="MyNamespace"
export OCI_BUCKET="Images"
export OCI_PREFIX="2024/12/18/Camera"
Aufgabe 6: C++-Beispiele erstellen
-
Führen Sie den folgenden Befehl aus, um das Beispiel-Repository in git zu klonen.
$ git clone https://github.com/tonymarkel/OCI_AWS_CPP_SDK_S3_Examples.git
-
Führen Sie die folgenden Befehle aus, um in das Verzeichnis zu wechseln, das die C++-Beispiele enthält, erstellen Sie ein Build-Verzeichnis, wechseln Sie in dieses Verzeichnis, und führen Sie dann Build und Make aus.
$ OCI_AWS_CPP_SDK_S3_Examples $ mkdir build $ cd build $ cmake .. $ make
Hinweis: Hierbei handelt es sich um Beispielskripte, die das AWS-SDK für C++ verwenden. Sie sind keine offiziellen Oracle-Anwendungen und werden nicht von Oracle verwaltet oder unterstützt. Da es sich um Beispiele handelt, sollten Sie sie möglicherweise für Ihren Anwendungsfall in Ihrem eigenen Software-Repository prüfen, aktualisieren und anpassen. Oracle zertifiziert oder unterstützt keine Drittanbieter-SDKs.
Aufgabe 7: Beispiele ausführen
-
Führen Sie den folgenden Befehl aus, um die Liste der Buckets abzurufen.
$ ./listBuckets $OCI_NAMESPACE $OCI_REGION $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
Beispiel:
$ ./listBuckets $OCI_NAMESPACE $OCI_REGION $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY S3 Endpoint is: https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/ Found 3 buckets Demo Images Logs
-
Führen Sie den folgenden Befehl aus, um die Liste der Objekte abzurufen.
Beispiel:
$ ./listObjects $OCI_NAMESPACE $OCI_REGION $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY $OCI_BUCKET $OCI_PREFIX S3 Object Path is: https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com Bucket is: Images Prefix is: 2024/12/18/Camera LISTING OBJECTS Found 3 objects 2024/12/18/Camera/Image1.jpeg 2024/12/18/Camera/Image2.jpeg 2024/12/18/Camera/DefinitelyNotACat.jpeg
Hinweis: Wenn Probleme auftreten, gehen Sie zu Aufgabe 5 zurück, und stellen Sie sicher, dass die Umgebungsvariablen korrekt festgelegt sind.
Verwandte Links
Danksagungen
-
Autoren - Kenneth Heung (Master Principal Cloud Architect), Tony Markel (Principal Cloud Architect)
-
Mitwirkende – Melinda Centeno (Senior Principal Product Manager)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Use OCI Object Storage Amazon S3 Compatibility API with AWS SDK for C++
G28119-01
Copyright ©2025, Oracle and/or its affiliates.