こんにちは、cloudpack今岡 です。

現時点では aws cli による Amazon CloudFront操作はプレビュー版です。ですが、一応動作は確認できた。

長くなったので、短縮版

  1. aws cloudfront get-distribution で現状をjson でファイル出力
  2. 作ったファイルを修正 null => "" , Id: つける, ETag => IfMatch
  3. 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

一旦出して、下記の処理を入れる

  1. null -> "" へ置換
  2. ETag -> IfMatch へ置換
  3. Id: を一番頭に追加、もちろん { の下
  4. で、変えたいところへ修正

準備ができたら

aws cloudfront update-distribution --cli-input-json file://hoge.json

--distribution-config だと、getでとったものとフォーマットが違うので、--cli-input-json 使っちゃう。これでOKなはず。

元記事はこちらです。
aws-cli で CloudFrontを操る (invalidation以外)