AWS CLI でのファイルからのパラメータの読み込み
一部のパラメータでは、AWS CLI がデータをロードするファイル名を引数として期待します。他のパラメータを使用すると、コマンドラインで入力するテキストまたはファイルから読み取るテキストとしてパラメータ値を指定できます。ファイルが必須であるか省略可能であるかに関係なく、AWS CLI がファイルを理解できるように、ファイルを正しくエンコードする必要があります。ファイルのエンコーディングは、読み取りシステムのデフォルトロケールと一致する必要があります。これは、Python の locale.getpreferredencoding()
メソッドを使用して判断できます。
この方法は 1 つのファイルで 1 つのパラメータを読み込む場合に使用します。1 つのファイルで複数のパラメータを読み込む方法については、「AWS CLI skeletons and input files in the AWS CLI」を参照してください。
注記
デフォルトでは、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 は、実際のパラメータコンテンツが含まれているファイルへのパスを示します。
-
スペースまたは特殊文字を含むファイルを使用する場合は、お使いの端末の引用符とエスケープのルールに従ってください。
次の例のファイルパスは、現在の作業ディレクトリに対する相対値として解釈されます。
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 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\"" }
JSON 形式のパラメータを含むファイルを参照する別の例については、ユーザーへの IAM 管理ポリシーのアタッチ をご参照ください。
短縮構文の値としてファイルを読み込む
短縮構文を使用する場合、値が大きいときや複雑なときは、値をファイルとして読み込む方が簡単なことがよくあります。ファイルを短縮構文の値として読み込む場合、形式が少し変わります。key=value
で、=
演算子の代わりに @=
演算子を使用します。@=
は AWS CLI に対して、その値を文字列ではなくファイルパスとして解釈するように指示します。次の例では、キーと値のペアを使用してファイルを読み込む方法を示しています。
次の例では、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」を参照してください。