本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CLI 第 2 版的新功能和變更
本主題說明新功能以及 AWS CLI 第 1 版和 AWS CLI 第 2 版之間的行為變更。這些變更可能需要您更新指令碼或命令,才能在第 2 版中獲得與在第 1 版中執行的相同行為。
AWS CLI 第 2 版新功能
AWS CLI 第 2 版是 AWS CLI 的最新主要版本,並支援所有最新功能。在第 2 版中推出的某些功能無法回溯至第 1 版,因此您必須升級才能存取這些功能。重要功能如下所示:
- 不需要 Python 解譯器
-
AWS CLI 第 2 版不需要另外安裝 Python。它包括一個嵌入式版本。
- 精靈
-
您可以在 AWS CLI 第 2 版使用精靈。該精靈會逐步引導您建構某些命令。
- IAM Identity Center 驗證
-
如果您的組織使用 AWS IAM Identity Center (IAM Identity Center),則您的使用者可以登入 Active Directory、內建的 IAM Identity Center 目錄或連線至 IAM Identity Center 的其他 IdP。然後,它們會映射到可讓您執行 AWS CLI 命令的 AWS Identity and Access Management (IAM) 角色。
- 自動提示
-
啟用時,AWS CLI 第 2 版會在您執行
aws
命令時提示您命令、參數和資源。 - AWS CLI 從官方 Amazon ECR 公共或碼頭圖像運行
-
AWS CLI 的官方 Docker 映像提供了 AWS 直接支援和維護的隔離性、可攜性和安全性。如此可讓您在以容器為基礎的環境中使用 AWS CLI 第 2 版,而不必自行管理安裝。
- 用戶端分頁程式
-
AWS CLI 第 2 版允許使用用戶端分頁程式進行輸出。根據預設,此功能會開啟並透過作業系統的預設分頁程式傳回所有輸出。
- aws configure import
-
匯入從 AWS Management Console 產生的
.csv
憑證。系統會匯入.csv
檔案,其設定檔名稱與 IAM 使用者名稱相符。 aws configure list-profiles
-
列出已配置的所有設定檔的名稱。
- YAML 串流輸出格式
-
yaml
和yaml-stream
格式會利用 YAML格式,同時透過將資料串流傳輸給您,提供更快的大型資料集檢視回應速度。您可以先開始檢視和使用 YAML 資料,再下載整體查詢。 - 新增 DynamoDB 的高階
ddb
命令 -
AWS CLI 第 2 版具有高階 Amazon DynamoDB 命令
ddb put
和 ddb select
。這些命令提供簡化的界面,用於將項目放入 DynamoDB 資料表,以及在 DynamoDB 資料表或索引中進行搜尋。 aws logs tail
-
AWS CLI 第 2 版具有自訂
aws logs tail
命令,可用於對 Amazon CloudWatch Logs 群組的日誌執行 tail 指令。預設情況下,該命令會傳回過去十分鐘內來自所有關聯的 CloudWatch Logs 串流的日誌。 - 為高階 s3 命令新增中繼資料支援
-
AWS CLI 第 2 版為高階
s3
命令新增--copy-props
參數。使用此參數,您可以為 Amazon Simple Storage Service (Amazon S3) 設定更多的中繼資料和標籤。 - AWS_REGION
-
AWS CLI 第 2 版具有名為
AWS_REGION
的 AWS SDK 相容環境變數。此變數指定要將請求傳送至哪個 AWS 區域。它會覆寫AWS_DEFAULT_REGION
環境變數,該變數僅適用於 AWS CLI。
AWS CLI 第 1 版和 AWS CLI 第 2 版之間的重大變更
本節說明 AWS CLI 第 1 版與 AWS CLI 第 2 版之間的所有行為變更。這些變更可能需要您更新指令碼或命令,才能在第 2 版中獲得與在第 1 版中執行的相同行為。
主題
- 已新增環境變數以設定文字檔案編碼
- 預設情況下,會以 base64 編碼字串的格式傳遞二進位參數
- 改善 Amazon S3 針對分段副本的檔案屬性和標籤的處理
- 不會為參數自動擷取 http:// 或 https:// URL
- 預設情況下,對於所有輸出使用的分頁程式
- 時間戳記輸出值會標準化為 ISO 8601 格式
- 改善未造成任何變更的 CloudFormation 部署處理
- 已變更 us-east-1 區域的區域性 Amazon S3 端點的預設行為
- 已變更區域性 AWS STS 端點的預設行為
- 已移除 ecr get-login 並替換為 ecr get-login-password
- 對外掛程式的 AWS CLI 第 2 版支援正在改變
- 已移除隱藏別名支援
- 不支援 api_versions 組態檔案設定
- AWS CLI 第 2 版僅使用 Signature v4 驗證 Amazon S3 請求。
- AWS CLI 第 2 版與分頁參數更為一致
- AWS CLI 第 2 版在所有命令中提供更一致的傳回代碼
已新增環境變數以設定文字檔案編碼
預設情況下,文字檔案使用與安裝的地區設定相同的編碼。Blob由於 AWS CLI 第 2 版使用嵌入式 Python 版本,PYTHONUTF8
和 PYTHONIOENCODING
不支援環境變數。若要將文字檔案的編碼設定為與地區設定不同,請使用 AWS_CLI_FILE_ENCODING
環境變數。以下範例設定 AWS CLI 使用 Windows 上的 UTF-8
來開啟文字檔案。
AWS_CLI_FILE_ENCODING=UTF-8
如需詳細資訊,請參閱 要設定的環境變數 AWS CLI。
預設情況下,會以 base64 編碼字串的格式傳遞二進位參數
在 AWS CLI 中,有些命令 base64
預設情況下,AWS CLI 第 2 版會以 base64 編碼字串 blobs
(二進位大型物件) 傳遞所有二進位輸入和二進位輸出參數。如需更多詳細資訊,請參閱 Blob。
若要還原為 AWS CLI 第 1 版行為,請使用 cli_binary_format
檔案組態或 --cli-binary-format
參數。
改善 Amazon S3 針對分段副本的檔案屬性和標籤的處理
當您在 aws s3
命名空間中使用 AWS CLI 第 1 版命令,將檔案從一個 S3 儲存貯體位置複製到另一個位置,並且該操作使用分段副本時,不會將檔案屬性從來源物件複製到目的地物件。
預設情況下,AWS CLI 第 2 版中的相關命令會將所有標籤和部分屬性從來源傳輸到目的地副本。相較於 AWS CLI 第 1 版,這可能會導致對 Amazon S3 端點進行更多的 AWS API 呼叫。若要變更 AWS CLI 第 2 版中 s3
命令的預設行為,請使用 --copy-props
參數。
如需更多詳細資訊,請參閱 分段副本中的檔案屬性和標籤。
不會為參數自動擷取 http://
或 https://
URL
當參數值以 http://
或 https://
開頭時,AWS CLI 第 2 版不會執行 GET
操作,也不會使用傳回的內容作為參數的數值。因此,關聯的命令列選項 cli_follow_urlparam
已從 AWS CLI 第 2 版中移除。
如果您需要擷取 URL 並將該 URL 內容傳遞至參數值,我們建議您使用 curl
或類似的工具,將 URL 的內容下載至本機檔案。然後使用 file://
語法讀取該檔案的內容,並將其作為參數值使用。
例如,下列命令不再會嘗試擷取在 http://www.example.com
找到的頁面內容,並傳遞這些內容作為參數。而是會傳遞文字字串 https://example.com
作為參數。
$
aws ssm put-parameter \
--value http://www.example.com \
--name prod.microservice1.db.secret \
--type String 2
如果您需要擷取並使用 Web URL 的內容作為參數,則可以在第 2 版中執行以下操作。
$
curl https://my.example.com/mypolicyfile.json -o mypolicyfile.json$
aws iam put-role-policy \ --policy-document file://./mypolicyfile.json \ --role-name MyRole \ --policy-name MyReadOnlyPolicy
在先前的範例中,-o
參數會告訴 curl
將檔案以與來源檔案相同的名稱儲存在目前的資料夾中。第二個命令會擷取該下載檔案的內容,並將內容傳遞作為 --policy-document
的數值。
預設情況下,對於所有輸出使用的分頁程式
根據預設,AWS CLI 第 2 版會透過作業系統的預設分頁程式傳回所有輸出。此程式是在 Linux 和 macOS 上的 less
more
您可以設定 AWS CLI 第 2 版使用不同的分頁程式或者完全不使用。如需更多詳細資訊,請參閱 用戶端分頁程式。
時間戳記輸出值會標準化為 ISO 8601 格式
根據預設,AWS CLI 第 2 版現在會以 ISO 8601 格式
若要以 HTTP API 回應傳回的格式查看時間戳記,請使用您的 config
檔案中的 wire
值。如需更多詳細資訊,請參閱 cli_timestamp_format
。
改善未造成任何變更的 CloudFormation 部署處理
預設情況下,在 AWS CLI 第 1 版中,如果您部署的 AWS CloudFormation 範本未造成任何變更,AWS CLI 會傳回失敗的錯誤代碼。如果您不認為這是錯誤,並希望指令碼繼續進行,將會發生問題。您可以在 AWS CLI 第 1 版透過新增旗標 -–no-fail-on-empty-changeset
(它會傳回 0
) 以解決此問題。
因為這是常見的使用案例,所以在部署沒有造成任何變更,而且操作傳回空的變更集時,AWS CLI 第 2 版預設為傳回成功結束代碼 0
。
若要還原為原始的行為,請新增旗標 --fail-on-empty-changeset
。
已變更 us-east-1
區域的區域性 Amazon S3 端點的預設行為
當您設定 AWS CLI 第 1 版使用 us-east-1
區域時,AWS CLI 會使用實際託管於 us-east-1
區域的全域 s3.amazonaws.com
端點。當指定 s3.us-east-1.amazonaws.com
區域時,AWS CLI 第 2 版使用該真正的區域性端點。若要強制 AWS CLI 第 2 版使用全域端點,您可以將命令的區域設定為 aws-global
。
已變更區域性 AWS STS 端點的預設行為
預設情況下,AWS CLI 第 2 版會將所有 AWS Security Token Service (AWS STS) API 請求傳送至目前設定之 AWS 區域 的區域端點。
預設情況下,AWS CLI 第 1 版會將 AWS STS 請求傳送至全域 AWS STS 端點。您可以藉由使用 sts_regional_endpoints
設定,在第 1 版中控制此預設行為。
已移除 ecr get-login
並替換為 ecr get-login-password
AWS CLI 第 2 版使用 aws
ecr get-login-password
命令取代 aws ecr get-login
命令,以改善與容器驗證的自動整合。
aws ecr get-login-password
命令可降低在程式清單、Shell 歷史記錄或其他日誌檔中公開憑證的風險。它也改善了與 docker login
命令的相容性,以獲得更好的自動化。
aws ecr get-login-password
命令現可在 AWS CLI 版本 1.17.10 和更新版本以及 AWS CLI 第 2 版中使用。較早的 aws ecr get-login
命令仍然可以在 AWS CLI 第 1 版中使用,以提供回溯相容性。
您可以使用 aws ecr get-login-password
命令取代用於擷取密碼的下列程式碼。
$
(aws ecr get-login --no-include-email)
若要降低將密碼公開給 Shell 歷史記錄或日誌檔的風險,請改用下列範例命令。在此範例中,密碼會直接傳送到 docker login
命令,此命令會由 --password-stdin
選項指派給密碼參數。
$
aws ecr get-login-password | docker login --username AWS
--password-stdin
MY-REGISTRY-URL
如需詳細資訊,請參閱 AWS CLI 第 2 版參考指南中的 aws ecr get-login-password
對外掛程式的 AWS CLI 第 2 版支援正在改變
AWS CLI 第 2 版中的外掛程式支援完全是臨時的,旨在幫助使用者從 AWS CLI 第 1 版遷移,直到發行穩定、更新的外掛程式界面。無法保證在未來版本的 AWS CLI 第 2 版中支援特定外掛程式,甚至 AWS CLI 外掛程式界面。如果您依賴外掛程式,請務必鎖定至 AWS CLI 的特定版本,並在升級時測試外掛程式的功能。
若要啟用外掛程式支援,請在 ~/.aws/config
中建立 [plugins]
區段。
[plugins] cli_legacy_plugin_path =
<path-to-plugins>
/python3.7/site-packages<plugin-name>
=<plugin-module>
在 [plugins]
區段中,定義 cli_legacy_plugin_path
變數並將其值設定為您的外掛程式模組所在的 Python 站台套件路徑。然後,您可以透過提供外掛程式的名稱 (plugin-name
) 和 Python 模組的檔案名稱 (plugin-module
),其中包含您的外掛程式的原始程式碼來設定外掛程式。AWS CLI 透過匯入其 plugin-module
並呼叫其 awscli_initialize
函數來載入每個外掛程式。
已移除隱藏別名支援
AWS CLI 第 2 版不再支援版本 1 中支援的下列隱藏別名。
在下表中,第一欄會顯示在所有版本中運作的服務、命令和參數,包括 AWS CLI 第 2 版。第二欄會顯示 AWS CLI 第 2 版中不再適用的別名。
運作的服務、命令和參數 | 過時的別名 |
---|---|
cognito-identity create-identity-pool open-id-connect-provider-arns | open-id-connect-provider-ar-ns |
storagegateway describe-tapes tape-arns | tape-ar-ns |
storagegateway.describe-tape-archives.tape-arns | tape-ar-ns |
storagegateway.describe-vtl-devices.vtl-device-arns | vtl-device-ar-ns |
storagegateway.describe-cached-iscsi-volumes.volume-arns | volume-ar-ns |
storagegateway.describe-stored-iscsi-volumes.volume-arns | volume-ar-ns |
route53domains.view-billing.start-time | start |
deploy.create-deployment-group.ec2-tag-set | ec-2-tag-set |
deploy.list-application-revisions.s3-bucket | s-3-bucket |
deploy.list-application-revisions.s3-key-prefix | s-3-key-prefix |
deploy.update-deployment-group.ec2-tag-set | ec-2-tag-set |
iam.enable-mfa-device.authentication-code1 | authentication-code-1 |
iam.enable-mfa-device.authentication-code2 | authentication-code-2 |
iam.resync-mfa-device.authentication-code1 | authentication-code-1 |
iam.resync-mfa-device.authentication-code2 | authentication-code-2 |
importexport.get-shipping-label.street1 | street-1 |
importexport.get-shipping-label.street2 | street-2 |
importexport.get-shipping-label.street3 | street-3 |
lambda.publish-version.code-sha256 | code-sha-256 |
lightsail.import-key-pair.public-key-base64 | public-key-base-64 |
opsworks.register-volume.ec2-volume-id | ec-2-volume-id |
不支援 api_versions
組態檔案設定
AWS CLI 第 2 版不支援透過使用 api_versions
組態檔案設定來呼叫較早版本的 AWS 服務 API。所有 AWS CLI 命令現在會呼叫端點目前支援的最新版本服務 API。
AWS CLI 第 2 版僅使用 Signature v4 驗證 Amazon S3 請求。
AWS CLI 第 2 版不支援以早期的簽章演算法加密傳送到 Amazon S3 端點的身分驗證服務請求。此簽署會在每個 Amazon S3 請求中自動執行,並且僅支援 Signature Version 4 簽署程序。您無法設定簽章版本。所有 Amazon S3 儲存貯體預先簽章的 URL 現在僅使用 Sigv4,最長有效期為一週。
AWS CLI 第 2 版與分頁參數更為一致
在 AWS CLI 第 1 版中,如果您在命令列中指定分頁參數,則自動分頁將如預期關閉。但是,當您使用具有 ‐‐cli-input-json
參數的檔案指定分頁參數,而自動分頁未關閉時,可能會導致非預期的輸出。AWS CLI 第 2 版會關閉自動分頁,無論您以何種方式提供參數。
AWS CLI 第 2 版在所有命令中提供更一致的傳回代碼
相較於 AWS CLI 第 1 版,AWS CLI 第 2 版在所有命令中更加一致,並正確地傳回適當的結束代碼。我們也新增了結束代碼 252、253 和 254。如需結束代碼的詳細資訊,請參閱 從 AWS CLI 傳回碼。
如果您依賴 AWS CLI 第 1 版使用傳回代碼值,我們建議檢查結束代碼以確保您獲得預期的值。