こんにちは。AWS CLIが好きな福島です。
今回は、CloudFrontに紐づくリソースを確認するコマンドをご紹介いたします。
実行環境
今回、コマンドを実行した環境は、以下の通りとなります。
(本記事でご紹介しているコマンドの中には、Linuxのコマンドを利用している箇所があります。)
# uname -a Linux LAPTOP-CNM26HN6 4.4.0-18362-Microsoft #1049-Microsoft Thu Aug 14 12:01:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux #
# aws --version aws-cli/2.1.27 Python/3.7.3 Linux/4.4.0-18362-Microsoft exe/x86_64.ubuntu.18 prompt/off
Origin
CloudFrontに紐づくOriginを確認するコマンドは、以下の通りです。
※3つのOriginだけ表示してます。
echo "CNAME DomainName Origin[1] Origin[2] Origin[3]" > /tmp/awscli.tmp;\ aws cloudfront list-distributions --query "DistributionList.Items[].\ [Aliases.Items[0],\ DomainName,\ Origins.Items[0].Id,\ Origins.Items[1].Id,\ Origins.Items[2].Id]" \ --output text >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
CNAME DomainName Origin[1] Origin[2] Origin[3] None xxxxxxxxxxxxx.cloudfront.net xx-xxx-xxx-s3 S3-xxxx-xxxxx-failover None www.xxxxx.cf xxxxxxxxxxxxx.cloudfront.net xxxxxx-alb-241750468 S3-xxx-texxxxxxxom-error None None xxxxxxxxxxxxx.cloudfront.net S3-fk-xxxx-test None None None xxxxxxxxxxxxx.cloudfront.net S3-fk-xxxx-test None None
OAI
CloudFrontに紐づくOAIを確認できるコマンドは、以下の通りです。
※3つのOAIだけ表示してます。
echo "CNAME DomainName OAI[1] OAI[2] OAI[3]" > /tmp/awscli.tmp;\ aws cloudfront list-distributions --query "DistributionList.Items[].\ [Aliases.Items[0],\ DomainName, \ Origins.Items[0].S3OriginConfig.OriginAccessIdentity, \ Origins.Items[1].S3OriginConfig.OriginAccessIdentity, \ Origins.Items[2].S3OriginConfig.OriginAccessIdentity]" \ --output text >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
CNAME DomainName OAI[1] OAI[2] OAI[3] None xxxxxxxxxxxxx.cloudfront.net origin-access-identity/cloudfront/xxxxxxxxxxxxx origin-access-identity/cloudfront/xxxxxxxxxxxxx None www.xx-xxx.cf xxxxxxxxxxxxx.cloudfront.net None origin-access-identity/cloudfront/xxxxxxxxxxxxx None None xxxxxxxxxxxxx.cloudfront.net origin-access-identity/cloudfront/xxxxxxxxxxxxx None None None xxxxxxxxxxxxx.cloudfront.net origin-access-identity/cloudfront/xxxxxxxxxxxxx None None
WebACL
CloudFrontに紐づくWebACLを確認できるコマンドは、以下の通りです。
echo "CNAME DomainName WebACL" > /tmp/awscli.tmp;\ aws cloudfront list-distributions --query "DistributionList.Items[].\ [Aliases.Items[0],DomainName,WebACLId]" --output text >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
CNAME DomainName WebACL None xxxxxxxxxxxxx.cloudfront.net arn:aws:wafv2:us-east-1:xxxxxxxxxxxx:global/webacl/test/b65dc051-7775-454b-a6cf-98b9d94f737e www.xxxxx.cf xxxxxxxxxxxxx.cloudfront.net None xxxxxxxxxxxxx.cloudfront.net None xxxxxxxxxxxxx.cloudfront.net
WebACLが紐づいてないと3列目が何も表示されません。(Noneと表示されません。)
Lambda@Edge
CloudFrontに紐づくLambda@Edgeを確認できるコマンドは、以下の通りです。
echo "CNAME DomainName Lambda_Arn[1] Lambda_Arn[2] Lambda_Arn[3]" > /tmp/awscli.tmp;\ aws cloudfront list-distributions --query "DistributionList.Items[].\ [Aliases.Items[0],\ DomainName,\ DefaultCacheBehavior.LambdaFunctionAssociations.Items[0].LambdaFunctionARN,\ DefaultCacheBehavior.LambdaFunctionAssociations.Items[1].LambdaFunctionARN,\ DefaultCacheBehavior.LambdaFunctionAssociations.Items[2].LambdaFunctionARN]" --output text >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
CNAME DomainName Lambda_Arn[1] Lambda_Arn[2] Lambda_Arn[3] None xxxxxxxxxxxxx.cloudfront.net arn:aws:lambda:us-east-1:xxxxxxxxxxxxx:function:lambda-cloudfront:1 arn:aws:lambda:us-east-1:xxxxxxxxxxxxx:function:lambda-cloudfront:1 None www.xxxxxxxx.cf xxxxxxxxxxxxx.cloudfront.net None None None None xxxxxxxxxxxxx.cloudfront.net None None None None xxxxxxxxxxxxx.cloudfront.net None None None
ACM
CloudFrontに紐づくACMを確認できるコマンドは、以下の通りです。
echo "CNAME DomainName ACM_Arn" > /tmp/awscli.tmp;\ aws cloudfront list-distributions --query "DistributionList.Items[].\ [Aliases.Items[0],DomainName,ViewerCertificate.ACMCertificateArn]" --output text >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
CNAME DomainName ACM_Arn None xxxxxxxxxxxxx.cloudfront.net None www.xxxxx.cf xxxxxxxxxxxxx.cloudfront.net arn:aws:acm:us-east-1:xxxxxxxxxxxx:certificate/1543f227-c17f-4073-981d-be32d3c6c386 None xxxxxxxxxxxxx.cloudfront.net None None xxxxxxxxxxxxx.cloudfront.net None
上記全てのリソースをCSVにまとめて出力
echo "CNAME,DomainName,Origin[1],Origin[2],Origin[3],OAI[1],OAI[2],OAI[3],WebACL,ACMCertificateArn,Lambda_Arn[1],Lambda_Arn[2],Lambda_Arn[3]" > cloudfront-associated-resource.csv;\ aws cloudfront list-distributions --query "DistributionList.Items[].\ [Aliases.Items[0],\ DomainName,\ Origins.Items[0].Id,\ Origins.Items[1].Id,\ Origins.Items[2].Id, \ Origins.Items[0].S3OriginConfig.OriginAccessIdentity, \ Origins.Items[1].S3OriginConfig.OriginAccessIdentity, \ Origins.Items[2].S3OriginConfig.OriginAccessIdentity, \ WebACLId, \ ViewerCertificate.ACMCertificateArn,\ DefaultCacheBehavior.LambdaFunctionAssociations.Items[0].LambdaFunctionARN,\ DefaultCacheBehavior.LambdaFunctionAssociations.Items[1].LambdaFunctionARN,\ DefaultCacheBehavior.LambdaFunctionAssociations.Items[2].LambdaFunctionARN]" \ --output text |tr "\t" ",">> cloudfront-associated-resource.csv
- 実行結果
終わりに
今回は、CloudFrontに紐づくリソースを確認するコマンドをご紹介いたしました。
どなたかのお役に立てれば幸いです。