エラー内容
TerraformでCloudFrontにWeb ACLを付与しようとした際にプロビジョニングエラーが発生しました。
resource "aws_cloudfront_distribution" "sample" {
web_acl_id = ${var.waf_web_acl_id} # ex) bbbbbbbb-xxxx-yyyy-zzzz-aaaaaaaaaaa
}
Error: error creating CloudFront Distribution: InvalidWebACLId: Web ACL is not accessible by the requester.
status code: 400, request id: 1815419a-666c-4b68-8bbe-10a5b77
対応策
AWS WAF v2を使用している場合
AWS WAF v2を使用している場合、web_acl_id
にACL IDを指定するとエラーとなります。
そこで、V2ではACLのarnを指定します。
resource "aws_cloudfront_distribution" "sample" {
web_acl_id = ${var.waf_web_acl_arn} #ex) arn:aws:wafv2:us-east-1:xxxxxxxxx:global/webacl/xxxxxxxxxx/xxxxxxxxxxx",
}
AWS WAF v1を使用している場合
AWS WAF v1を使用している場合にエラーが出る場合はTerraformを実行するIAMユーザーの権限不足が考えられます。
waf:GetWebACL
権限を付与します。
【参考】AWS SDKからWAF付きのCloudFrontを作成する時に、’Web ACL is not accessible by the requester.’が出た時の対応覚書