Hori Blog

フリーランスでバックエンドエンジニアとして活動している Ryota Hori のブログです。
最近はテック系記事より雑記ブログ気味。

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 を作成(複製)することもできるので、別記事で書きます。

追記:

書きました

CloudFront の設定をコマンドラインから作成する

追記 2:

一連のコマンドをスクリプト化して管理ツールっぽくしました

CloudFront の awscli で json 管理できる環境を整備した