現時点では aws cli による Amazon 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なはず。
元記事はこちらです。
「aws-cli で CloudFrontを操る (invalidation以外)」