はじめに
CloudFrontは設定変更を誤った場合の影響が大きいです。そのためより安全に正確に変更作業を行うのにaws-cliを使うのが良いと思いました。
設定の確認
まず今回は通信用にサポートされる SSL/TLS プロトコルの変更を行うことにします。
ディストリビューションで現在設定されている内容を確認するには cloudfront の get-distribution-config コマンドで確認できます。
ただ、そのまま出力されると内容が多くて分かりにくいので、TLSの部分だけ抜き出します。
$ aws cloudfront get-distribution-config --id "xxxxxxxxxxxxx" | jq '.["DistributionConfig"]["ViewerCertificate"]["MinimumProtocolVersion"]'
"TLSv1"
現在の設定は TLSv1 が設定されています。
設定変更
それでは設定変更を行います。
まずは現在の設定状況を管理コンソールからも確認して見ます。
今回は赤枠の TLSv1 を TLSv1.1_2016 へ切り替えたいと思います。
まず、先ほどの get-distribution-config で表示される DistributionConfig の部分をテキストへ出力します。
$ 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の取得が今回のポイントです。
$ aws cloudfront get-distribution-config --id "xxxxxxxxxxxxx" --profile proudit | jq '.ETag'
"EZLFL1SIXPXTL"
この ETag がマッチしないと設定の変更ができません。
それでは設定を更新します。
$ 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"
管理コンソールからも変更されていることが確認ができました。
おわりに
管理コンソールでの設定変更は誤操作を誘発しやすくなります。コマンドの場合、作業ログの保存はもちろん、設定情報の変更前と変更後の差分をdiffなどで確認した上で更新できるのオススメです。