Risoluzione dei problemi - Amazon Simple Storage Service

Risoluzione dei problemi

Quando si esegue l'impostazione proprietario del bucket applicato per S3 Object Ownership, le liste di controllo accessi (ACL) vengono disabilitate e tu, in qualità di proprietario del bucket, possiedi automaticamente tutti gli oggetti nel bucket. Le ACL non influiscono più sulle autorizzazioni per gli oggetti nel bucket. Puoi utilizzare le policy per concedere autorizzazioni. Tutte le richieste PUT S3 devono specificare le ACL di controllo completo del proprietario del bucket o non specificare un'ACL, altrimenti avranno esito negativo. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disabilitazione degli ACL per il bucket.

Se viene specificato un'ACL non valida o le autorizzazioni ACL del bucket garantiscono l'accesso al di fuori del tuo Account AWS, potrebbero essere visualizzate le seguenti risposte di errore.

AccessControlListNotSupported

Dopo aver eseguito l'impostazione proprietario del bucket applicato per Object Ownership, le ACL vengono disabilitate. Le richieste di impostazione delle ACL o di aggiornamento delle ACL saranno respinte con un errore 400 e restituiranno il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate. Le richieste di lettura delle ACL restituiscono sempre una risposta che mostra il pieno controllo per il proprietario del bucket. Nelle operazioni PUT è necessario specificare le ACL di controllo completo del proprietario del bucket o non specificare completamente un'ACL, altrimenti le operazioni PUT avranno esito negativo.

Di seguito è riportata un'operazione put-object di esempio che include l'ACL predefinita public-read utilizzando la AWS CLI.

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

Se il bucket utilizza l'impostazione proprietario del bucket applicato per disabilitare le ACL, questa operazione avrà esito negativo e l'uploader riceverà il seguente messaggio di errore:

Si è verificato un errore (AccessControlListNotSupported) durante la chiamata dell'operazione PutObject: il bucket non consente ACL

InvalidBucketAclWithObjectOwnership

Se si desidera eseguire l'impostazione proprietario del bucket applicato per disabilitare le ACL, l'ACL di bucket dovrà dare il pieno controllo solo al proprietario del bucket. Il tuo ACL di bucket non può consentire l'accesso a un Account AWS esterno o a qualsiasi altro gruppo. Ad esempio, se la tua richiesta CreateBucket imposta il proprietario del bucket applicato e specifica un ACL di bucket che fornisce l'accesso a un Account AWS esterno, la tua richiesta sarà respinta con un errore 400 e restituirà il codice di errore InvalidBucketAclWithObjectOwnership. Allo stesso modo, se la tua richiesta PutBucketOwnershipControls imposta il proprietario del bucket applicato su un bucket con un ACL di bucket che concede autorizzazioni ad altri, la richiesta avrà esito negativo.

Esempio : l'ACL del bucket esistente concede l'accesso pubblico in lettura

Ad esempio, se un ACL di bucket esistente concede l'accesso pubblico in lettura, non sarà possibile eseguire l'impostazione proprietario del bucket applicato per Object Ownership finché non si migrano queste autorizzazioni ACL a una policy di bucket e si reimposta l'ACL di bucket sull'ACL privata di default. Per ulteriori informazioni, consulta Prerequisiti per la disabilitazione delle ACL.

Questo esempio di ACL di bucket concede l'accesso pubblico in lettura:

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

Questo esempio di operazione AWS CLI put-bucket-ownership-controls esegue l'impostazione proprietario del bucket applicato per Object Ownership:

aws s3api put-bucket-ownership-controls --bucket DOC-EXAMPLE-BUCKET --ownership-controls Rules=[{ObjectOwnership=BucketOwnerEnforced}]

Poiché l'ACL del bucket consente l'accesso pubblico in lettura, la richiesta sarà respinta e restituirà il seguente codice di errore:

Si è verificato un errore (invalidBucketACLWithObjecTownership) durante la chiamata all'operazione PutBucketOwnershipControls: il bucket non può avere ACL con l'impostazione BucketOwnerEnforced di ObjectOwnership