CloudFrontの設定をコマンドラインから更新する
CloudFront の設定を GUI でポチポチしていると大体ミスってうまく動かなかったりするんですよね。
実は CloudFront も AWS CLI を使ってコマンドラインから更新できるので、やり方をまとめました。
使うツール
インストールは以下のリンクから。
下準備(Preview を有効に)
AWS 的には AWS CLI の CloudFront 設定はまだ Preview 版のようなのですが、とりあえず使えます。
ただし、Preview 版なので有効にするには config を設定する必要があります。
aws configure set preview.cloudfront true
上記のコマンドを実行することで AWS CLI で CloudFront が有効になります。
Distribution 設定ファイルを取得する
AWS CLI の CloudFront では各設定項目を個別に更新することはできず、Distribution の設定すべてを丸ごと更新します。
まずは以下のコマンドで Distribution の設定を json で取得できます。
aws cloudfront get-distribution --id ${DISTRIBUTION_ID} > src.json
${DISTRIBUTION_ID}
には更新したい CloudFront の DistributionId を入れてください。
Distribution 設定ファイルのフォーマットを変換する
残念なことに、取得用の json と更新用の json はフォーマットが少し違います。
なので jq
コマンドを使ってフォーマットを変換します。
jq -r '{ DistributionConfig: .Distribution.DistributionConfig, Id: .Distribution.Id, IfMatch: .ETag }' \
src.json > dst.json
Distribution 設定ファイルを編集する
変換された dst.json
を編集してください。
一点注意ですが、 Quantity
というプロパティは配列の要素数を示しています。配列の要素数が変わった際には併せて編集してください。
update 時にエラーが出るので怒られたら直すでも OK です。
CloudFront に設定ファイルを反映する
コマンド一発です。
aws cloudfront update-distribution --cli-input-json file://dst.json
このコマンドで Distribution の更新が走るので、GUI での更新と同じく反映を待ってください。
以上
shell で設定を変更できるので、shell script でもぶん回せます。
aws cloudfront list-distributions
と組み合わせて一括で更新するようにすれば、数十個の Distribution の更新も恐くない!
GUI だとどうしても漏れが発生して、最悪の場合はサービスが全くアクセスできなくなるので、CUI で更新できるのは助かりますね。
ほとんど同じ操作にはなるのですが、既存の Distribution 設定を元に別 Distribution を作成(複製)することもできるので、別記事で書きます。
追記:
書きました
追記 2:
一連のコマンドをスクリプト化して管理ツールっぽくしました