IBM Cloud Docs
Utilisation cURL

Utilisation cURL

L'utilisation de la ligne de commande dans la plupart des environnements vous permet de tirer le maximum d'IBM Cloud® Object Storage et de cURL.

Voici un "aide-mémoire" des commandes curl de base pour l'API REST d'IBM Cloud® Object Storage. Vous trouverez plus de détails dans la référence d'API pour les compartiments ou les objets.

L'utilisation de curl suppose de posséder des connaissances suffisantes sur la ligne de commande et Object Storage, et de disposer des informations nécessaires à partir des données d'identification de service, du guide de référence des noeuds finaux ou de la console. Si des termes ou des variables ne vous sont pas familiers, vous pourrez les retrouver dans le glossaire.

Remarque: informations identifiant la personne (PII): Lorsque vous nommez des compartiments ou des objets, n'utilisez pas d'informations pouvant identifier un utilisateur (personne physique) par son nom, son emplacement ou tout autre moyen.

Demande de jeton IAM

Les deux manières de générer un jeton oauth IAM pour l'authentification des demandes sont l'utilisation d'une commande curl avec une clé d'API (décrite un peu plus loin) ou à partir de la ligne de commande en utilisant l'interface de ligne de commande d'IBM Cloud®.

Demande de jeton IAM à l'aide d'une clé d'API

Vérifiez que vous disposez d'une clé d'API. Vous pouvez en obtenir une à partir d'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"

Obtention de votre ID d'instance de ressource

Certaines des commandes ci-après requièrent un paramètre ibm-service-instance-id. Pour trouver cette valeur, accédez à l'onglet Données d'identification pour le service de votre instance Object Storage dans la console IBM Cloud. Si nécessaire, créez des données d'identification, puis utilisez le menu Afficher les données d'identification pour voir le format JSON. Utilisez la valeur de resource_instance_id.

Pour utiliser des API curl, vous n'avez besoin que de l'identificateur unique universel (UUID) qui débute après le dernier signe deux-points et se termine avant le double signe deux-points final. Par exemple, l'ID crn:v1:bluemix:public:cloud-object-storage:global:a/81caa0254631ce5f9330ae427618f209:39d8d161-22c4-4b77-a856-f11db5130d7d:: peut être abrégé en 39d8d161-22c4-4b77-a856-f11db5130d7d.

Création d'une liste de compartiments

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

Ajouter un compartiment

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

Ajout d'un compartiment (classe de stockage)

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

Une liste de codes valides pour LocationConstraint peut être référencée dans le guide sur les classes de stockage.

Création d'un partage de ressources d'origine croisée pour un compartiment

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'en-tête Content-MD5 doit être la représentation binaire d'un hachage MD5 codé en base 64.

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

Obtention d'un partage de ressources d'origine croisée pour un compartiment

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

Suppression d'un partage de ressources d'origine croisée pour un compartiment

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

Création d'une liste d'objets

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

Obtention d'en-têtes de compartiment

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

Obtention de métadonnées de compartiment

L'utilisation du noeud final d'API de configuration n'est pas la même que celle du noeud final de votre compartiment lui-même. L'utilisation de cette commande renvoie des métadonnées pour le compartiment spécifié.

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

Suppression d'un compartiment

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

Envoi par téléchargement d'un objet

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

Obtention des en-têtes d'un objet

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

Copie d'un objet

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

Vérification des informations relatives à un partage de ressources d'origine croisée

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

Réception par téléchargement d'un objet

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

Vérification de la liste de contrôle d'accès d'un objet

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

Activation d'un pare-feu

L'utilisation du noeud final d'API de configuration n'est pas la même que celle du noeud final de votre compartiment lui-même. L'utilisation de cette commande active un pare-feu pour le compartiment spécifié. Aucun autre service IBM Cloud® ne peut accéder au compartiment lorsque le pare-feu est actif.

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"]}}'

Activation du suivi des activités

Notez que l'utilisation du noeud final d'API config n'est pas la même que le noeud final de votre compartiment proprement dit. L'utilisation de cette commande active le suivi des activités pour le compartiment spécifié.

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}'

Activation de l'accès anonyme à un objet

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"

Suppression d'un objet

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

Suppression de plusieurs objets

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'en-tête Content-MD5 doit être la représentation binaire d'un hachage MD5 codé en base 64.

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

Démarrage d'un envoi par téléchargement en plusieurs parties

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

Remonter une partie

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

Achèvement d'un envoi par téléchargement en plusieurs parties

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

Obtention d'envois par téléchargement en plusieurs parties qui sont incomplets

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

Arrêt d'envois par téléchargement en plusieurs parties qui sont incomplets

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

Configurer un site Web statique

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

Pour rappel, l'en-tête Content-MD5 doit être la représentation binaire d'un hachage MD5 base64-encoded.

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

Etapes suivantes

La description détaillée de l'API RESTful pour IBM Cloud Object Storage est disponible dans la documentation de l'API de compatibilitéS3 ou dans la documentation de l'API de configuration.