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.