この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
AWS事業本部@福岡オフィスの梶原です。WAFv1まではlist-distributions-by-web-acl-id を使えばいいじゃないと思ってました。
こんな感じです。
WebACLId="XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX"
aws cloudfront list-distributions-by-web-acl-id --web-acl-id $WebACLId
https://docs.aws.amazon.com/cli/latest/reference/cloudfront/list-distributions-by-web-acl-id.html
WAF v1であれば、このコマンドで問題なかったのですが、WAFv2に移行した際に、現時点(2020/08/27)ではWAFv2は対応していないようで取得できませんでした。 すでに、Issueが上がっていましたので、近いうちに対応されるのではないかなと思います。
'cloudfront list-distributions-by-web-acl-id' only works for wafv1 acls #5418 https://github.com/aws/aws-cli/issues/5418
対応されるまでのつなぎとなってしまいますが、以下のコマンドで同じような結果が得られますので、必要な方はご活用いただければと思います。
WAFv2が設定されているCloudFrontディストリビューション(JSON)
WebACLId="XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX"
aws cloudfront list-distributions \
--query "DistributionList.Items[?contains(WebACLId,'$WebACLId')]" \
--output json
[
{
"Id": "XXXXXXXXXXX",
"ARN": "arn:aws:cloudfront::123456789012:distribution/XXXXXXXXXXX",
"Status": "Deployed",
<<省略>>
},
"WebACLId": "arn:aws:wafv2:us-east-1:123456789012:global/webacl/wafv2-webacl/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX",
<<省略>>
WAFv2が設定されているCloudFrontディストリビューション(TABLE形式(出力項目絞り込みあり))
WebACLId="XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX"
aws cloudfront list-distributions \
--query "DistributionList.Items[?contains(WebACLId,'$WebACLId')].[Id, Aliases.Items|[0], WebACLId]" \
--output table
------------------------------------------------------------------------------------------------------------------------------------------------------+
| ListDistributions |
+----------------+---------------------------+--------------------------------------------------------------------------------------------------------+
| AAAAAAAAAAAAA | www.exsample.com | arn:aws:wafv2:us-east-1:123456789012:global/webacl/wafv2-webacl/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX |
<<省略>>
WAFv2が設定されていないCloudFrontディストリビューションのリスト(JSON)
aws cloudfront list-distributions \
--query "DistributionList.Items[?WebACLId=='']"
WAFv2が設定されていないCloudFrontディストリビューションのリスト(TABLE形式(出力項目絞り込みあり))
aws cloudfront list-distributions \
--query "DistributionList.Items[?WebACLId==''].[Id, Aliases.Items|[0], WebACLId]" \
--output table
---------------------------------------------------------------
| ListDistributions |
+-----------------+---------------------------------------+---+
| XXXXXXXXXXX | www.hogehoge.com | |
+-----------------+---------------------------------------+---+
CloudFront用のWAFv2 ACL一覧
ちなみに、絞り込みに必要なAWS WAFのACL ID は以下で取得できますので合わせてご活用ください
aws wafv2 list-web-acls --scope=CLOUDFRONT --region=us-east-1 \
--query "WebACLs[].[Name, Id]" \
--output table
-------------------------------------------------------------------------
| ListWebACLs |
+------------------------------+----------------------------------------+
| wafv2-webacl-prd | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
| wafv2-webacl-dev | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
+------------------------------+----------------------------------------+
参考情報
https://docs.aws.amazon.com/cli/latest/reference/cloudfront/list-distributions-by-web-acl-id.html
'cloudfront list-distributions-by-web-acl-id' only works for wafv1 acls #5418 https://github.com/aws/aws-cli/issues/5418