TerraformでCloudFrontを構築時に、S3ログ出力設定でACL有効化が抜けていてエラーになったこと
こんにちは、ゲームソリューション部のsoraです。
今回は、TerraformでCloudFrontを構築時に、S3ログ出力設定でACL有効化が抜けていてエラーになったことについて書いていきます。
発生したエラー
TerraformでCloudFrontのログをS3に出力するように設定しようとしたときに以下エラーが出ました。
Error: creating CloudFront Distribution: InvalidArgument: The S3 bucket that you specified for CloudFront logs does not enable ACL access: … │ status code: 400, request id: …
S3バケットポリシーにてCloudFrontからのアクセスを許可していましたが、権限が足りてないっぽいです。
CloudFrontのS3へのログ出力
調べてみると、説明されているブログがありました。
CloudFrotnのログについては、アクセス制御はACLで行いACLの有効化が必要なため、Terraformのコードを修正していきます。
# バケット作成 resource aws_s3_bucket logs { bucket = "cf-logs-xxxxxxxx" } ### 以下追加箇所 ### # バケットポリシーではなく、ACLにて制御する # オブジェクト所有者の設定 resource aws_s3_bucket_ownership_controls logs { bucket = aws_s3_bucket.logs.id rule { object_ownership = "BucketOwnerPreferred" } } # ACLを設定 resource aws_s3_bucket_acl logs { bucket = aws_s3_bucket.logs.id acl = "private" depends_on = [ aws_s3_bucket_ownership_controls.logs ] }
上記の設定を入れることで、CloudFrontのログをS3に出力できました。
最後に
今回は、TerraformでCloudFrontを構築時に、S3ログ出力設定でACL有効化が抜けていてエラーになったことを記事にしました。
どなたかの参考になると幸いです。