はじめに

CloudFrontは設定変更を誤った場合の影響が大きいです。そのためより安全に正確に変更作業を行うのにaws-cliを使うのが良いと思いました。

設定の確認

まず今回は通信用にサポートされる SSL/TLS プロトコルの変更を行うことにします。

ディストリビューションで現在設定されている内容を確認するには cloudfrontget-distribution-config コマンドで確認できます。
ただ、そのまま出力されると内容が多くて分かりにくいので、TLSの部分だけ抜き出します。

TLS確認
$ aws cloudfront get-distribution-config --id "xxxxxxxxxxxxx" | jq '.["DistributionConfig"]["ViewerCertificate"]["MinimumProtocolVersion"]'
"TLSv1"

現在の設定は TLSv1 が設定されています。

設定変更

それでは設定変更を行います。
まずは現在の設定状況を管理コンソールからも確認して見ます。

スクリーンショット 2018-03-25 15.35.58.png

今回は赤枠の TLSv1TLSv1.1_2016 へ切り替えたいと思います。
まず、先ほどの get-distribution-config で表示される DistributionConfig の部分をテキストへ出力します。

dist.conf
$ aws cloudfront get-distribution-config --id "xxxxxxxxxxxxx" | jq '.DistributionConfig' > dist.conf

出力したらそのファイルを開き TLSv1 の部分を TLSv1.1_2016 へ変更します。
サポートされる SSL/TLS プロトコル はこちらで確認してください。

変更確認
$ cat dist.conf | jq '.["ViewerCertificate"]["MinimumProtocolVersion"]'
"TLSv1"

次に ETag を取得します。このETagの取得が今回のポイントです。

ETag
$ aws cloudfront get-distribution-config --id "xxxxxxxxxxxxx" --profile proudit | jq '.ETag'
"EZLFL1SIXPXTL"

この ETag がマッチしないと設定の変更ができません。
それでは設定を更新します。

update-distribution
$ aws cloudfront update-distribution --id "xxxxxxxxxxxxx" --distribution-config file://dist.conf --if-match EZLFL1SIXPXTL

それでは Security Policy をもう一度確認して見ます。

確認
$ aws cloudfront get-distribution-config --id "xxxxxxxxxxxxx" | jq '.["DistributionConfig"]["ViewerCertificate"]["MinimumProtocolVersion"]'
"TLSv1.1_2016"

管理コンソールからも変更されていることが確認ができました。

スクリーンショット 2018-03-25 15.41.16.png

おわりに

管理コンソールでの設定変更は誤操作を誘発しやすくなります。コマンドの場合、作業ログの保存はもちろん、設定情報の変更前と変更後の差分をdiffなどで確認した上で更新できるのオススメです。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.