IBM Cloud Docs
Utilización de cURL

Utilización de cURL

Puede sacar el máximo provecho de trabajar con la línea de mandatos en la mayoría de los entornos con IBM Cloud® Object Storage y cURL.

A continuación encontrará una 'hoja de repaso' de los mandatos básicos de curl para la API REST de IBM Cloud® Object Storage. Encontrará más información en la consulta de API correspondiente a grupos o a objetos.

Para utilizar curl se presupone que el usuario está familiarizado con la línea de mandatos y con el almacenamiento de objetos y que ha obtenido la información necesaria de una credencial de servicio, la consulta de puntos finales o la consola. Si no está familiarizado con alguno de los términos o de las variables, los puede consultar en el glosario.

Nota: Información de identificación personal (PII): Al nombrar grupos u objetos, no utilice ninguna información que pueda identificar a cualquier usuario (persona física) por nombre, ubicación o cualquier otro medio.

Solicitud de una señal de IAM

Dos formas de generar una señal oauth de IAM para las solicitudes de autenticación son mediante un mandato curl con una clave de API (descrita más adelante) o desde la línea de mandatos mediante la CLI de IBM Cloud®.

Solicitud de una señal de IAM mediante una clave de API

Asegúrese de que tiene una clave de API. La puede obtener de 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"

Obtención del ID de instancia de recurso

Algunos de los mandatos siguientes requieren un parámetro ibm-service-instance-id. Para encontrar este valor, vaya al separador Credenciales de servicio de la instancia de Object Storage en la consola de la nube. Cree una credencial si es necesario y, a continuación, utilice el menú Ver credenciales para ver el formato JSON. Utilice el valor de resource_instance_id.

Para utilizarlo con las API de curl, solo necesita el UUID que empieza después del último signo de dos puntos y termina antes del signo de dos puntos doble final. Por ejemplo, el ID crn:v1:bluemix:public:cloud-object-storage:global:a/81caa0254631ce5f9330ae427618f209:39d8d161-22c4-4b77-a856-f11db5130d7d:: se puede abreviar como 39d8d161-22c4-4b77-a856-f11db5130d7d.

Obtención de una lista de grupos

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

Añadir un grupo

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

Adición de un grupo (clase de almacenamiento)

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

Puede consultar la lista de códigos válidos para LocationConstraint en la guía de Storage Classes.

Creación de un CORS de grupo

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

La cabecera Content-MD5 tiene que ser la representación binaria de un hash MD5 codificado en base64.

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

Obtención de un CORS de grupo

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

Supresión de un CORS de grupo

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

Obtención de una lista de objetos

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

Obtención de cabeceras de grupo

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

Obtención de metadatos de grupo

El uso del punto final de la API de configuración no es el mismo que el punto final para el propio grupo. Utilice este mandato para obtener los metadatos del grupo especificado.

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

Supresión de un grupo

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

Carga de un objeto

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

Obtención de las cabeceras de un objeto

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

Copia de un objeto

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

Comprobación de la información de CORS

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

Descarga de un objeto

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

Comprobación de la ACL de un objeto

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

Habilitación de un cortafuegos

El uso del punto final de la API de configuración no es el mismo que el punto final para el propio grupo. Utilice este mandato para habilitar un cortafuegos para el grupo especificado. Ningún otro servicio de IBM Cloud® puede acceder al grupo cuando el cortafuegos está activo.

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

Habilitación del seguimiento de actividad

Tenga en cuenta que el punto final de la API de configuración no es el mismo que el punto final del grupo en sí. Utilice este mandato para habilitar el seguimiento de actividad para el grupo especificado.

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

Cómo permitir el acceso anónimo a un objeto

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"

Supresión de un objeto

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

Supresión de varios objetos

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

La cabecera Content-MD5 tiene que ser la representación binaria de un hash MD5 codificado en base64.

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

Inicio de una carga de varias partes

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

Carga de 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)"

Finalización de una carga de varias partes

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

Obtención de cargas de varias partes incompletas

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

Detención de cargas de varias partes incompletas

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

Configurar un sitio web estático

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

Como recordatorio, la cabecera Content-MD5 debe ser la representación binaria de un hash base64-encoded MD5.

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

Próximos pasos

La descripción detallada de la API RESTful para IBM Cloud Object Storage se puede encontrar en la documentación de la API de compatibilidad deS3 o en la documentación de la API de configuración.