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

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

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

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

注記

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

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

file://complete/path/to/file

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

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

注記

すでに URL を期待しているパラメータ (AWS CloudFormation テンプレート URL を特定するパラメータなど) では、この動作が自動的に無効化されます。

また、次の行を CLI 設定ファイルに追加することでも、手動でこの動作を無効にすることができます。

cli_follow_urlparam = false

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

Linux または 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

Windows

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

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

別の 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 ユーザーへの IAM 管理ポリシーのアタッチ」を参照してください。