ファイルから AWS CLI パラメータをロードする - AWS Command Line Interface

このドキュメントは、のバージョン 1 AWS CLI のみを対象としています。のバージョン 2 に関連するマニュアルについては AWS CLI、『バージョン 2 ユーザーガイド』を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ファイルから AWS CLI パラメータをロードする

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

注記

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

ファイルからパラメータをロードする方法

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

file://complete/path/to/file
  • 最初の 2 つのスラッシュ「/」文字は仕様の一部です。必要なパスが「/」で始まる場合、結果は 3 つのスラッシュ文字 file:///folder/file になります。

  • この URI は、実際のパラメータコンテンツが含まれているファイルへのパスを示します。

  • スペースまたは特殊文字を含むファイルを使用する場合は、お使いの端末の引用符とエスケープのルールに従ってください。

注記

すでに URL を期待しているパラメータ (AWS CloudFormation テンプレート URL を特定するパラメータなど) では、この動作が自動的に無効化されます。また、AWS CLI 設定ファイルの 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 では、一般にユーザーディレクトリは C:\Users\UserName\ にあります。

別の 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\"}" }

バイナリファイル

バイナリデータをパラメータとして取るコマンドでは、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 my-bucket \ --key test.txt \ --body test.txt \ --sse-customer-key fileb://sse.key \ --sse-customer-algorithm AES256 { "SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==", "SSECustomerAlgorithm": "AES256", "ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\"" }

リモートファイル

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

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

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

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

JSON 形式のパラメータを含むファイルを参照する別の例については、IAM 管理ポリシーをユーザーにアタッチする をご参照ください。