Lorsque j'essaie de déployer un compartiment Amazon Simple Storage Service (Amazon S3) via une pile AWS CloudFormation, une erreur se produit.
Brève description
Pour les compartiments récemment créés, Amazon S3 active ObjectOwnership et le définit par défaut sur BucketOwnerEnforced. Ce paramètre désactive les listes de contrôles d'accès (ACL), et le propriétaire du compartiment possède immédiatement tous les objets du compartiment et en a le contrôle total. Par conséquent, les déploiements qui tentent d'invoquer des ACL avec ce paramètre génèrent l'erreur suivante :
Bucket cannot have ACLs set with ObjectOwnership's BucketOwnerEnforced setting (Service: Amazon S3; Status Code: 400; Error Code: InvalidBucketAclWithObjectOwnership; Request ID: VCC82DDB; S3 Extended Request ID: itIVupTUTYxdhtOqXHTRxiwthYK4I/AvFqgNCWSqs8=; Proxy: null)
Par exemple, le modèle de déploiement suivant entraîne cette erreur :
AWSTemplateFormatVersion: "2010-09-09"
Resources:
PortalBucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: LogDeliveryWrite
VersioningConfiguration:
Status: Enabled
WebsiteConfiguration:
IndexDocument: 'index.html'
ErrorDocument: 'error.html'
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
Pour résoudre ce problème, modifiez la valeur de ObjectOwnership pour le compartiment afin d'autoriser les ACL.
**Important :**Il n'est pas recommandé d'utiliser des ACL pour Amazon S3. Si votre cas d'utilisation nécessite des ACL, reportez-vous aux étapes suivantes de résolution pour les autoriser.
Résolution
- Définissez la valeur de ObjectOwnership sur ObjectWriter ou BucketOwnerPreferred.
- Pour déployer votre compartiment S3, utilisez le modèle suivant :
AWSTemplateFormatVersion: "2010-09-09"
Resources:
PortalBucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: LogDeliveryWrite
VersioningConfiguration:
Status: Enabled
WebsiteConfiguration:
IndexDocument: 'index.html'
ErrorDocument: 'error.html'
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
OwnershipControls:
Rules:
- ObjectOwnership: ObjectWriter
Ainsi, vous activez les ACL sur le compartiment.
Pour plus d'informations sur le comportement par défaut d'Amazon S3 avec les ACL, consultez la sectionHeads-up (En vedette) : Des modifications de sécurité d'Amazon S3 seront apportées en avril 2023.