[AWS CLI] 長いパラメータの入力が不要になる CLI Skeleton が便利すぎる件

AWS

はじめに

おばんです、AWSが憎k...楽しくなってきた田中です!(楽しいけど、関連技術・サービスが多すぎて困惑している)

今回は AWS CLI で利用できる CLI Skeleton という機能の紹介です。

CLI上でAPIを利用する時のパラメータの確認・編集・読解地獄問題

例えばこういうの。

$ aws pinpoint create-import-job --application-id a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6 --import-job-request DefineSegment=true,ExternalId=xxxxxxxx,Format=CSV,RegisterEndpoints=true,RoleArn=arn:aws:iam::123456789012:role/tanaka.kenji,S3Url=s3://bucket-name/folder-name/file-name,SegmentName=TestSegment

コマンドに必要なパラメータをセットするような場合は多々ありますが、これをCLI上で編集したり読むのは骨が折れます。さらに別な問題として、そのコマンドに必要なパラメータをいちいちリファレンスを読んで理解するのもまた面倒な作業になります。

そこで CLI Skeleton ですヨ!

CLI Skeletonとは

CLI Skeleton とは、JSONでパラメーターを保存し、コマンドラインで入力する代わりにファイルから読み取ることができる機能になります。また、保存したJSONファイルを読み取る機能も他にあります。これにより、先述した問題が解消されることになります。

この CLI Skeleton はほとんどのAWS CLIコマンドで対応されています。

CLI Skeletonの使い方

必要なパラメータの雛形を作る --generate-cli-skeleton

そのコマンドに必要なパラメータを確認するために使えるコマンドが、 --generate-cli-skeleton コマンドになります。

$ aws pinpoint create-import-job --generate-cli-skeleton
{
    "ApplicationId": "", 
    "ImportJobRequest": {
        "DefineSegment": true, 
        "ExternalId": "", 
        "Format": "", 
        "RegisterEndpoints": true, 
        "RoleArn": "", 
        "S3Url": "", 
        "SegmentId": "", 
        "SegmentName": ""
    }
}

これをファイル化するコマンドが以下。

$ aws pinpoint create-import-job --generate-cli-skeleton > Params.json
$ ls
Params.json

試しに作った Params.json の中身は --generate-cli-skeleton した時と同じ内容が記載されています。ここで生成したファイルを編集してコマンドのパラメータとして利用していきます。

$ more Params.json
{
    "ApplicationId": "", 
    "ImportJobRequest": {
        "DefineSegment": true, 
        "ExternalId": "", 
        "Format": "", 
        "RegisterEndpoints": true, 
        "RoleArn": "", 
        "S3Url": "", 
        "SegmentId": "", 
        "SegmentName": ""
    }
}

作成したパラメータのJSONファイルを読み込ませる --cli-input-json

file://<ファイル名> でファイルを指定して利用することができます。元のコマンドの利用方法と比べると、はるかに利用しやすくなったのがわかります。

$ aws pinpoint create-import-job --cli-input-json file://Params.json

さいごに

CLI Skeleton の紹介とその使い方について触れました。

CLI Skeleton を使うことで圧倒的にAWS CLIとの距離がグッと近く気がします!適切に使っていきたいですね。

参考・関連

AWS Cloud Roadshow 2017 福岡