Risoluzione dei problemi - Amazon Simple Storage Service

Risoluzione dei problemi

Quando esegui l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, le liste di controllo degli 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 l'ACL predefinita bucket-owner-full-control o non specificare una ACL; in caso contrario non andranno a buon fine. 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 applicato l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto, 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 un'ACL. Altrimenti, le tue operazioni PUT falliranno.

Il seguente comando di esempio put-object AWS CLI include l'ACL predefinito public-read.

aws s3api put-object --bucket amzn-s3-demo-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 non va a buon fine e l'uploader riceve il seguente messaggio di errore:

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

InvalidBucketAclWithObjectOwnership

Se desideri applicare l'impostazione Proprietario del bucket applicato per disabilitare le ACL, l'ACL bucket dovrà fornire il controllo completo 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 bucket esistente concede l'accesso pubblico in lettura, non potrai applicare l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto finché queste autorizzazioni ACL non vengono migrate a una policy del bucket e l'ACL bucket non viene ripristinata 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 comando put-bucket-ownership-controls AWS CLI applica l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto:

aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-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