Résolution des problèmes - Amazon Simple Storage Service

Résolution des problèmes

Lorsque vous appliquez le paramètre appliqué par le propriétaire du compartiment pour la propriété d'objet S3, les listes de contrôle d'accès (ACL) sont désactivées et vous, en tant que propriétaire du compartiment, possédez automatiquement tous les objets dans votre compartiment. Les listes ACL n'affectent plus les autorisations sur les objets dans votre compartiment. Vous pouvez utiliser des politiques pour accorder des autorisations. Toutes les demandes PUT S3 doivent spécifier des listes ACL de contrôle total du propriétaire du compartiment ou ne pas spécifier une liste ACL, sinon elles échouent. Pour plus d'informations, consultez Consultez Contrôle de la propriété des objets et désactivation des listes ACL pour votre compartiment.

Si une liste ACL non valide est spécifiée ou si les autorisations ACL de compartiment accordent un accès hors de votre Compte AWS, les erreurs suivantes peuvent s'afficher.

AccessControlListNotSupported

Une fois que vous avez appliqué le paramètre bucket owner enforced (propriétaire du compartiment imposé) pour la propriété de l'objet, les listes ACL sont désactivées. Les demandes de définition des listes ACL ou de mise à jour des listes ACL échouent avec une erreur 400 et renvoient le code d'erreur AccessControlListNotSupported. Les demandes de lecture de listes ACL sont toujours prises en charge. Les demandes de lecture des listes ACL renvoient toujours une réponse qui affiche un contrôle total pour le propriétaire du compartiment. Dans vos opérations PUT, vous devez spécifier des listes ACL de contrôle total du propriétaire du compartiment ou ne pas spécifier une liste ACL, sans quoi vos opérations PUT échouent.

L'opération put-object suivante est un exemple qui utilise la AWS CLI et inclut la liste ACL public-read prédéfinie.

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

Si le compartiment utilise le paramètre appliqué par le propriétaire du compartiment pour désactiver les listes ACL, cette opération échoue et le chargeur reçoit le message d'erreur suivant :

Une erreur s'est produite (AccessControlListNotSupported) lors de l'appel de l'opération PutObject : Le compartiment n'autorise pas les listes ACL

InvalidBucketAclWithObjectOwnership

Si vous souhaitez appliquer le paramètre appliqué par le propriétaire du compartiment pour désactiver les listes ACL, votre liste ACL de compartiment doit donner le contrôle total uniquement au propriétaire du compartiment. La liste ACL de votre compartiment ne peut pas accorder l'accès à un Compte AWS externe ou à un autre groupe. Par exemple, si votre demande CreateBucket définit le paramètre appliqué par le propriétaire du compartiment et spécifie une liste ACL de compartiment qui donne accès à un Compte AWS externe, votre demande échoue avec une erreur 400 et renvoie le code d'erreur InvalidBucketAclWithObjectOwnership. De même, si votre demande PutBucketOwnershipControls définit le paramètre appliqué par le propriétaire du compartiment sur un compartiment doté d'une liste ACL de compartiment qui accorde des autorisations à d'autres utilisateurs, la demande échoue.

Exemple : Une liste ACL de compartiment existante accorde un accès public en lecture.

Par exemple, si une liste ACL de compartiment existante accorde un accès public en lecture, vous ne pouvez pas appliquer le paramètre appliqué par le propriétaire du compartiment pour la propriété d'objet tant que vous n'avez pas migré ces autorisations ACL vers une stratégie de compartiment et que vous n'avez pas réinitialisé la liste ACL de votre compartiment à la liste ACL privée par défaut. Pour plus d'informations, consultez Conditions préalables à la désactivation des listes ACL.

Cet exemple de liste ACL de compartiment existante accorde un accès public en lecture.

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

Cet exemple d'opération put-bucket-ownership-controls de AWS CLI applique le paramètre appliqué par le propriétaire du compartiment pour la propriété d'objet :

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

Étant donné que la liste ACL du compartiment accorde un accès public en lecture, la demande échoue et renvoie le code d'erreur suivant :

Une erreur s'est produite (InvalidBucketAclWithObjectOwnership) lors de l'appel de l'opération PutBuckeTownershipControls : le compartiment ne peut pas avoir de listes ACL définie avec le paramètre BucketOwnerEnforced de ObjectOwnership