Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Utilizza l'API di compatibilità Amazon S3 dello storage degli oggetti OCI con AWS SDK per C++
Introduzione
Lo storage degli oggetti Oracle Cloud Infrastructure (OCI) consente ai clienti di memorizzare in modo sicuro qualsiasi tipo di dati nel suo formato nativo. Grazie alla ridondanza integrata, OCI Object Storage è la soluzione ideale per creare applicazioni moderne che richiedono scalabilità e flessibilità, in quanto può essere utilizzato per consolidare più origini dati a scopo di analitica, backup o archiviazione.
Lo storage degli oggetti OCI è fondamentale per i carichi di lavoro cloud, la sua elasticità, scalabilità, affidabilità ed efficienza dei costi lo ha reso lo storage primario per i dati non strutturati nel cloud. A causa della sua popolarità, esiste un vasto ecosistema di strumenti per lavorare con OCI Object Storage.
OCI Object Storage fornisce un'API di compatibilità Amazon S3, i clienti possono continuare a utilizzare gli strumenti Amazon S3 esistenti e apportare modifiche minime alle loro applicazioni per lavorare con OCI Object Storage. L'API di compatibilità Amazon S3 e i set di dati dello storage degli oggetti OCI sono congruenti. Se i dati vengono scritti nello storage degli oggetti OCI utilizzando l'interfaccia API di compatibilità Amazon S3, sarà possibile leggerli usando l'interfaccia API di storage degli oggetti OCI nativa e viceversa. I clienti che utilizzano l'SDK AWS per C++ potrebbero trovare difficile l'aspetto dell'autenticazione quando utilizzano l'API di compatibilità Amazon S3, questo tutorial mira a fornire due semplici esempi per iniziare a utilizzare l'SDK AWS per C++.
Nota: si tratta di script di esempio che utilizzano l'SDK AWS per C++, non sono applicazioni Oracle ufficiali e non sono gestiti o supportati da Oracle. Poiché si tratta di esempi, è possibile rivedere, aggiornare e personalizzare il proprio caso d'uso nel repository software. Oracle non certifica né supporta SDK di terze parti.
Obiettivi
-
Evita i problemi di certificato e autenticazione SSL quando utilizzi l'SDK AWS per C++ con OCI Object Storage.
-
Eseguire il codice C++ di esempio per ListBuckets e ListObjectsV2 nel servizio di storage degli oggetti OCI.
Prerequisiti
-
Un account OCI.
-
Autorizzazione utente per leggere bucket e oggetti in OCI Object Storage. Per ulteriori informazioni, vedere Consenti agli utenti di scaricare oggetti dai bucket di storage degli oggetti.
-
Accesso a un bucket esistente con oggetti esistenti nidificati in un prefisso/directory. Il nome del bucket sarà necessario per l'esercitazione. Per ulteriori informazioni, vedere l'esercitazione Metti i dati nello storage degli oggetti.
-
Familiari con l'utilizzo di un terminale o di un'interfaccia shell su macOS, Linux, Berkeley Software Distribution (BSD) e su Windows PowerShell, prompt dei comandi o bash.
-
Accesso a un sistema Linux.
-
Possibilità o autorizzazioni per installare software su un sistema Linux.
-
Installare l'interfaccia della riga di comando di Oracle Cloud Infrastructure (OCI CLI) e configurarla nel sistema Linux. Per ulteriori informazioni, vedere Installazione dell'interfaccia CLI.
-
Installare AWS SDK per C++ con le librerie condivise in
LD_LIBRARY_PATH
sul sistema Linux. Per ulteriori informazioni, consulta la sezione relativa alla creazione dell'SDK AWS per C++ su Linux/macOS. -
Installa Git sul tuo sistema Linux. Per ulteriori informazioni, vedere Guida introduttiva - Installazione di Git.
Task 1: Comprendere gli URL di percorso e di stile in hosting virtuale
Al momento di scrivere questa esercitazione, l'API di compatibilità Amazon S3 dello storage degli oggetti OCI supporta URL di tipo percorso. Ciò significa che il bucket si troverà nel percorso URL.
Ad esempio:
https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/MyBucketName
OR
https://MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/MyBucketName/MyObjectName
Negli URL di tipo hosted virtuale, il nome del bucket dello storage degli oggetti OCI è incluso nel sottodominio (o all'inizio) dell'URL.
Ad esempio:
https://MyBucketName.MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com
OR
https://MyBucketName.MyNamespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/MyObjectName
Per impostazione predefinita, l'SDK AWS per C++ utilizza URL di stile in hosting virtuale. Quando si seguono gli esempi di codice prodotti da AWS e si sostituiscono i valori dalla tenancy OCI, verrà visualizzato un errore simile al seguente output. Per ulteriori informazioni, vedere Creazione, elenco ed eliminazione di bucket.
curlCode: 60, SSL peer certificate or SSH remote key was not OK
Poiché il codice utilizza un URL di stile ospitato in virtuale, il codice non farà riferimento al bucket di storage degli oggetti OCI né a un certificato valido.
L'impostazione S3Client dovrà essere modificata per utilizzare gli URL con stile percorso. La configurazione deve essere impostata utilizzando il comando seguente.
Aws::Client::ClientConfiguration config;
S3Client s3Client(config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
Task 2: determinare lo spazio di nomi della tenancy e il compartimento API S3
-
Accedi al tuo sistema Linux.
Nota: tutti i comandi verranno eseguiti dal sistema Linux in cui sono installati e configurati i prerequisiti necessari.
-
Eseguire il comando CLI OCI
oci os ns get-metadata
.$ oci os ns get-metadata { "data": { "default-s3-compartment-id": "ocid1.tenancy.oc1..bbbbcccdabcc0x0aaaaaa00aaaaaaaaaaa0b0b00ccccccccbbbbbbbb00aa", "default-swift-compartment-id": "ocid1.tenancy.oc1..bbbbcccdabcc0x0aaaaaa00aaaaaaaaaaa0b0b00ccccccccbbbbbbbb00aa", "namespace": "MyNamespace" } }
-
Se l'OCID del compartimento S3 contiene la parola
tenancy
, si tratta del compartimento radice. Ottenere il nome utilizzando il comando seguente.$ oci iam compartment get --compartment-id <compartment_ocid>
In alternativa, per il compartimento radice della tenancy eseguire il comando seguente.
$ oci iam tenancy get --tenancy-id <tenancy_ocid>
In alternativa, puoi utilizzare OCI Console passando al tuo profilo nell'angolo in alto a destra e selezionando la tenancy (
your_tenancy_name
) per determinare lo spazio di nomi e il compartimento API S3.Il compartimento S3 verrà utilizzato di nuovo nel task 4.
Task 3: creare una chiave segreta del cliente per accedere all'API compatibile con S3
Generare la chiave segreta utilizzando i comandi dell'interfaccia CLI OCI.
-
Eseguire il comando
oci iam customer-secret-key create
.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" }
-
Copiare l'ID (
AWS_ACCESS_KEY_ID
) e la chiave (AWS_SECRET_ACCESS_KEY
) in un punto sicuro da utilizzare in seguito per impostare le variabili d'ambiente.Nota: l'OCID utente può essere trovato nel file di configurazione dell'interfaccia CLI OCI, in genere memorizzato in
$HOME/.oci/config
.
Oppure
Una chiave segreta può anche essere generata utilizzando OCI Console e passando al tuo profilo nell'angolo in alto a destra, quindi selezionando il nome utente visualizzato. Fare clic sul collegamento Chiavi segrete cliente, Genera chiave segreta e impostare un nome visualizzato. Fare clic su copia e memorizzare la chiave segreta in una posizione sicura, quindi fare clic su Chiudi.
Dopo aver chiuso la finestra Genera chiave segreta, cercare il nome visualizzato nell'elenco delle chiavi segrete cliente, passare il puntatore del mouse sul tasto di accesso e copiare il tasto di accesso.
Task 4: Raccogli informazioni periodo fisso per impostazione
-
Andare a OCI Console, andare a Storage e fare clic su Bucket.
-
Fare clic sul nome del bucket dai prerequisiti e annotare le informazioni riportate di seguito.
- Il nome del bucket.
- La posizione degli oggetti, ovvero il prefisso.
- Il nome Area. Ottieni il codice area da qui: Aree e domini di disponibilità. Ad esempio, US East(Ashburn) sarebbe rappresentato da us-ashburn-1.
Task 5: Imposta variabili di ambiente
Impostare le variabili d'ambiente in base alle informazioni delle attività precedenti utilizzando il comando seguente.
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>"
Ad esempio:
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"
Task 6: Creare gli esempi C++
-
Eseguire il comando seguente per duplicare il repository di esempio in git.
$ git clone https://github.com/tonymarkel/OCI_AWS_CPP_SDK_S3_Examples.git
-
Eseguire i comandi seguenti per passare alla directory contenente gli esempi C++, creare una directory di build, passare a tale directory, quindi eseguire build e make.
$ OCI_AWS_CPP_SDK_S3_Examples $ mkdir build $ cd build $ cmake .. $ make
Nota: si tratta di script di esempio che utilizzano l'SDK AWS per C++, non sono applicazioni Oracle ufficiali e non sono gestiti o supportati da Oracle. Poiché si tratta di esempi, è possibile rivedere, aggiornare e personalizzare il proprio caso d'uso nel repository software. Oracle non certifica né supporta SDK di terze parti.
Task 7: eseguire gli esempi
-
Eseguire il comando seguente per ottenere la lista dei bucket.
$ ./listBuckets $OCI_NAMESPACE $OCI_REGION $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
Ad esempio:
$ ./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
-
Eseguire il comando seguente per ottenere la lista degli oggetti.
Ad esempio:
$ ./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
Nota: in caso di problemi, tornare al task 5 e assicurarsi che le variabili di ambiente siano impostate correttamente.
Collegamenti correlati
Conferme
-
Autori - Kenneth Heung (Master Principal Cloud Architect), Tony Markel (Principal Cloud Architect)
-
Collaboratore - Melinda Centeno (Senior Principal Product Manager)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Use OCI Object Storage Amazon S3 Compatibility API with AWS SDK for C++
G28123-01
Copyright ©2025, Oracle and/or its affiliates.