從 中的檔案載入參數 AWS CLI - AWS Command Line Interface

本文件 AWS CLI 僅適用於 的第 1 版。如需與 第 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
  • 前兩個斜線「/」字元是規格的一部分。如果所需的路徑以「/」開頭,則結果為三個斜線字元:file:///folder/file

  • URL 提供包含實際參數內容的檔案路徑。

  • 使用帶有空格或特殊字符的檔案時,請遵循您的終端機適用的引用和轉義規則

注意

對於已經預期 的參數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 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\"" }

遠端檔案

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受管政策連接至使用者