Nota

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

Prerequisiti

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

  1. Accedi al tuo sistema Linux.

    Nota: tutti i comandi verranno eseguiti dal sistema Linux in cui sono installati e configurati i prerequisiti necessari.

  2. 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"
      }
    }
    
  3. 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.

    Schermata tenancy OCI

    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.

  1. 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"
    }
    
  2. 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.

Navigazione in "Chiavi segrete cliente" dal profilo

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.

Copia della chiave di accesso

Task 4: Raccogli informazioni periodo fisso per impostazione

  1. Andare a OCI Console, andare a Storage e fare clic su Bucket.

  2. 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.

    Raccolta di informazioni su bucket e oggetti per l'impostazione

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++

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

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

Conferme

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.