Resolución de problemas
Cuando aplica la configuración de propietario del bucket obligatorio de S3 Object Ownership, las listas de control de acceso (ACL) se desactivan y, como propietario del bucket, automáticamente tiene la propiedad de todos los objetos del bucket. Las ACL ya no afectan a los permisos de los objetos del bucket. Puede utilizar políticas para conceder permisos. Todas las solicitudes PUT
de S3 deben especificar la ACL bucket-owner-full-control
predefinida o no especificar ninguna ACL, pues si no estas solicitudes fallarán. Para obtener más información, consulte Control de la propiedad de los objetos y desactivación de las ACL del bucket.
Si se especifica una ACL no válida o los permisos de ACL del bucket conceden acceso fuera de la Cuenta de AWS, es posible que vea las siguientes respuestas de error.
AccessControlListNotSupported
Después de aplicar la configuración Aplicada al propietario del bucket de Propiedad de objetos, las ACL se desactivan. Las solicitudes de configuración o actualización de ACL fallan con un error 400
y devuelven el código de error AccessControlListNotSupported
. Las solicitudes de lectura de ACL siguen siendo compatibles. Las solicitudes de lectura de ACL siempre devuelven una respuesta que muestra el control total del propietario del bucket. En las operaciones PUT
, debe especificar las ACL de control total del propietario del bucket o no especificar una ACL. De lo contrario, se producirá un error en las operaciones PUT
.
El siguiente comando de ejemplo put-object
AWS CLI incluye la ACL predefinida public-read
.
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyobject-key-name
--bodydoc-example-body
--acl public-read
Si el bucket utiliza la configuración Aplicada al propietario del bucket para desactivar las ACL, esta operación genera un error y el cargador recibe el siguiente mensaje de error:
An error occurred (AccessControlListNotSupported) when calling the PutObject operation: The bucket does not allow ACLs
(Se produjo un error (AccessControlListNotSupported) al llamar a la operación PutObject: el bucket no permite ACL)
InvalidBucketAclWithObjectOwnership
Si desea aplicar la configuración Aplicada al propietario del bucket para desactivar las ACL, la ACL del bucket debe otorgar control total únicamente al propietario del bucket. La ACL del bucket no puede dar acceso a una Cuenta de AWS externa ni a otro grupo. Por ejemplo, si la solicitud CreateBucket
establece Aplicada al propietario del bucket y especifica una ACL de bucket que proporciona acceso a una Cuenta de AWS externa, se produce un error 400
en la solicitud y se devuelve el código de error InvalidBucketAclWithObjectOwnership
. Del mismo modo, si la solicitud PutBucketOwnershipControls
establece Aplicada al propietario del bucket en un bucket que tiene una ACL de bucket que concede permisos a otros, la solicitud falla.
ejemplo : ACL de bucket existente concede acceso público de lectura
Por ejemplo, si una ACL de bucket existente concede acceso público de lectura, no se puede aplicar la configuración Aplicada al propietario del bucket de Propiedad de objetos hasta que migre estos permisos de ACL a una política de bucket y restablezca la ACL del bucket a la ACL privada predeterminada. Para obtener más información, consulte Requisitos previos para desactivar las ACL.
En este ejemplo, la ACL de bucket concede acceso público de lectura:
{ "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" } ] }
El siguiente comando de ejemplo put-bucket-ownership-controls
de la AWS CLI aplica la configuración Aplicada al propietario del bucket para Propiedad de objetos:
aws s3api put-bucket-ownership-controls --bucket
amzn-s3-demo-bucket
--ownership-controls Rules=[{ObjectOwnership=BucketOwnerEnforced}]
Dado que la ACL del bucket concede acceso público de lectura, la solicitud falla y devuelve el siguiente código de error:
An error occurred (InvalidBucketAclWithObjectOwnership) when calling the PutBucketOwnershipControls operation: Bucket cannot have ACLs set with ObjectOwnership's BucketOwnerEnforced setting
(Se produjo un error (InvalidBucketAclWithObjectOwnership) al llamar a la operación PutBucketOwnershipControls: el bucket no puede tener ACL con la configuración ObjectOwnership's BucketOwnerEnforced)