Solução de problemas
Ao adotar a configuração Imposto pelo proprietário do bucket para a Propriedade de Objetos do S3, as listas de controle de acesso (ACLs) serão desabilitadas e, como proprietário do bucket, você assumirá a propriedade de todos os objetos no bucket. As ACLs não afetam mais as permissões dos objetos do bucket. Você pode usar políticas para conceder permissões. Todas as solicitações PUT
do S3 devem especificar a ACL predefinida bucket-owner-full-control
ou não especificar uma ACL, senão essas solicitações falharão. Para ter mais informações, consulte Controlar a propriedade de objetos e desabilitar ACLs para seu bucket.
Se uma ACL inválida for especificada ou se as permissões de ACL de bucket concederem acesso fora de sua Conta da AWS, você poderá ver as respostas de erro a seguir.
AccessControlListNotSupported
Ao adotar a configuração Imposto pelo proprietário do bucket em Propriedade de objeto, as ACLs são desabilitadas. Solicitações para definir ACLs ou atualizar ACLs falham com um erro 400
e retornam o código de erro AccessControlListNotSupported
. Ainda há suporte para solicitações de leitura de ACLs. As solicitações de leitura para ACLs sempre retornam uma resposta que mostra controle total para o proprietário do bucket. Nas operações PUT
, é necessário especificar ACLs de controle total do proprietário do bucket ou não especificar uma ACL. Caso contrário, as operações PUT
falharão.
O exemplo de comando put-object
da AWS CLI a seguir inclui a ACL public-read
predefinida.
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyobject-key-name
--bodydoc-example-body
--acl public-read
Se o bucket usar a configuração Imposto pelo proprietário do bucket para desabilitar ACLs, essa operação falhará, e a pessoa que carregar receberá esta mensagem de erro:
An error occurred (AccessControlListNotSupported) when calling the PutObject operation: The bucket does not allow ACLs
(Ocorreu um erro [AccessControlListNotSupported] ao chamar a operação PutObject: o bucket não permite ACLs)
InvalidBucketAclWithObjectOwnership
Para adotar a configuração Imposto pelo proprietário do bucket para desabilitar ACLs, a ACL do bucket deverá dar controle total somente ao proprietário do bucket. Sua ACL de bucket não pode dar acesso a uma Conta da AWS externa ou a qualquer outro grupo. Por exemplo, se a solicitação CreateBucket
definir a configuração aplicada pelo proprietário do bucket e especificar uma ACL de bucket que fornece acesso a uma Conta da AWS externa, a solicitação apresentará o erro 400
e retornará o código de erro InvalidBucketAclWithObjectOwnership
. Da mesma forma, se a solicitação PutBucketOwnershipControls
definir a configuração aplicada pelo proprietário do bucket em um bucket que tem uma ACL de bucket que concede permissões a outros, a solicitação falhará.
exemplo : ACL de bucket existente concede acesso público de leitura
Por exemplo, se uma ACL de bucket existente conceder acesso público de leitura, não será possível adotar a configuração Imposto pelo proprietário do bucket para Propriedade de objeto enquanto essas permissões de ACL não forem migradas para uma política de bucket e sua ACL de bucket não for redefinida para a ACL privada padrão. Para obter mais informações, consulte Pré-requisitos para desabilitar ACLs.
Este exemplo de ACL de bucket concede acesso público de leitura:
{ "Owner": { "ID": "
852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] }
O exemplo a seguir do comando put-bucket-ownership-controls
da AWS CLI adota a configuração Imposto pelo proprietário do bucket para Propriedade de objeto:
aws s3api put-bucket-ownership-controls --bucket
amzn-s3-demo-bucket
--ownership-controls Rules=[{ObjectOwnership=BucketOwnerEnforced}]
Como a ACL de bucket concede acesso público de leitura, a solicitação falha e retorna o seguinte código de erro:
An error occurred (InvalidBucketAclWithObjectOwnership) when calling the PutBucketOwnershipControls operation: Bucket cannot have ACLs set with ObjectOwnership's BucketOwnerEnforced setting
(Ocorreu um erro [InvalidBucketAclWithObjectOwnership] ao chamar a operação PutBucketOwnershipControls: o bucket não pode ter ACLs definidas com a configuração BucketOwnerEnforced do ObjectOwnership