

**このドキュメントはバージョン 1 の AWS CLI のみを対象としています。**

AWS CLI バージョン 1 のサポート終了を発表しました。AWS CLI バージョン 2 に移行することをお勧めします。日付、その他の詳細、移行方法については、「[お知らせ](https://aws.amazon.com/blogs/developer/cli-v1-maintenance-mode-announcement/)」を参照してください。AWS CLI のバージョン 2 に関連するドキュメントについては、[バージョン 2 用ユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/)を参照してください。

# Specifying parameter values in the AWS CLI
<a name="cli-usage-parameters"></a>

AWS Command Line Interface (AWS CLI) で使用される多くのパラメータは、以下の `aws ec2 create-key-pair` コマンド例のキーペア名 `my-key-pair` などのように、単純な文字列または数値です。

```
$ aws ec2 create-key-pair --key-name my-key-pair
```

コマンドのフォーマットは、ターミナルによって異なる場合があります。たとえば、ほとんどのターミナルは大文字と小文字を区別しますが、Powershell は大文字と小文字を区別しません。つまり、以下の 2 つのコマンド例では、`MyFile*.txt` と `myfile*.txt` を**異なる**パラメータとして表示するため、大文字と小文字が区別されるターミナルでは異なる結果になります。

ただし、PowerShell はこれらのリクエストを、`MyFile*.txt` と `myfile*.txt` を**同じ**パラメータと見なすのと同じように処理します。次のコマンド例は、`aws s3 cp` コマンドを使用したこれらのパラメータを示しています。

```
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "MyFile*.txt"
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "myfile*.txt"
```

PowerShell で大文字と小文字が区別されないことの詳細については、*PowerShell のドキュメント*の「[about\$1Case-Sensitivity](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_case-sensitivity)」を参照してください。

特殊文字やスペース文字を含む文字列を引用符やリテラルで囲む必要がある場合があります。このフォーマットに関する規則は、ターミナルによっても異なる場合があります。複雑なパラメータを引用符で囲む方法の詳細については、「[Using quotation marks and literals with strings in the AWS CLI](cli-usage-parameters-quoting-strings.md)」を参照してください。

これらのトピックでは、最も一般的なターミナルフォーマットルールについて説明します。ターミナルでパラメータ値を認識できない場合は、このセクションのトピックを確認し、ターミナルのドキュメントで特定の構文ルールを確認してください。

**Topics**
+ [Common parameter types in the AWS CLI](cli-usage-parameters-types.md)
+ [Using quotation marks and literals with strings in the AWS CLI](cli-usage-parameters-quoting-strings.md)
+ [AWS CLI でのファイルからのパラメータの読み込み](cli-usage-parameters-file.md)
+ [AWS CLI skeletons and input files in the AWS CLI](cli-usage-skeleton.md)
+ [Using shorthand syntax in the AWS CLI](cli-usage-shorthand.md)

# Common parameter types in the AWS CLI
<a name="cli-usage-parameters-types"></a>

このセクションでは、いくつかの一般的なパラメータタイプと一般的に必要な形式について説明します。

特定のコマンドでパラメータの書式化に問題がある場合には、コマンド名の後に **help** と入力することによって、ヘルプを確認してみてください。各サブコマンドのヘルプには、オプションの名前と説明が示されています。オプションのパラメータタイプは、括弧内に一覧表示されています。ヘルプ表示の詳細については、「[Accessing help and resources for the AWS CLI](cli-usage-help.md)」を参照してください。

**Topics**
+ [String](#parameter-type-string)
+ [タイムスタンプ](#parameter-type-timestamp)
+ [リスト](#parameter-type-list)
+ [ブール値](#parameter-type-boolean)
+ [整数](#parameter-type-integer)
+ [バイナリ/blob (バイナリラージオブジェクト) とストリーミング blob](#parameter-type-blobs)
+ [マップ](#parameter-type-map)
+ [ドキュメント](#parameter-type-document)

## String
<a name="parameter-type-string"></a>

文字列パラメータには、[ASCII](https://wikipedia.org/wiki/ASCII) 文字セットの英数字、記号、空白文字が使用できます。空白文字を含む文字列は引用符で囲まれている必要があります。予期しない結果を避けるため、標準の空白文字以外の記号や空白文字は使用せず、お使いの端末の[引用符のルール](cli-usage-parameters-quoting-strings.md)に従うことをお勧めします。

一部の文字列パラメータはファイルからバイナリデータを受け取ることができます。例については、「[バイナリファイル](cli-usage-parameters-file.md#cli-usage-parameters-file-binary)」を参照してください。

## タイムスタンプ
<a name="parameter-type-timestamp"></a>

タイムスタンプの形式は [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) 標準に従います。これらは「`DateTime`」または「`Date`」パラメータと呼ばれることもあります。

```
$ aws ec2 describe-spot-price-history --start-time 2014-10-13T19:00:00Z
```

有効な形式は次のとおりです。
+ *YYYY*-*MM*-*DD*T*hh*:*mm*:*ss.sss**TZD (UTC)* (例: 2014-10-01T20:30:00.000Z)
+ *YYYY*-*MM*-*DD*T*hh*:*mm*:*ss.sss**TZD (オフセットあり)* (例: 2014-10-01T12:30:00.000-08:00)
+ *YYYY*-*MM*-*DD* (例: 2014-10-01)
+ Unix 時間 (秒)、例: 1412195400。これは [Unix エポック時間](https://wikipedia.org/wiki/Unix_time)と呼ばれることもあり、1970 年 1 月 1 日午前 0 時 (UTC) からの秒数を表します。

`cli\$1timestamp\$1format` ファイル設定を使用して、タイプスタンプ形式を設定できます。

## リスト
<a name="parameter-type-list"></a>

スペースで区切られた 1 つ以上の文字列。文字列項目にスペースがある場合は、その項目を引用符で囲む必要があります。予期しない結果を避けるため。お使いの端末の[引用のルール](cli-usage-parameters-quoting-strings.md)を遵守してください。

```
$ aws ec2 describe-spot-price-history --instance-types m1.xlarge m1.medium
```

## ブール値
<a name="parameter-type-boolean"></a>

オプションをオンまたはオフにするバイナリフラグです。例えば、`ec2 describe-spot-price-history` にはブール型の `--dry-run` パラメータがあり、このパラメータが指定されると、クエリを実際に実行することなくサービスのクエリを検証します。

```
$ aws ec2 describe-spot-price-history --dry-run
```

出力にはコマンドが正しい形式だったかどうかが示されます。このコマンドには、`--no-dry-run` バージョンのパラメータも含まれ、これを使用して、コマンドを通常どおりに実行することを明示的に示すことができます。これは、デフォルトの動作であるため、含める必要はありません。

## 整数
<a name="parameter-type-integer"></a>

符号なしの整数。

```
$ aws ec2 describe-spot-price-history --max-items 5
```

## バイナリ/blob (バイナリラージオブジェクト) とストリーミング blob
<a name="parameter-type-blobs"></a>

AWS CLI では、バイナリ値を文字列としてコマンドラインで直接渡すことができます。blob には 2 つのタイプがあります。
+ [blob](#parameter-type-blob)
+ [ストリーミング blob](#parameter-type-streaming-blob)

### blob
<a name="parameter-type-blob"></a>

タイプ `blob` で、パラメータに値を渡すには、`fileb://` プレフィックスを使用してバイナリデータを含むローカルファイルへのパスを指定する必要があります。`fileb://` プレフィックスを使用して参照されるファイルは、常に、エンコードされていない raw バイナリとして扱われます。指定されたパスは、現在の作業ディレクトリに対する相対パスとして解釈されます。例えば、`--plaintext` の `aws kms encrypt` パラメータは blob です。

```
$ aws kms encrypt \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --plaintext fileb://ExamplePlaintextFile \
    --output text \
    --query CiphertextBlob | base64 \
    --decode > ExampleEncryptedFile
```

### ストリーミング blob
<a name="parameter-type-streaming-blob"></a>

`aws cloudsearchdomain upload-documents` などのストリーミング blob はプレフィックスを使用しません。代わりに、ストリーミング blob パラメータは直接ファイルパスを使用してフォーマットされます。次の例では、`aws cloudsearchdomain upload-documents` コマンドに直接ファイルパス `document-batch.json` を使用しています。

```
$ aws cloudsearchdomain upload-documents \
    --endpoint-url https://doc-my-domain.us-west-1.cloudsearch.amazonaws.com \
    --content-type application/json \
    --documents document-batch.json
```

## マップ
<a name="parameter-type-map"></a>

JSON または CLI の[短縮構文](cli-usage-shorthand.md)を使用して指定されたキーと値のペアのセット。次の JSON の例では、マップパラメータ `--key`を使用して、* my-table *という名前の Amazon DynamoDB テーブルから項目を読み取ります。パラメータは、ネストされた JSON 構造の数値 *1* で *id* という名前のプライマリキーを指定します。

コマンドラインでより高度な JSON を使用するには、`jq` のようなコマンドライン JSON プロセッサを使用して JSON 文字列を作成することを検討してください。`jq` の詳細については、*GitHub* の [jq repository](http://stedolan.github.io/jq/) を参照してください。

```
$ aws dynamodb get-item --table-name my-table --key '{"id": {"N":"1"}}'

{
    "Item": {
        "name": {
            "S": "John"
        },
        "id": {
            "N": "1"
        }
    }
}
```

## ドキュメント
<a name="parameter-type-document"></a>

**注記**  
[短縮構文](cli-usage-shorthand.md)は、ドキュメントタイプと互換性がありません。

ドキュメントタイプは、文字列内に JSON を埋め込む必要なく、データを送信するために使用されます。ドキュメントタイプによってサービスが任意のスキーマを提供することで、より柔軟なデータ型を使用できます。

これにより、値をエスケープすることなく JSON データを送信できます。例えば、次のようにエスケープされた JSON 入力の代わりに使用します。

```
{"document": "{\"key\":true}"}
```

次のドキュメントタイプが使用できます。

```
{"document": {"key": true}}
```

### ドキュメントタイプに対し有効な値
<a name="parameter-type-document-valid"></a>

ドキュメントタイプは柔軟な性質を持っているため、有効な値のタイプは複数あります。有効な値には次のようなものがあります。

**String**  

```
--option '"value"'
```

**Number**  

```
--option 123
--option 123.456
```

**ブール値**  

```
--option true
```

**Null**  

```
--option null
```

**配列**  

```
--option '["value1", "value2", "value3"]'
--option '["value", 1, true, null, ["key1", 2.34], {"key2": "value2"}]'
```

**オブジェクト**  

```
--option '{"key": "value"}'
--option '{"key1": "value1", "key2": 123, "key3": true, "key4": null, "key5": ["value3", "value4"], "key6": {"value5": "value6"}'
```

# Using quotation marks and literals with strings in the AWS CLI
<a name="cli-usage-parameters-quoting-strings"></a>

AWS CLI では、主に、一重引用符と二重引用符の使用方法が 2 つあります。
+ [空白を含む文字列を引用符で囲む](#cli-usage-parameters-quoting-strings-around)
+ [文字列内での引用符の使用](#cli-usage-parameters-quoting-strings-containing)

## 空白を含む文字列を引用符で囲む
<a name="cli-usage-parameters-quoting-strings-around"></a>

コマンドラインでパラメータ名とその値はスペースで区切ります。文字列値にスペースが埋め込まれている場合は、文字列全体を引用符で囲むことで、AWS CLI によってスペースが値と次のパラメータ名との区切りとして誤って解釈されないようにする必要があります。使用する引用符のタイプは、AWS CLI を実行しているオペレーティングシステムによって異なります。

------
#### [ Linux and macOS ]

一重引用符 `' '` を使用します。

```
$ aws ec2 create-key-pair --key-name 'my key pair'
```

引用符の使用方法の詳細については、使用するシェルのユーザードキュメントを参照してください。

------
#### [ PowerShell ]

**一重引用符 (推奨)**

一重引用符 `' '` は `verbatim` 文字列と呼ばれます。文字列は、入力したとおりにコマンドに渡されるため、PowerShell 変数は通過しません。

```
PS C:\> aws ec2 create-key-pair --key-name 'my key pair'
```

**二重引用符**

二重引用符 `" "` は `expandable` 文字列と呼ばれます。変数は拡張可能な文字列で渡すことができます。

```
PS C:\> aws ec2 create-key-pair --key-name "my key pair"
```

引用符の使用方法の詳細については、*Microsoft PowerShell ドキュメント*の「[About Quoting Rules](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7)」を参照してください。

------
#### [ Windows command prompt ]

二重引用符 `" "` を使用します。

```
C:\> aws ec2 create-key-pair --key-name "my key pair"
```

------

オプションとして、パラメータ名と値をスペースの代わりに等号 `=` で区切ることができます。通常、これはパラメータの値がハイフンで始まる場合にのみ必要です。

```
$ aws ec2 delete-key-pair --key-name=-mykey
```

## 文字列内での引用符の使用
<a name="cli-usage-parameters-quoting-strings-containing"></a>

文字列に引用符が含まれている場合があり、シェルが正しく動作するためには、引用符のエスケープが必要になることがあります。パラメータ値の一般的なタイプの 1 つとして JSON 文字列があります。JSON 構造内の各要素の名前と値の前後にスペースと二重引用符 `" "` が含まれているため、これは複雑です。コマンドラインで JSON 形式のパラメータを入力する方法はオペレーティングシステムによって異なります。

コマンドラインでより高度な JSON を使用するには、`jq` のようなコマンドライン JSON プロセッサを使用して JSON 文字列を作成することを検討してください。`jq` の詳細については、*GitHub* の [jq repository](http://stedolan.github.io/jq/) を参照してください。

------
#### [ Linux and macOS ]

Linux および macOS で文字列を文字どおりに解釈するには、次の例のように、一重引用符 `' '` を使用して JSON データ構造を囲みます。JSON 文字列に埋め込まれた二重引用符は、文字どおり処理されるため、エスケープする必要はありません。JSON は一重引用符で囲まれているため、文字列内の一重引用符はエスケープする必要があります。このためには、通常は一重引用符 `\'` の前にバックスラッシュを使用します。

```
$ aws ec2 run-instances \
    --image-id ami-12345678 \
    --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'
```

引用符の使用方法の詳細については、使用するシェルのユーザードキュメントを参照してください。

------
#### [ PowerShell ]

一重引用符 `' '` または二重引用符 `" "` を使用します。

**一重引用符 (推奨)**

一重引用符 `' '` は `verbatim` 文字列と呼ばれます。文字列は、入力したとおりにコマンドに渡されるため、PowerShell 変数は通過しません。

JSON データ構造には二重引用符が含まれているため、**一重**引用符 `' '` で囲むことをお勧めします。**一重**引用符を使用する場合は、JSON 文字列に埋め込まれた**二重**引用符をエスケープする必要はありません。ただし、JSON 構造内では、各**一重**引用符をバックティック ``` でエスケープする必要があります。

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'
```

**二重引用符**

二重引用符 `" "` は `expandable` 文字列と呼ばれます。変数は拡張可能な文字列で渡すことができます。

**二重**引用符を使用する場合は、JSON 文字列に埋め込まれた **一重**引用符をエスケープする必要はありません。ただし、次の例のように、JSON 構造内で各**二重**引用符をバックティック ``` でエスケープする必要があります。

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings "[{`"DeviceName`":`"/dev/sdb`",`"Ebs`":{`"VolumeSize`":20,`"DeleteOnTermination`":false,`"VolumeType`":`"standard`"}}]"
```

引用符の使用方法の詳細については、*Microsoft PowerShell ドキュメント*の「[About Quoting Rules](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7)」を参照してください。

**警告**  
PowerShell は AWS CLI にコマンドを送信する前に、コマンドが一般的な PowerShell と `CommandLineToArgvW` 引用ルールのどちらを使用して解釈されるかを判断します。PowerShell が `CommandLineToArgvW` を使用して処理する場合は、バックスラッシュ `\` で文字をエスケープする必要があります。  
PowerShell の`CommandLineToArgvW` 詳細については、[ マイクロソフトドキュメントブログの](https://devblogs.microsoft.com/oldnewthing/20100917-00/?p=12833)「*Microsoft DevBlogs* [の CommandLineToArgvW による引用符とバックスラッシュの奇妙な扱いの理由](https://docs.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way)」を参照してください。*コマンドライン引数を間違った方法で引用する人々*、[ および Microsoft Docs ](https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw#remarks)の *CommandLineToArgvW 関数を参照してください * 。  
**一重引用符**  
一重引用符 `' '` は `verbatim` 文字列と呼ばれます。文字列は、入力したとおりにコマンドに渡されるため、PowerShell 変数は通過しません。バックスラッシュ `\` で文字をエスケープします。  

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings '[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]'
```
**二重引用符**  
二重引用符 `" "` は `expandable` 文字列と呼ばれます。変数は `expandable` 文字列で渡すことができます。二重引用符で囲まれた文字列の場合、バックティックだけを使用するのではなく、引用符ごとに *`\$1* を使用して 2 回エスケープする必要があります。バックティックはバックスラッシュをエスケープし、バックスラッシュは `CommandLineToArgvW` プロセスのエスケープ文字として使用されます。  

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings "[{`\"DeviceName`\":`\"/dev/sdb`\",`\"Ebs`\":{`\"VolumeSize`\":20,`\"DeleteOnTermination`\":false,`\"VolumeType`\":`\"standard`\"}}]"
```
**Blobs (推奨)**  
JSON データ入力の PowerShell 引用ルールをバイパスするには、BLOB を使用して JSON データを AWS CLI に直接渡します。BLOB の詳細については、「[blob](cli-usage-parameters-types.md#parameter-type-blob)」を参照してください。

------
#### [ Windows command prompt ]

Windows コマンドプロンプトでは、JSON データ構造を二重引用符 `" "` で囲む必要があります。また、コマンドプロセッサによって、JSON に埋め込まれた二重引用符が誤って解釈されないようにするには、以下の例のように、JSON データ構造内の各二重引用符 `\` をエスケープする (バックスラッシュ `"` 文字で始める) 必要もあります。

```
C:\> aws ec2 run-instances ^
    --image-id ami-12345678 ^
    --block-device-mappings "[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]"
```

最も外側の二重引用符のみエスケープしません。

------

# AWS CLI でのファイルからのパラメータの読み込み
<a name="cli-usage-parameters-file"></a>

一部のパラメータでは、AWS CLI がデータをロードするファイル名を引数として期待します。他のパラメータを使用すると、コマンドラインで入力するテキストまたはファイルから読み取るテキストとしてパラメータ値を指定できます。ファイルが必須であるか省略可能であるかに関係なく、AWS CLI がファイルを理解できるように、ファイルを正しくエンコードする必要があります。ファイルのエンコーディングは、読み取りシステムのデフォルトロケールと一致する必要があります。これは、Python の `locale.getpreferredencoding()` メソッドを使用して判断できます。

この方法は 1 つのファイルで 1 つのパラメータを読み込む場合に使用します。1 つのファイルで複数のパラメータを読み込む方法については、「[AWS CLI skeletons and input files in the AWS CLI](cli-usage-skeleton.md)」を参照してください。

**注記**  
デフォルトでは、Windows PowerShell はテキストを UTF-16 として出力します。これは、JSON ファイルおよび多くの Linux システムで使用されている UTF-8 エンコードと競合します。`-Encoding ascii` が結果として得られるファイルを読み取ることができるように、PowerShell `Out-File` コマンドで AWS CLI を使用することをお勧めします。

**Topics**
+ [ファイルからパラメータを読み込む方法](#cli-usage-parameters-file-how)
+ [バイナリファイル](#cli-usage-parameters-file-binary)
+ [リモートファイル](#cli-usage-parameters-file-remote)
+ [短縮構文の値としてファイルを読み込む](#cli-usage-parameters-file-shorthand)

## ファイルからパラメータを読み込む方法
<a name="cli-usage-parameters-file-how"></a>

場合によっては、コマンドラインパラメータ値としてすべてを入力することを試みる代わりに、ファイルからパラメータ値をロードすることが便利なことがあります (パラメータが複雑な JSON 文字列の場合など)。値を含むファイルを指定するには、次の形式でファイル URL を指定します。

```
file://complete/path/to/file
```
+ 最初の 2 つのスラッシュ「/」文字は仕様の一部です。必要なパスが「/」で始まる場合、結果は 3 つのスラッシュ文字 `file:///folder/file` になります。
+ この URI は、実際のパラメータコンテンツが含まれているファイルへのパスを示します。
+ スペースまたは特殊文字を含むファイルを使用する場合は、お使いの端末の[引用符とエスケープのルール](cli-usage-parameters-quoting-strings.md)に従ってください。

**注記**  
すでに URL を期待しているパラメータ (CloudFormation テンプレート URL を特定するパラメータなど) では、この動作が自動的に無効化されます。また、AWS CLI 設定ファイルの [`cli_follow_urlparam`](cli-configure-files.md#cli-config-cli_follow_urlparam) 設定を無効にすることで、この動作を無効にできます。

次の例のファイルパスは、現在の作業ディレクトリに対する相対値として解釈されます。

------
#### [ Linux or macOS ]

```
// Read from a file in the current directory
$ aws ec2 describe-instances --filters file://filter.json

// Read from a file in /tmp
$ aws ec2 describe-instances --filters file:///tmp/filter.json

// Read from a file with a filename with whitespaces
$ aws ec2 describe-instances --filters 'file://filter content.json'
```

------
#### [ Windows command prompt ]

```
// Read from a file in C:\temp
C:\> aws ec2 describe-instances --filters file://C:\temp\filter.json

// Read from a file with a filename with whitespaces
C:\> aws ec2 describe-instances --filters "file://C:\temp\filter content.json"
```

------

`file://` プレフィックスオプションは、「`~/`」、「`./`」、および「`../`」など、Unix 形式の拡張子をサポートしています。Windows では、「`~/`」式は、`%USERPROFILE%` 環境変数に格納されているユーザーディレクトリに展開されます。例えば、Windows 10 では、一般にユーザーディレクトリは `%USERPROFILE%` にあります。

別の JSON ドキュメントの値として埋め込まれている JSON ドキュメントもエスケープする必要があります。

```
$ aws sqs create-queue --queue-name my-queue --attributes file://attributes.json
```

**attributes.json**

```
{
  "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-west-2:0123456789012:deadletter\", \"maxReceiveCount\":\"5\"}"
}
```

## バイナリファイル
<a name="cli-usage-parameters-file-binary"></a>

バイナリデータをパラメータとして取るコマンドでは、`fileb://` プレフィックスを使用して、データがバイナリコンテンツであることを指定します。バイナリデータを受け入れるコマンドは次のとおりです。
+  **`aws ec2 run-instances:`**`--user-data`パラメータ 
+  **`aws s3api put-object:`**`--sse-customer-key`パラメータ 
+  **`aws kms decrypt:`**`--ciphertext-blob`パラメータ 

次の例では、Linux コマンドラインツールを使用してバイナリ 256 ビット AES キーを生成し、Amazon S3 に渡して、アップロードされたファイルをサーバー側で暗号化します。

```
$ dd if=/dev/urandom bs=1 count=32 > sse.key
32+0 records in
32+0 records out
32 bytes (32 B) copied, 0.000164441 s, 195 kB/s
$ aws s3api put-object \
    --bucket amzn-s3-demo-bucket \
    --key test.txt \
    --body test.txt \
    --sse-customer-key fileb://sse.key \
    --sse-customer-algorithm AES256
{
    "SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==",
    "SSECustomerAlgorithm": "AES256",
    "ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\""
}
```

## リモートファイル
<a name="cli-usage-parameters-file-remote"></a>

AWS CLI では、`http://` または `https://` URL を使用して、インターネットでホストされているファイルからパラメータをロードすることもできます。次の例では、Amazon S3 バケットに格納されているファイルを参照しています。これにより、任意のコンピュータからパラメータファイルにアクセスできますが、コンテナが公開されている必要があります。

```
$ aws ec2 run-instances \
    --image-id ami-12345678 \
    --block-device-mappings http://amzn-s3-demo-bucket.s3.amazonaws.com/filename.json
```

前の例では、ファイル `filename.json` が以下の JSON データを含んでいると仮定しています。

```
[
  {
    "DeviceName": "/dev/sdb",
    "Ebs": {
      "VolumeSize": 20,
      "DeleteOnTermination": false,
      "VolumeType": "standard"
    }
  }
]
```

JSON 形式のパラメータを含むファイルを参照する別の例については、[ユーザーへの IAM 管理ポリシーのアタッチ](cli-services-iam.md#cli-services-iam-policy) をご参照ください。

## 短縮構文の値としてファイルを読み込む
<a name="cli-usage-parameters-file-shorthand"></a>

短縮構文を使用する場合、値が大きいときや複雑なときは、値をファイルとして読み込む方が簡単なことがよくあります。ファイルを短縮構文の値として読み込む場合、形式が少し変わります。`key=value` で、`=` 演算子の代わりに `@=` 演算子を使用します。`@=` は AWS CLI に対して、その値を文字列ではなくファイルパスとして解釈するように指示します。次の例では、キーと値のペアを使用してファイルを読み込む方法を示しています。

------
#### [ Linux or macOS ]

```
--option key@=file://template.txt
```

------
#### [ Windows ]

```
--option "key1@=file://template.txt"
```

------

次の例では、`aws rolesanywhere create-trust-anchor` コマンドで証明書ファイルを読み込む方法を示しています。

```
$ aws rolesanywhere create-trust-anchor --name TrustAnchor \
    --source sourceData={x509CertificateData@=file://root-ca.crt},sourceType="CERTIFICATE_BUNDLE"  \ 
    --enabled
```

短縮構文の詳細については、「[Using shorthand syntax in the AWS CLI](cli-usage-shorthand.md)」を参照してください。

# AWS CLI skeletons and input files in the AWS CLI
<a name="cli-usage-skeleton"></a>

ほとんどの AWS CLI コマンドは、ファイルからのパラメータ入力のインポートに対応しています。これらのテンプレートは `generate-cli-skeleton` オプションを使用して生成し、`--cli-input-json` パラメータを使用してインポートできます。

**Topics**
+ [AWS CLI スケルトンと入力ファイルについて](#cli-usage-skeleton-about)
+ [コマンドスケルトンを生成してインポートする](#cli-usage-skeleton-generate)
+ [入力ファイルとコマンドラインパラメータの組み合わせ](#cli-usage-skeleton-combine)

## AWS CLI スケルトンと入力ファイルについて
<a name="cli-usage-skeleton-about"></a>

ほとんどの AWS Command Line Interface (AWS CLI) コマンドは、`--cli-input-json` パラメータを使用してファイルからパラメータ入力をインポートする機能をサポートしています。

これらの同じコマンドは、`--generate-cli-skeleton` パラメータを使用して、JSON 形式のファイルを生成します。このファイルには、編集および入力できるすべてのパラメータが含まれています。その後、入力済みのファイルを `--cli-input-json` パラメータで指定してこのコマンドを実行できます。

**重要**  
[`aws s3` コマンド](https://docs.aws.amazon.com/cli/v1/reference/s3/index.html) などのカスタム AWS CLI コマンドは、このトピックで説明している `--generate-cli-skeleton` または `--cli-input-json` および パラメータをサポートしていません。特定のコマンドがこれらのパラメータをサポートしているかどうかを確認するには、使用するコマンドに対して [`help` コマンド](cli-usage-help.md#cli-usage-help-command)を実行するか、[AWS CLI バージョン 1 リファレンスガイド](https://docs.aws.amazon.com/cli/v1/reference/)を参照してください。

`--generate-cli-skeleton` は、カスタマイズしてコマンドの入力として使用できるパラメータテンプレートを生成して表示します。生成されるテンプレートには、そのコマンドによってサポートされているすべてのパラメータが含まれています。

`--generate-cli-skeleton` パラメータには、次のいずれかの値を指定できます。
+ `input` - 生成されたテンプレートには、JSON 形式の入力パラメータがすべて含まれます。これは、デフォルト値です。
+ `output` - 生成されたテンプレートには、JSON 形式の出力パラメータがすべて含まれます。

AWS CLI は基本的にサービスの API の「ラッパー」であるため、スケルトンファイルは、すべてのパラメータを、基になる API パラメータ名で参照することを想定しています。このパラメータ名は AWS CLI のものとは異なることがあります。例えば、AWS CLI という名前の `user-name` パラメータは、AWS という名前の `UserName` のサービスの API パラメータにマップされる場合があります (大文字小文字が変更されダッシュがないことに注意)。エラーを回避するために、`--generate-cli-skeleton` オプションを使用して「正しい」パラメータ名でテンプレートを生成することをお勧めします。サービスの API リファレンスガイドを参照して、使用可能なパラメータ名を確認できます。テンプレートから、値を指定しない必須でないパラメータを削除できます。

例えば、次のコマンドを実行すると、Amazon Elastic Compute Cloud (Amazon EC2) コマンド**run-instances**のパラメータテンプレートが生成されます 。

------
#### [ JSON ]

次の例は、`input` パラメータのデフォルト値 (`--generate-cli-skeleton`) を使用して JSON でフォーマットされたテンプレートを生成する方法を示しています。

```
$ aws ec2 run-instances --generate-cli-skeleton
```

```
{
    "DryRun": true,
    "ImageId": "",
    "MinCount": 0,
    "MaxCount": 0,
    "KeyName": "",
    "SecurityGroups": [
        ""
    ],
    "SecurityGroupIds": [
        ""
    ],
    "UserData": "",
    "InstanceType": "",
    "Placement": {
        "AvailabilityZone": "",
        "GroupName": "",
        "Tenancy": ""
    },
    "KernelId": "",
    "RamdiskId": "",
    "BlockDeviceMappings": [
        {
            "VirtualName": "",
            "DeviceName": "",
            "Ebs": {
                "SnapshotId": "",
                "VolumeSize": 0,
                "DeleteOnTermination": true,
                "VolumeType": "",
                "Iops": 0,
                "Encrypted": true
            },
            "NoDevice": ""
        }
    ],
    "Monitoring": {
        "Enabled": true
    },
    "SubnetId": "",
    "DisableApiTermination": true,
    "InstanceInitiatedShutdownBehavior": "",
    "PrivateIpAddress": "",
    "ClientToken": "",
    "AdditionalInfo": "",
    "NetworkInterfaces": [
        {
            "NetworkInterfaceId": "",
            "DeviceIndex": 0,
            "SubnetId": "",
            "Description": "",
            "PrivateIpAddress": "",
            "Groups": [
                ""
            ],
            "DeleteOnTermination": true,
            "PrivateIpAddresses": [
                {
                    "PrivateIpAddress": "",
                    "Primary": true
                }
            ],
            "SecondaryPrivateIpAddressCount": 0,
            "AssociatePublicIpAddress": true
        }
    ],
    "IamInstanceProfile": {
        "Arn": "",
        "Name": ""
    },
    "EbsOptimized": true
}
```

------

## コマンドスケルトンを生成してインポートする
<a name="cli-usage-skeleton-generate"></a>

**パラメータスケルトンファイルを生成して使用するには**

1. `--generate-cli-skeleton` パラメータを指定してコマンドを実行して JSON のを生成し、出力を保存用ファイルに送ります。

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json
   ```

------

1. テキストエディタでパラメータスケルトンファイルを開き、不要なパラメータを削除します。例えば、テンプレートを次のように削除できます。不要な要素を削除した後、ファイルが有効な JSON であることを確認します。

------
#### [ JSON ]

   ```
   {
       "DryRun": true,
       "ImageId": "",
       "KeyName": "",
       "SecurityGroups": [
           ""
       ],
       "InstanceType": "",
       "Monitoring": {
           "Enabled": true
       }
   }
   ```

------

   この例では、Amazon EC2 ドライラン機能を使用するには、`DryRun` パラメータを `true` に設定したままにします。この機能を使用すると、実際にリソースを作成または変更することなく、コマンドを安全にテストできます。

1. 残りの値には、シナリオに適した値を入力します。この例では、インスタンスタイプ、キー名、セキュリティグループ、および使用する Amazon マシンイメージ (AMI) の識別子を指定しています。この例では、デフォルトの AWS リージョン リージョンを前提としています。AMI `ami-dfc39aef` は、`us-west-2` リージョンでホストされている 64 ビットの Amazon Linux イメージです。別のリージョンを使用する場合は、[使用する正しい AMI ID を見つける必要があります](https://aws.amazon.com/amazon-linux-ami/)。

------
#### [ JSON ]

   ```
   {
       "DryRun": true,
       "ImageId": "ami-dfc39aef",
       "KeyName": "mykey",
       "SecurityGroups": [
           "my-sg"
       ],
       "InstanceType": "t2.micro",
       "Monitoring": {
           "Enabled": true
       }
   }
   ```

------

1. `file://` プレフィックスを使用して、完了したテンプレートファイルを `--cli-input-json` パラメータのに渡すことによって、入力済みパラメータでコマンドを実行します。AWS CLI は、パスを現在の作業ディレクトリからの相対パスとして解釈します。次の例では、AWS CLI は現在の作業ディレクトリ内のファイルを検索します。

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --cli-input-json file://ec2runinst.json
   ```

   ```
   A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
   ```

------

   リハーサルのエラーは、JSON の形式が正しく、パラメータ値が有効であることを示します。出力でその他の問題が報告された場合は、それを修正し、「`Request would have succeeded`」というメッセージが表示されるまで前のステップを繰り返します。

1. これで、`DryRun` パラメータを `false` に設定して、dry run を無効にできます。

------
#### [ JSON ]

   ```
   {
       "DryRun": false,
       "ImageId": "ami-dfc39aef",
       "KeyName": "mykey",
       "SecurityGroups": [
           "my-sg"
       ],
       "InstanceType": "t2.micro",
       "Monitoring": {
           "Enabled": true
       }
   }
   ```

------

1. コマンドを実行すると、`run-instances` は Amazon EC2 インスタンスを実際に起動し、正常起動によって生成された詳細を表示します。出力の形式は、入力パラメータテンプレートの形式とは別に、`--output` パラメータによって制御されます。

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json
   ```

   ```
   {
       "OwnerId": "123456789012",
       "ReservationId": "r-d94a2b1",
       "Groups": [],
       "Instances": [
   ...
   ```

------

## 入力ファイルとコマンドラインパラメータの組み合わせ
<a name="cli-usage-skeleton-combine"></a>

入力ファイルはすべてのパラメータに使用することも、AWS CLI で指定したパラメータと組み合わせることもできます。この機能を利用すると、繰り返し使用する設定は入力ファイルに保存する一方で、個別の設定はコマンド自体で指定できます。

次の `aws ec2 run-instances` の例では、入力ファイルとパラメータを組み合わせて使用しています。使用する Amazon マシンイメージ (AMI) のインスタンスタイプ、キー名、セキュリティグループ、識別子を指定し、デフォルトの AWS リージョン を前提としています。AMI `ami-dfc39aef` は、`us-west-2` リージョンでホストされている 64 ビットの Amazon Linux イメージです。別のリージョンを使用する場合は、[使用する正しい AMI ID を見つける必要があります](https://aws.amazon.com/amazon-linux-ami/)。

------
#### [ JSON ]

JSON ファイルの内容:

```
{
    "ImageId": "ami-dfc39aef",
    "KeyName": "mykey",
    "SecurityGroups": [
        "my-sg"
    ],
    "InstanceType": "t2.micro",
    "Monitoring": {
        "Enabled": true
    }
}
```

------

次の例では、入力ファイルと `--dry-run` パラメータを組み合わせて使用して、コマンドをドライランし、必要なアクセス許可があるかどうか、ファイルに有効な値が入力されているかどうかを確認します。

------
#### [ JSON ]

```
$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --dry-run
```

```
A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
```

------

次の例では、同じ入力ファイルを使用しますが、`--no-dry-run` パラメータを使用してコマンドを本番実行しています。

------
#### [ JSON ]

```
$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --no-dry-run --output json
```

```
{
    "OwnerId": "123456789012",
    "ReservationId": "r-d94a2b1",
    "Groups": [],
    "Instances": [
...
```

------

# Using shorthand syntax in the AWS CLI
<a name="cli-usage-shorthand"></a>

AWS Command Line Interface (AWS CLI) は、JSON 形式の多くのオプションパラメータを受け入れることができます。ただし、大きな JSON リストや構造体をコマンドラインに入力するのは手間がかかる場合があります。これを簡単にするために、AWS CLI は短縮構文もサポートしているため、完全な JSON 形式を使用するより、オプションパラメータを簡単に表現できます。

**Topics**
+ [キーと値のペアでパラメータを構造化する](#shorthand-structure-parameters)
+ [短縮構文の値としてファイルを読み込む](#shorthand-files)
+ [AWS CLI を使用した短縮構文の使用](#shorthand-list-parameters)

## キーと値のペアでパラメータを構造化する
<a name="shorthand-structure-parameters"></a>

AWS CLI の短縮構文を利用すると、ユーザーがフラットなパラメータ (ネストされていない構造) に入力するのが容易になります。形式は、キーと値のペアのカンマ区切りリストです。短縮構文は文字列であるため、必ず、お使いのターミナルに適した[引用](cli-usage-parameters-quoting-strings.md)とエスケープの規則を使用してください。

------
#### [ Linux or macOS ]

```
--option key1=value1,key2=value2,key3=value3
```

JSON 形式の次の例と同じになっています。

```
--option '{"key1":"value1","key2":"value2","key3":"value3"}'
```

------
#### [ Windows ]

```
--option "key1=value1,key2=value2,key3=value3"
```

JSON 形式の次の例と同じになっています。

```
--option '{"key1":"value1","key2":"value2","key3":"value3"}'
```

------

それぞれのカンマ区切りのキーと値のペアの間に空白があってはいけません。以下に、Amazon DynamoDB `update-table` コマンドの例を示します。`--provisioned-throughput` オプションは、省略表記で指定されています。

```
$ aws dynamodb update-table \
    --provisioned-throughput ReadCapacityUnits=15,WriteCapacityUnits=10 \
    --table-name MyDDBTable
```

これは、JSON 形式の次の例と同じになっています。

```
$ aws dynamodb update-table \
    --provisioned-throughput '{"ReadCapacityUnits":15,"WriteCapacityUnits":10}' \
    --table-name MyDDBTable
```

## 短縮構文の値としてファイルを読み込む
<a name="shorthand-files"></a>

値が大きいときや複雑なときは、値として読み込む方が簡単なことがよくあります。ファイルを短縮構文の値として読み込む場合、形式が少し変わります。`key=value` で、`=` 演算子の代わりに `@=` 演算子を使用します。`@=` は AWS CLI に対して、その値を文字列ではなくファイルパスとして解釈するように指示します。短縮構文でファイルを読み込む場合、通常の [AWS CLI ファイル形式ルールが適用](cli-usage-parameters-file.md)されます。次の例では、キーと値のペアを使用してファイルを読み込む方法を示しています。

------
#### [ Linux or macOS ]

```
--option key@=file://template.txt
```

------
#### [ Windows ]

```
--option "key1@=file://template.txt"
```

------

次の例では、`aws rolesanywhere create-trust-anchor` コマンドで証明書ファイルを読み込む方法を示しています。

```
$ aws rolesanywhere create-trust-anchor --name TrustAnchor \
    --source sourceData={x509CertificateData@=file://root-ca.crt},sourceType="CERTIFICATE_BUNDLE"  \ 
    --enabled
```

## AWS CLI を使用した短縮構文の使用
<a name="shorthand-list-parameters"></a>

リストフォーム内の入力パラメータは、JSON または省略形の 2 つの方法で指定できます。AWS CLI の短縮構文は、数値、文字列、またはネストされていない構造体が含まれるリストを簡単に渡せるように設計されています。

基本的な形式を次に示します。ここで、リストの値は、1 つのスペースで区切られます。

```
--option value1 value2 value3
```

これは、JSON 形式の次の例と同じになっています。

```
--option '[value1,value2,value3]'
```

前述したように、数字のリスト、文字列のリスト、またはネストされていない構造の省略表現のリストを指定できます。Amazon Elastic Compute Cloud (Amazon EC2) の `stop-instances` コマンドの例を次に示します。ここで、`--instance-ids` オプションの入力パラメータ (文字列のリスト) は省略表現で指定されています。

```
$ aws ec2 stop-instances \
    --instance-ids i-1486157a i-1286157c i-ec3a7e87
```

これは、JSON 形式の次の例と同じになっています。

```
$ aws ec2 stop-instances \
    --instance-ids '["i-1486157a","i-1286157c","i-ec3a7e87"]'
```

次の例は、Amazon EC2 `create-tags` コマンドを示しています。このコマンドは、`--tags` オプションのネストされていない構造のリストを取得します。`--resources` オプションは、タグを付けるインスタンスの ID を指定します。

```
$ aws ec2 create-tags \
    --resources i-1286157c \
    --tags Key=My1stTag,Value=Value1 Key=My2ndTag,Value=Value2 Key=My3rdTag,Value=Value3
```

これは、JSON 形式の次の例と同じになっています。JSON パラメータは、読みやすくするために複数行で記述されます。

```
$ aws ec2 create-tags \
    --resources i-1286157c \
    --tags '[
        {"Key": "My1stTag", "Value": "Value1"},
        {"Key": "My2ndTag", "Value": "Value2"},
        {"Key": "My3rdTag", "Value": "Value3"}
    ]'
```