以前「CloudFrontキャッシュを削除するシェルスクリプトを書いてみた。」という記事を書きましたが、Invalidationはすぐ完了しない場合がもあるので処理状況をチェックすることがあるわけですが、それも AWS CLI でチェックすればいいやということで、シェルスクリプト書いたのでまとめます。
概要
AWS CLI で CloudFrontキャッシュの 削除リクエスト のステータスチェックをおこなう処理をシェルスクリプト化。
キャッシュ削除のスクリプトに組み込めないかなと思ったけど、チェックリクエストだけ何回かおこなう可能性があり、また、Completed ステータス判定もちょっと面倒そうだったので別スクリプトにしました。
必要な準備
まずは AWS CLI の実行環境が必要なので、前回の記事の内容をやってみてください。
CloudFrontキャッシュを削除するシェルスクリプトを書いてみた。
状況チェックに必要なもの
aws cloudfront get-invalidation
コマンドを叩くわけですが、引数に Distribution ID と Invalidation ID が必要になります。(AWS環境を複数持っている人は profile なども必要になります。)
Invalidation ID は Create Invalidation した時に発行されるIDです。
ちなみに aws cloudfront get-invalidation
で、Invalidation ID の引数パラメータは id という名称になります。
目的のシェルスクリプトを書く
第1引数に Invalidation ID を受け取れる想定
#!/bin/bash
dist_id="ABCDEFGHIJKL"
prof_name="hogehoge"
id="$1"
echo "CloudFront invalidation status check ..."
echo "invalidation-id:$id, distribution-id:$dist_id, profile=$prof_name"
echo -e `aws cloudfront get-invalidation --distribution-id $dist_id --id $id --profile $prof_name | jq -r '.Invalidation | {id: .Id, status: .Status}'`
ちなみに Invalidation ID とは、Create Invalidation した時にAWSから自動的に払い出されるIDのことです。
(↓これです)
実行してみる
完了していない時のステータス
❯ ./checkStatusInvalidation.sh LKJIHGFEDCBA
CloudFront invalidation status check ...
id:ABCDEFGHIJKL, distribution-id:ELKJIHGFEDCBA, profile=hogehoge
{ "id": "ABCDEFGHIJKL", "status": "InProgress" }
完了している時のステータス
❯ ./checkStatusInvalidation.sh LKJIHGFEDCBA
CloudFront invalidation status check ...
invalidation-id:ABCDEFGHIJKL, distribution-id:ELKJIHGFEDCBA, profile=hogehoge
{ "id": "ABCDEFGHIJKL", "status": "Completed" }
※AWSからのレスポンス(JSON)上、Invalidation ID のキー名は id と表記されています。