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管理できる環境を整備した

Share Comments
comments powered by Disqus