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

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes

Lorsque vous appliquez le paramètre Propriétaire du compartiment appliqué pour Propriété d’objets 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 S3 PUT doivent spécifier la liste ACL prédéfinie bucket-owner-full-control ou ne pas spécifier de liste ACL, sinon ces demandes é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 Propriétaire du compartiment appliqué pour Propriété d'objets, les listes ACL sont désactivées. Les demandes de définition ou de mise à jour des listes de contrôle d'accès échouent avec une 400 erreur et renvoient le code AccessControlListNotSupportedd'erreur. 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 de liste ACL. Dans le cas contraire, vos opérations PUT échouent.

L'exemple de put-object AWS CLI commande suivant inclut l'public-readACL 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 Propriétaire du compartiment appliqué 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'PutObject opération : le bucket n'autorise pas les ACL

InvalidBucketAclWithObjectOwnership

Si vous souhaitez appliquer le paramètre Propriétaire du compartiment appliqué pour désactiver les listes ACL, votre liste ACL de compartiment doit donner le contrôle total uniquement au propriétaire du compartiment. L'ACL de votre bucket ne peut pas donner accès à un groupe externe Compte AWS ou à un autre groupe. Par exemple, si votre CreateBucket demande impose le nom du propriétaire du bucket et spécifie une ACL du bucket qui donne accès à une Compte AWS adresse externe, votre demande échoue avec une 400 erreur et renvoie le code InvalidBucketAclWithObjectOwnershipd'erreur. 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 Propriétaire du compartiment appliqué pour Propriété d'objets tant que vous n'avez pas migré ces autorisations ACL vers une politique de compartiment et que vous n'avez pas réinitialisé votre liste ACL de 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" } ] }

L'exemple de put-bucket-ownership-controls AWS CLI commande suivant applique le paramètre imposé par le propriétaire du bucket pour Object Ownership :

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' PutBucketOwnershipControls opération : les ACL du bucket ne peuvent pas être définies avec ObjectOwnership le paramètre BucketOwnerEnforced