Utilizzo cURL

Puoi ottenere risultati ottimali utilizzando la riga di comando nella maggior parte degli ambienti con IBM Cloud® Object Storage e cURL.

Di seguito troverai una scheda di riferimento dei comandi curl di base per l'API REST di IBM Cloud® Object Storage. Puoi trovare ulteriori dettagli nella guida di riferimento API per i bucket o gli oggetti.

L'utilizzo di curl presuppone una certa familiarità con la riga di comando e Object Storage e l'avere a disposizione le informazioni necessarie da una credenziale del servizio, dal riferimento endpoint o dalla console. Se ci sono termini o variabili che non ti sono familiari, puoi trovarli nel glossario.

Nota: PII (Personally Identifiable Information): quando si denominano bucket o oggetti, non utilizzare alcuna informazione che possa identificare un utente (persona fisica) in base al nome, alla posizione o a qualsiasi altro mezzo.

Richiedi un token IAM

Puoi generare un token IAM oauth per l'autenticazione delle richieste utilizzando un comando curl con una chiave API (descritta in seguito) o dalla riga di comando utilizzando CLI IBM Cloud®.

Richiedi un token IAM utilizzando una chiave API

Assicurarsi di disporre di una chiave API. Puoi ottenerne una da IBM Cloud® Identity and Access Management.

curl -X "POST" "https://iam.cloud.ibm.com/oidc/token" \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/x-www-form-urlencoded' \
     --data-urlencode "apikey={api-key}" \
     --data-urlencode "response_type=cloud_iam" \
     --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey"

Ottieni il tuo ID dell'istanza della risorsa

Alcuni dei seguenti comandi richiedono un parametro ibm-service-instance-id. Per trovare questo valore, vai alla scheda Credenziali del servizio della tua istanza Object Storage nella console cloud. Crea una credenziale, se necessario, quindi utilizza il menu Visualizza credenziali per vedere il formato JSON. Utilizza il valore di resource_instance_id.

Per l'utilizzo con le API curl, hai bisogno solo dell'UUID che inizia dopo l'ultimo singolo due punti e che termina prima del doppio due punti finale. Ad esempio, l'ID crn:v1:bluemix:public:cloud-object-storage:global:a/81caa0254631ce5f9330ae427618f209:39d8d161-22c4-4b77-a856-f11db5130d7d:: può essere abbreviato in 39d8d161-22c4-4b77-a856-f11db5130d7d.

Elenca i bucket

curl "https://(endpoint)/"
 -H "Authorization: bearer (token)"
 -H "ibm-service-instance-id: (resource-instance-id)"

Aggiungi un bucket

curl -X "PUT" "https://(endpoint)/(bucket-name)"
 -H "Authorization: Bearer (token)"
 -H "ibm-service-instance-id: (resource-instance-id)"

Aggiungi un bucket (classe di archiviazione)

curl -X "PUT" "https://(endpoint)/(bucket-name)"
 -H "Content-Type: text/plain; charset=utf-8"
 -H "Authorization: Bearer (token)"
 -H "ibm-service-instance-id: (resource-instance-id)"
 -d "<CreateBucketConfiguration>
       <LocationConstraint>(provisioning-code)</LocationConstraint>
     </CreateBucketConfiguration>"

È possibile che si faccia riferimento a un elenco di codici validi per LocationConstraint nella guida alle classi di archiviazione.

Crea un CORS del bucket

curl -X "PUT" "https://(endpoint)/(bucket-name)/?cors"
 -H "Content-MD5: (md5-hash)"
 -H "Authorization: bearer (token)"
 -H "Content-Type: text/plain; charset=utf-8"
 -d "<CORSConfiguration>
      <CORSRule>
        <AllowedOrigin>(url)</AllowedOrigin>
        <AllowedMethod>(request-type)</AllowedMethod>
        <AllowedHeader>(url)</AllowedHeader>
      </CORSRule>
     </CORSConfiguration>"

L'intestazione Content-MD5 deve essere la rappresentazione binaria di un hash MD5 con codifica base64.

echo -n (XML block) | openssl dgst -md5 -binary | openssl enc -base64

Ottieni un CORS del bucket

curl "https://(endpoint)/(bucket-name)/?cors"
 -H "Authorization: bearer (token)"

Elimina un CORS del bucket

curl -X "DELETE" "https://(endpoint)/(bucket-name)/?cors"
 -H "Authorization: bearer (token)"

Elenca gli oggetti

curl "https://(endpoint)/(bucket-name)"
 -H "Authorization: bearer (token)"

Ottieni le intestazioni del bucket

curl --head "https://(endpoint)/(bucket-name)/"
 -H "Authorization: bearer (token)"

Ottieni i metadati del bucket

L'utilizzo dell'endpoint API di configurazione non è uguale all'endpoint per il tuo bucket stesso. L'utilizzo di questo comando restituisce i metadati per il bucket specificato.

curl https://config.cloud-object-storage.cloud.ibm.com/v1/b/{my-bucket} \
                        -H 'authorization: bearer <IAM_token>'

Elimina un bucket

curl -X "DELETE" "https://(endpoint)/(bucket-name)/"
 -H "Authorization: bearer (token)"

Carica un oggetto

curl -X "PUT" "https://(endpoint)/(bucket-name)/(object-key)" \
 -H "Authorization: bearer (token)" \
 -H "Content-Type: (content-type)" \
 -d "(object-contents)"

