📝
CloudFront の CNAME から Distribution ID を取得する
やりたかったこと
CloudFront + S3 でホスティングしている Web ページがあります。
フロント側の変更を即時で反映するため、デプロイ後に Invalidate AWS CloudFront actionを使用してキャッシュの削除を自動化しています。
Invalidate AWS CloudFront action の使い方は簡単で、下記のように Distribution ID を指定するだけです。
- name: Clear cache in CloudFront
uses: chetan/invalidate-cloudfront-action@v1.2
env:
DISTRIBUTION: Distribution ID
PATHS: "/*"
AWS_REGION: ${{ secrets.AWS_REGION }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
通常は問題ないのですが、必要な時だけ立ち上げるような環境(ステージング環境など)の場合は一工夫必要になります。
環境を作り直すと、Distribution ID も変わるためです。
このようなケースに対応するため、デプロイ時に Distribution ID を取得し、Invalidate AWS CloudFront action に渡したかったというのがモチベーションです。
CNAME から Distribution ID を取得する
AWS CLI を使って下記のようなコマンドを実行することで、指定した CNAME から Distribution ID を取得できます。(CNAME の部分を書き換えてください)
aws cloudfront list-distributions --query "DistributionList.Items[?Aliases.Items[0]=='CNAME'].Id" --output text
Discussion