【AWS CLI】CloudFrontに紐づくリソースの確認

記事タイトルとURLをコピーする

こんにちは。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
  • 実行結果

f:id:swx-fukushima:20210306005354p:plain

終わりに

今回は、CloudFrontに紐づくリソースを確認するコマンドをご紹介いたしました。

どなたかのお役に立てれば幸いです。

福島 和弥 (記事一覧)

2019/10 入社

AWS CLIが好きです。

AWS資格12冠。2023 Japan AWS Partner Ambassador/APN ALL AWS Certifications Engineer。