Ottieni le intestazioni di un oggetto

curl --head "https://(endpoint)/(bucket-name)/(object-key)"
 -H "Authorization: bearer (token)"

Copia un oggetto

curl -X "PUT" "https://(endpoint)/(bucket-name)/(object-key)"
 -H "Authorization: bearer (token)"
 -H "x-amz-copy-source: /(bucket-name)/(object-key)"

Controlla le informazioni sul CORS

curl -X "OPTIONS" "https://(endpoint)/(bucket-name)/(object-key)"
 -H "Access-Control-Request-Method: PUT"
 -H "Origin: http://(url)"

Scarica un oggetto

curl "https://(endpoint)/(bucket-name)/(object-key)"
 -H "Authorization: bearer (token)"

Controlla l'ACL dell'oggetto

curl "https://(endpoint)/(bucket-name)/(object-key)?acl"
 -H "Authorization: bearer (token)"

Abilita un firewall

L'utilizzo dell'endpoint API di configurazione non è uguale all'endpoint per il tuo bucket stesso. L'utilizzo di questo comando abilita un firewall per il bucket specificato. Nessun altro servizio IBM Cloud® può accedere al bucket quando il firewall è attivo.

curl -X PATCH https://config.cloud-object-storage.cloud.ibm.com/v1/b/{my-bucket} \
                        -H 'authorization: bearer $IAM_TOKEN' \
                        -d '{"firewall": {"allowed_ip": ["10.142.175.0/22", "10.198.243.79"]}}'

Abilita la traccia delle attività

Nota: l'uso dell'endpoint API di configurazione non è equivalente all'endpoint per il tuo bucket stesso. L'utilizzo di questo comando abilita la traccia delle attività per il bucket specificato.

curl -X PATCH https://config.cloud-object-storage.cloud.ibm.com/v1/b/{my-bucket} \
                        -H 'authorization: bearer <IAM_token>' \
                        -d '{"activity_tracking": { \
                                "read_data_events": True, \
                                "write_data_events": True}'

Consenti l'accesso anonimo a un oggetto

curl -X "PUT" "https://(endpoint)/(bucket-name)/(object-key)?acl"
 -H "Content-Type: (content-type)"
 -H "Authorization: bearer (token)"
 -H "x-amz-acl: public-read"

Elimina un oggetto

curl -X "DELETE" "https://(endpoint)/(bucket-name)/(object-key)"
 -H "Authorization: bearer (token)"

Elimina molti oggetti

curl -X "POST" "https://(endpoint)/(bucket-name)?delete"
 -H "Content-MD5: (md5-hash)"
 -H "Authorization: bearer (token)"
 -H "Content-Type: text/plain; charset=utf-8"
 -d "<?xml version="1.0" encoding="UTF-8"?>
         <Delete>
           <Object>
             <Key>(first-object)</Key>
           </Object>
           <Object>
             <Key>(second-object)</Key>
           </Object>
         </Delete>"

L'intestazione Content-MD5 deve essere la rappresentazione binaria di un hash MD5 con codifica base64.

echo -n (XML block) | openssl dgst -md5 -binary | openssl enc -base64

Avvia un caricamento in più parti

curl -X "POST" "https://(endpoint)/(bucket-name)/(object-key)?uploads"
 -H "Authorization: bearer (token)"

Caricare una parte

curl -X "PUT" "https://(endpoint)/(bucket-name)/(object-key)?partNumber=(sequential-integer)&uploadId=(upload-id)"
 -H "Authorization: bearer (token)"
 -H "Content-Type: (content-type)"

Completa un caricamento in più parti

curl -X "POST" "https://(endpoint)/(bucket-name)/(object-key)?uploadId=(upload-id)"
 -H "Authorization: bearer (token)"
 -H "Content-Type: text/plain; charset=utf-8"
 -d "<CompleteMultipartUpload>
         <Part>
           <PartNumber>1</PartNumber>
           <ETag>(etag)</ETag>
         </Part>
         <Part>
           <PartNumber>2</PartNumber>
           <ETag>(etag)</ETag>
         </Part>
       </CompleteMultipartUpload>"

Ottieni i caricamenti in più parti incompleti

curl "https://(endpoint)/(bucket-name)/?uploads"
 -H "Authorization: bearer (token)"

Arresta i caricamenti in più parti incompleti

curl -X "DELETE" "https://(endpoint)/(bucket-name)/(object-key)?uploadId"
 -H "Authorization: bearer (token)"

Configura un sito Web statico

curl --location --request PUT 'https://<endpoint>/<bucketname>?website' \
--header 'Authorization: bearer <token>' --header 'ibm-service-instance-id: <resource_instance_id> \
--header 'Content-MD5: <hashed-output>' --header 'Content-Type: text/plain' \
--data-raw '<WebsiteConfiguration>
    <IndexDocument>
        <Suffix>index.html</Suffix>
    </IndexDocument>
    <ErrorDocument>
        <Key>error.html</Key>
    </ErrorDocument>
</WebsiteConfiguration>'

Come promemoria, l'intestazione Content-MD5 deve essere la rappresentazione binaria di un hash base64-encoded MD5.

echo -n (XML block) | openssl dgst -md5 -binary | openssl enc -base64

Passi successivi

La descrizione dettagliata dell'API RESTful per IBM Cloud Object Storage è disponibile nella Documentazione API di compatibilitàS3 o nella Documentazione API di configurazione.