現時点では aws cli による CloudFront操作はプレビュー版です。ですが、一応動作は確認できた。
長くなったので、短縮版
- aws cloudfront get-distributionで現状をjson でファイル出力
- 作ったファイルを修正 null => "" , Id: つける, ETag => IfMatch
- aws cloudfront update-distribution --cli-input-json
とりあえずアップデートしとく
その前に aws cli を更新したほうがよいでしょう。amazon linux は yum で(いけたよね?) python好きや amazon linux以外は pip install awscli -U で。
プレビュー機能の開放
$ aws configure set preview.cloudfront true
Originを付け替えてみる
completer.sh を吸わせて叩けば分かりますが、特定のパラメータだけをピンポイントで変更するような機能は無いです。1パラメータ変更するだけでも、全パラメータを含んだJSONを投げつけてやる必要があります。
$ aws cloudfront update-distribution --distribution-config file://%json.file% --id %distribution-id%
ヘルプを叩いたら
OPTIONS --distribution-config (structure) The distribution's configuration information. JSON Syntax: { "CallerReference": "string", "Aliases": { "Quantity": integer, "Items": ["string", ...] }, "DefaultRootObject": "string", "Origins": {
で、 json.file に変更差分だけ指定したら。
Parameter validation failed: Missing required parameter in DistributionConfig: "DefaultRootObject" Missing required parameter in DistributionConfig: "Origins" Missing required parameter in DistributionConfig: "DefaultCacheBehavior" Missing required parameter in DistributionConfig: "CacheBehaviors" ...
はいはい、全部指定しろってことな。
最小限の手間で書き換える方法
aws cloudfront get-distribution --id %distribution_id% > hoge.json
一旦出して、下記の処理を入れる
- null -> "" へ置換
- ETag -> IfMatch へ置換
- Id: を一番頭に追加、もちろん{の下
- で、変えたいところへ修正
準備ができたら
aws cloudfront update-distribution --cli-input-json file://hoge.json
--distribution-config だと、getでとったものとフォーマットが違うので、--cli-input-json使っちゃう。これでOKなはず。