

**このドキュメントはバージョン 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/)を参照してください。

# 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)」を参照してください。