Solução de problemas - Amazon Simple Storage Service

Solução de problemas

Ao adotar a configuração aplicada pelo proprietário do bucket em S3 Object Ownership, as listas de controle de acesso (ACLs) serão desabilitadas e, como proprietário do bucket, você assumirá a propriedade de todos os objetos de seu 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 ACLs de controle total do proprietário do bucket ou não especificar uma ACL, senão elas falharão. Para obter 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

Após adotar a configuração aplicada pelo proprietário do bucket em Object Ownership, 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, senão as operações PUT falharão.

O exemplo a seguir de operação put-object usando a AWS CLI inclui a ACL public-read pré-configurada.

aws s3api put-object --bucket DOC-EXAMPLE-BUCKET --key object-key-name --body doc-example-body --acl public-read

Se o bucket usar a configuração aplicada pelo proprietário do bucket para desabilitar ACLs, essa operação falhará, e a pessoa que fizer o carregamento 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)

InvalidBucketaClWithObjectTownership

Para adotar a configuração aplicada 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, sua 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 aplicada pelo proprietário do bucket para Object Ownership até migrar essas permissões de ACL para uma política de bucket e redefinir sua ACL de bucket 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" } ] }

Este exemplo de operação put-bucket-ownership-controls da AWS CLI adota a configuração aplicada pelo proprietário do bucket para Object Ownership:

aws s3api put-bucket-ownership-controls --bucket DOC-EXAMPLE-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