CloudFrontの設定は、ちょっぴり面倒くさい
CloudFrontの設定をする場合、特定の項目のみを設定するのではなく、設定用のjsonを丸ごと流し込む方式を取ります。
更新コマンド。オプションでjsonを読み込んでいる
aws cloudfront update-distribution \
--id $DISTRIBUTION_ID \
--distribution-config file://updated-config.json \
--if-match $ETAG
jsonを作り込むのが面倒くさいので、スクリプトにして実行する方法を紹介します。
前提
AWS CLIコマンド、jqコマンドが使える環境であることを前提とします。
設定スクリプト
以下のように実行します。jqコマンドは抽出の他、フィールド編集も簡単にできるので良いですね。
# 設定対象の指定
DISTRIBUTION_ID=<CloudFrontディストリビューションID>
# 設定取得
aws cloudfront get-distribution-config --id $DISTRIBUTION_ID > dist-config.json
# アップデート用設定ファイルを作成
# ※WebACLIdフィールド (WAF設定) を変更する例です。更新したい内容に応じて編集してください
jq '.DistributionConfig | .WebACLId = "<WAF_ARN>"' dist-config.json > updated-config.json
# ETag取得
ETAG=$(jq -r '.ETag' dist-config.json)
# 設定変更の実行
aws cloudfront update-distribution \
--id $DISTRIBUTION_ID \
--distribution-config file://updated-config.json \
--if-match $ETAG