📑

AWS CDKでCloudFrontのログ設定でうまく行かなかった

2023/04/25に公開

先日からAWS CDKを利用しているのですが、開発環境のAWSと本番環境のAWSでCDKの反映時にCloudFrontのログ設定がエラーになったりならなかったりしたのでメモとして残しておく。

どんなエラーか

ROLLBACK_COMPLETE: Resource handler returned message: "Invalid request provided: AWS::CloudFront::Distribution: The S3 bucket that you specified for CloudFront logs does not enable ACL access: 対象のログBucket

簡単に言えば、ACL Accessを有効にしろという話でした。

解決

色々調べてみたところ、objectOwnershipというプロパティがあるようでこちらでBUCKET_OWNER_ENFORCED が指定されてるとACLが無効になるそう。AWSはこちらの設定を推奨しているようなので、指定しなかったら勝手にこれに設定されるようになったとか・・・?

https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-s3.ObjectOwnership.html

以下のようにOwnershipを指定することで上記のエラーは出ないようになりました。

const LogBucket = new s3.Bucket(this, 'CreateLogBucket', {
    bucketName: 'LogBucketName',
    removalPolicy: cdk.RemovalPolicy.RETAIN,
    objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_PREFERRED,
})

やったね。

Discussion