IBM Cloud Docs
Usando o cURL

Usando o cURL

É possível aproveitar ao máximo o trabalho com a linha de comandos na maioria dos ambientes com o IBM Cloud® Object Storage e o cURL.

Aqui está uma 'folha de dicas' de comandos curl básicos para a API de REST do IBM Cloud® Object Storage. É possível localizar mais detalhes na referência de API de depósitos ou objetos.

O uso de curl supõe uma certa familiaridade com a linha de comandos e o Object Storage e ter as informações necessárias de uma credencial de serviço, da referência de terminais ou do console. Se houver termos ou variáveis não familiares, eles poderão ser localizados no glossário.

Nota: Informações pessoalmente identificáveis (PII): quando nomear buckets ou objetos, não use nenhuma informação que possa identificar qualquer usuário (pessoa natural) por nome, local ou qualquer outro meio

Solicitar um token do IAM

Duas maneiras possíveis de gerar um token oauth do IAM para autenticar solicitações estão usando um comando curl com uma chave de API (descrita posteriormente) ou por meio da linha de comandos usando a CLI do IBM Cloud®.

Solicitar um token do IAM usando uma chave de API

Assegure-se de que tenha uma chave de API. É possível obter uma no 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"

Obter seu ID da instância de recurso

Alguns dos comandos a seguir requerem um parâmetro ibm-service-instance-id. Para localizar esse valor, acesse a guia Credenciais de serviço de sua instância do Object Storage no console em nuvem. Crie uma credencial, se necessário e, em seguida, use o menu Visualizar credenciais para ver o formato JSON. Use o valor de resource_instance_id.

Para uso com APIs curl, é necessário apenas o UUID que inicia após o último dois pontos único e termina antes dos dois pontos duplos finais. Por exemplo, o ID crn:v1:bluemix:public:cloud-object-storage:global:a/81caa0254631ce5f9330ae427618f209:39d8d161-22c4-4b77-a856-f11db5130d7d:: pode ser abreviado como 39d8d161-22c4-4b77-a856-f11db5130d7d.

Listar depósitos

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

Incluir um depósito

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

Incluir um depósito (classe de armazenamento)

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

Uma lista de códigos válidos para LocationConstraint pode ser referenciada no guia Classes de armazenamento.

Criar um CORS de depósito

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

O cabeçalho Content-MD5 precisa ser a representação binária de um hash MD5 codificado em base64.

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

Obter um CORS de depósito

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

Excluir um CORS de depósito

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

Listar objetos

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

Obter cabeçalhos do depósito

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

Obter metadados do depósito

O uso do terminal da API de configuração não é o mesmo que o terminal para o seu próprio depósito O uso desse comando retorna metadados para o depósito especificado.

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

Excluir um depósito

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

Fazer upload de um objeto

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

Obter cabeçalhos de um objeto

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

Copiar um objeto

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

Verificar informações do CORS

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

Fazer download de um objeto

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

Verificar a ACL do objeto

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

Ativar um firewall

O uso do terminal da API de configuração não é o mesmo que o terminal para o seu próprio depósito O uso desse comando ativa um firewall para o depósito especificado. Nenhum outro serviço do IBM Cloud® pode acessar o depósito quando o firewall está ativo.

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

Ativar o rastreamento de atividade

Observe que o uso do terminal da API de configuração não é o mesmo que o terminal de seu próprio depósito. O uso desse comando ativa o rastreamento de atividade para o depósito 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}'

Permitir acesso anônimo a um 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"

Excluir um objeto

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

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

O cabeçalho Content-MD5 precisa ser a representação binária de um hash MD5 codificado em base64.

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

Iniciar um upload de múltiplas partes

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

Fazer upload de uma 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)"

Concluir um upload de múltiplas 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>"

Obter uploads de múltiplas partes incompletos

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

Parar uploads incompletos de múltiplas partes

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

Configurar um website 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 um lembrete, o cabeçalho Content-MD5 precisa ser a representação binária de um hash base64-encoded MD5.

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

Próximas etapas

A descrição detalhada da API RESTful para IBM Cloud Object Storage pode ser localizada na documentação da API de compatibilidade S3 ou na Documentação da API de configuração.