Os metadados de objetos descrevem as propriedades de um objeto e são divididos em dois tipos: headers HTTP padrão e metadados definidos pelo usuário. Utilize os headers HTTP para personalizar políticas de requisições HTTP e os metadados definidos pelo usuário para identificar a finalidade ou os atributos de um objeto. Com o comando set-meta, é possível definir, modificar ou excluir metadados de objetos já enviados.
Observações de uso
Para definir metadados de um único objeto, você precisa das permissões
oss:GetObject,oss:PutObject,oss:GetObjectVersioneoss:GetObjectAcl. Já para definir metadados de vários objetos em uma operação em lote, são necessárias as permissõesoss:GetObject,oss:PutObject,oss:GetObjectVersioneoss:ListObjects. Para mais informações, consulte Attach a custom access policy to a RAM user.No ossutil 1.6.16 e versões posteriores, use ossutil como nome do binário na linha de comando, sem necessidade de alteração conforme o sistema operacional. Caso utilize uma versão anterior à 1.6.16, substitua o nome do binário de acordo com seu sistema operacional. Para mais informações, consulte ossutil command reference.
Após definir ou atualizar os metadados de um objeto com o comando set-meta, visualize-os por meio do comando stat. Para mais informações, consulte stat.
Sintaxe do comando
ossutil set-meta oss://bucketname[/prefix]
[header:value#header:value...]
[--update]
[--delete]
[-r, --recursive]
[-f, --force]
[--object-file <value>]
[--snapshot-path <value>]
[--disable-ignore-error]
[--version-id <value>]
[--include <value>]
[--exclude <value>]
A tabela a seguir descreve os parâmetros e opções disponíveis:
|
Parâmetro ou opção |
Descrição |
|
bucketname |
Nome do bucket. |
|
prefix |
Recursos dentro de um bucket, incluindo pastas e arquivos. |
|
header:value#header:value... |
Metadados especificados como pares chave-valor. As chaves dos headers não diferenciam maiúsculas de minúsculas, mas os valores fazem essa distinção. Para definir múltiplos headers de metadados, separe-os pelo caractere cerquilha (#). Exemplo: Os seguintes headers estão disponíveis:
Para mais detalhes sobre o uso de headers, consulte Gerencie metadados de objetos. |
|
--update |
Atualize os metadados do objeto. Esta opção pode ser abreviada como -u e não pode ser combinada com a opção --delete. |
|
--delete |
Exclua os metadados do objeto. Não é possível utilizar esta opção juntamente com --update. |
|
-r, --recursive |
Defina metadados para todos os objetos que correspondem ao prefixo especificado. Sem essa opção, o ossutil aplica os metadados apenas ao objeto indicado. |
|
-f, --force |
Força a execução da operação sem solicitar confirmação. |
|
--object-file |
Utilize esta opção para definir, atualizar ou excluir metadados de múltiplos objetos em uma operação em lote. Siga o procedimento abaixo:
Nota
Caso ocorra um erro em algum objeto, o ossutil registra a mensagem de erro no arquivo de relatório e prossegue com a operação nos demais objetos. Informações sobre objetos processados com sucesso não constam no relatório. |
|
--snapshot-path |
Ao especificar esta opção, um snapshot é gerado exclusivamente para os objetos da operação atual. Se já existir um snapshot para determinado objeto, a operação será ignorada para esse item. Nota
Esta opção deve ser usada em conjunto com -r, --recursive ou --object-file. |
|
--disable-ignore-error |
Não ignora erros durante operações em lote. |
|
--version-id |
ID da versão do objeto. Esta opção aplica-se somente a objetos em buckets com versionamento ativado ou suspenso. |
|
--include |
Inclui todos os objetos que atendem à condição especificada. Para mais informações, consulte The --include and --exclude options. |
|
--exclude |
Nenhum objeto atende às condições especificadas. Para mais informações, consulte The --include and --exclude options. |
Defina ou atualize metadados
Nos exemplos a seguir que não incluem a opção --update, caso você não especifique a opção header:value#header:value..., apenas os metadados definidos pelo usuário iniciados com X-Oss-Meta- são mantidos, preservando seus valores originais. Para headers HTTP, o ossutil entra em modo interativo e solicita que você confirme se deseja mantê-los.
-
Exemplo 1: Defina ou atualize metadados de um único objeto
-
Defina a lista de controle de acesso (ACL) do arquivo exampleobject.txt no bucket examplebucket como privada.
ossutil set-meta oss://examplebucket/exampleobject.txt X-Oss-Object-Acl:private -
Defina a classe de armazenamento de uma versão específica do objeto exampleobject.txt no bucket examplebucket como Standard.
ossutil set-meta oss://examplebucket/exampleobject.txt X-Oss-Storage-Class:Standard --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk -
Configure a classe de armazenamento de uma versão específica do objeto exampleobject.txt no bucket examplebucket como Cold Archive.
ossutil set-meta oss://examplebucket/exampleobject.txt X-Oss-Storage-Class:ColdArchive --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRkNotaA classe de armazenamento não é alterada durante a execução do comando set-meta. A mudança entra em vigor somente após a conclusão do comando.
Para saber como obter as versões de um objeto, consulte ls.
-
Atualize a ACL do objeto exampleobject.txt no bucket examplebucket para public-read.
ossutil set-meta oss://examplebucket/exampleobject.txt X-Oss-Object-Acl:public-read --updateAo utilizar a opção --update, somente os metadados dos headers especificados são atualizados. Os valores desses headers são substituídos, enquanto todos os outros metadados existentes no objeto permanecem inalterados. Por exemplo, o comando atualiza apenas a ACL do objeto exampleobject.txt para public-read, preservando os demais metadados.
-
-
Exemplo 2: Defina ou atualize metadados de múltiplos objetos na mesma pasta em uma operação em lote
Ao definir ou modificar metadados de vários objetos em lote, se ocorrer um erro em algum deles, o ossutil registrará a mensagem de erro correspondente em um arquivo de relatório dentro da pasta ossutil_output. Objetos processados com sucesso não aparecem nesse relatório.
-
Defina metadados para objetos correspondentes a um prefixo específico
Utilize a opção -r para alterar o comportamento de cache (Cache-Control) para no-cache e a ACL (x-oss-object-acl) para private em todos os objetos que correspondem ao prefixo
srcno bucket examplebucket.ossutil set-meta oss://examplebucket/src Cache-Control:no-cache#X-Oss-Object-Acl:private -r -
Modifique metadados de objetos que atendem a condições de filtro específicas
-
Use as opções -r e -u para alterar a classe de armazenamento para Infrequent Access (IA) em todos os objetos do tipo de arquivo .jpg localizados na pasta desfolder/ do bucket examplebucket.
ossutil set-meta oss://examplebucket/desfolder/ X-Oss-Storage-Class:IA --include "*.jpg" -u -r -
Empregue as opções -r e -u para mudar a classe de armazenamento para Archive Storage nos objetos da pasta desfolder/ do bucket examplebucket, desde que os nomes dos arquivos contenham abc e os tipos de arquivo não sejam .jpg nem .txt.
ossutil set-meta oss://examplebucket/desfolder/ X-Oss-Storage-Class:Archive --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -u -r
ImportanteAo usar o comando set-meta para alterar a classe de armazenamento de um objeto Cold Archive ou Deep Cold Archive maior que 100 MB, a operação pode falhar devido a timeout do servidor. Para modificar a classe de armazenamento desses objetos, utilize o comando cp.
-
-
-
Exemplo 3: Defina ou atualize metadados de múltiplos objetos na mesma pasta ou em pastas diferentes
-
Objetos em pastas diferentes
Para definir ou atualizar metadados de vários objetos situados em pastas distintas dentro de um bucket, siga estas etapas. Considere, por exemplo, que exampleobject1.jpg está na raiz do examplebucket, exampleobject2.png encontra-se na pasta dir1/ e exampleobject3.txt reside na pasta dir2/.
-
Escreva os nomes de múltiplos objetos em um arquivo local chamado localfile.txt para definir ou atualizar seus metadados.
exampleobject1.jpg dir1/exampleobject2.png dir2/exampleobject3.txt -
Defina ou atualize os metadados dos objetos especificados.
Utilize a opção --object-file para alterar o comportamento de cache (Cache-Control) para no-cache e a ACL (x-oss-object-acl) para private em múltiplos objetos do bucket examplebucket, habilitando também snapshots.
ossutil set-meta oss://examplebucket Cache-Control:no-cache#X-Oss-Object-Acl:private --update --object-file localfile.txt --snapshot-path dir/
-
-
Objetos na mesma pasta
-
Método 1
Consulte preceding example for objects in different folders para definir ou atualizar metadados de múltiplos objetos na mesma pasta.
-
Método 2
Consulte Example 2 para definir ou atualizar metadados de múltiplos objetos na mesma pasta.
-
-
-
Saída de exemplo
Se a operação for bem-sucedida, a saída exibirá o tempo decorrido. Veja um exemplo de saída abaixo:
0.106852(s) elapsed
Exclua metadados personalizados
A opção --delete remove apenas metadados personalizados que começam com X-Oss-Meta-.
-
Exemplo 1: Exclua metadados personalizados de um único objeto
Exclua os metadados personalizados iniciados com
X-Oss-Meta-do objeto exampleobject.txt no bucket examplebucket. O valor do header deve estar vazio.ossutil set-meta oss://examplebucket/exampleobject.txt X-Oss-Meta-Createdby --delete -
Exemplo 2: Exclua metadados personalizados de múltiplos objetos em uma operação em lote
Para excluir metadados personalizados de vários objetos em lote, siga este procedimento:
-
Insira os nomes dos objetos cujos metadados personalizados devem ser excluídos em um arquivo local chamado localfile.txt.
exampleobject1.jpg dir1/exampleobject2.png dir2/exampleobject3.txt -
Exclua os metadados personalizados dos objetos.
Utilize a opção --object-file para excluir em lote os metadados personalizados iniciados com
X-Oss-Meta-de múltiplos objetos no bucket examplebucket. O valor do header deve estar vazio.ossutil set-meta oss://examplebucket X-Oss-Meta-Location --delete --object-file localfile.txt --snapshot-path dir/
-
-
Saída de exemplo
Quando a operação é concluída com êxito, a saída mostra o tempo decorrido. Confira um exemplo:
0.106846(s) elapsed
Opções comuns
Para acessar um bucket em outra região, utilize -e para especificar o endpoint. Para acessar um bucket pertencente a outra conta Alibaba Cloud, use -i para o AccessKey ID e -k para o AccessKey secret.
Por exemplo, execute o comando abaixo para definir a ACL do objeto testobject.jpg como private. Esse objeto está no bucket testbucket, localizado na região China (Shanghai) e pertence a uma conta Alibaba Cloud diferente.
ossutil set-meta oss://testbucket/testobject.jpg X-Oss-Object-Acl:private -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret