処理の実行
CloudFrontディストリビューションIDを取得します。
コマンド:
for i in $(
aws cloudfront list-distributions \
--query "DistributionList.Items[].ARN" \
--output text \
); do
j=$( \
aws cloudfront list-tags-for-resource \
--resource ${i} \
--query "Tags.Items[?Key == \`Name\` && Value == \`${CLOUDFRONT_DISTRIBUTION_TAG_NAME}\`].Value" \
--output text \
)
if [ "${j}" == "${CLOUDFRONT_DISTRIBUTION_TAG_NAME}" ]; then \
CLOUDFRONT_DISTRIBUTION_ID=$( \
aws cloudfront list-distributions \
--query "DistributionList.Items[?ARN == \`${i}\`].Id" \
--output text \
)
fi
done \
&& echo ${CLOUDFRONT_DISTRIBUTION_ID}
結果(例):
課題
list-distributionsコマンドがタグ表示できないため、全てのディストリビューションに対してlist-tags-for-resourceコマンドでタグの有無をチェックするしか方法がない。(サポートには未確認)
キャッシュ無効化の作成
キャッシュの無効化を作成します。
変数の確認:
cat << END
# CLOUDFRONT_DISTRIBUTION_ID:"Exxxxxxxxxxxxx"
CLOUDFRONT_DISTRIBUTION_ID="${CLOUDFRONT_DISTRIBUTION_ID}"
# CLOUDFRONT_PATHS:"/index.html"
CLOUDFRONT_PATHS="${CLOUDFRONT_PATHS}"
END
コマンド:
aws cloudfront create-invalidation \
--distribution-id ${CLOUDFRONT_DISTRIBUTION_ID} \
--paths ${CLOUDFRONT_PATHS}
結果(例):
{
"Invalidation": {
"Status": "InProgress",
"InvalidationBatch": {
"Paths": {
"Items": [
"/index.html"
],
"Quantity": 1
},
"CallerReference": "cli-xxxxxxxxxx-xxxxxx"
},
"Id": "Ixxxxxxxxxxxxx",
"CreateTime": "2021-11-25T01:23:45.678Z"
},
"Location": "https://cloudfront.amazonaws.com/2017-03-25/distribution/Exxxxxxxxxxxxx/invalidation/Ixxxxxxxxxxxxx"
}
無効化IDを取得します。
コマンド:
CLOUDFRONT_INVALIDATION_ID=$( \
aws cloudfront list-invalidations \
--distribution-id ${CLOUDFRONT_DISTRIBUTION_ID} \
--query 'InvalidationList.Items[?Status ==`InProgress`].Id' \
--output text \
) \
&& echo ${CLOUDFRONT_INVALIDATION_ID}
結果(例):
注釈
無効化の処理が完了すると、上記のコマンドで無効化IDの取得はできません。
(ステータス"InProgress"でクエリーしているため)
無効化のステータスを取得します。
コマンド:
CLOUDFRONT_INVALIDATION_STATUS=$( \
aws cloudfront list-invalidations \
--distribution-id ${CLOUDFRONT_DISTRIBUTION_ID} \
--query "InvalidationList.Items[?Id ==\`${CLOUDFRONT_INVALIDATION_ID}\`].Status" \
--output text \
) \
&& echo ${CLOUDFRONT_INVALIDATION_STATUS}
結果(例):
完了確認
「CloudFrontキャッシュ無効化エントリのステータスが"Completed"である。」ことを確認します。
コマンド:
CLOUDFRONT_INVALIDATION_STATUS=$( \
aws cloudfront list-invalidations \
--distribution-id ${CLOUDFRONT_DISTRIBUTION_ID} \
--query "InvalidationList.Items[?Id ==\`${CLOUDFRONT_INVALIDATION_ID}\`].Status" \
--output text \
) \
&& echo ${CLOUDFRONT_INVALIDATION_STATUS}
結果(例):