本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS CLI v1 到 v2 遷移工具將 AWS CLI 第 1 版升級至 AWS CLI 第 2 版
本主題說明 AWS CLI v1 到 v2 遷移工具。
我們建議 AWS CLI 第 1 版的使用者升級至 AWS CLI 第 2 版,以存取新功能和增強的效能。CLI 第 1 版與 AWS CLI 第 2 版之間的 AWS 行為有所變更,可能需要您更新指令碼或命令以取得相同的行為。 AWS CLI v1-to-v2 Migration Tool 會分析包含 AWS CLI 第 1 版命令的 bash 指令碼,並偵測 CLI 第 AWS 2 版中因重大變更而更新的功能使用情況。此外,該工具可以自動修改您的指令碼,以修正它偵測到的大多數問題。此工具透過自動偵測和修改 bash 指令碼中的 AWS CLI 第 1 版命令來改善升級體驗,以防止升級至第 2 版時發生意外問題。
相較於升級偵錯模式, AWS CLI v1 到 v2 Migration Tool 是獨立的工具,不需要執行 AWS CLI 命令。如需升級偵錯模式與 CLI v1 到 v2 遷移工具之間的完整比較, AWS 請參閱 使用 AWS CLI 遷移工具來緩解中斷中的 第 2 AWS CLI 版的遷移指南。
如需詳細資訊,請參閱 中斷第 1 AWS CLI 版和第 2 AWS CLI 版之間的變更中的 第 2 AWS CLI 版中的新功能和變更。
運作方式
AWS CLI v1 到 v2 Migration Tool 是一種 Python 套件,能夠繫結使用 AWS CLI 第 1 版的 bash 指令碼。作為靜態 linter,它不取決於 AWS 您可能已安裝在機器上的 CLI 第 1 版。透過命令列叫用 linter,其中 bash 指令碼的本機檔案路徑會以參數形式提供。
遷移工具也可以自動產生修改後的 bash 指令碼,透過修改指令碼中使用的 AWS CLI 第 1 版命令來解決其偵測到的大多數問題清單。遷移工具會修改命令,使其與第 2 AWS 版相容,並保留第 1 版的行為。
對於某些問題清單, AWS CLI v1 到 v2 遷移工具可以偵測它們,但不提供自動修正。在這些情況下,遷移工具會將它們標記為需要手動檢閱的偵測。
限制 如需 CLI v1-to-v2 Migration Tool AWS 支援的重大變更和自動修正的完整清單,請參閱 。
先決條件
Python
若要使用此工具,您必須安裝 Python 3.9 或更新版本。
若要驗證是否已安裝正確的 Python 版本,請在終端機中執行下列命令,並確認輸出顯示至少為 3.9 的 Python 版本。
$python3 --version
如果您有較舊版本的 Python,或未安裝 Python,您可以從官方 Python 下載頁面下載
pip
除了安裝相容的 Python 版本之外,您還必須pip已安裝 。
若要驗證 pip 是否已安裝,請執行下列命令:
$python3 -m pip --version
如果您pip已安裝 ,您會看到類似以下的輸出:
pip 25.0.1 from ~/.local/lib/python3.13/site-packages (python 3.13)
如果您尚未pip安裝 ,請參閱安裝 pip。
安裝
在新的虛擬環境中安裝 AWS CLI v1-to-v2 遷移工具:
$python3 -m venv .venv$source .venv/bin/activate$python3 -m pip install aws-cli-migrate
Usage
乾執行模式 (預設)
使用試轉模式,您可以自動偵測可能發生重大變更的 AWS CLI 第 1 版命令,而無需修改輸入指令碼:
$migrate-aws-cli --script upload_s3_files.sh
自動修正模式
使用自動修正模式時,您可以盡可能在輸入指令碼中自動偵測和更新 AWS CLI 第 1 版命令,以減輕 CLI 第 AWS 2 版中引入的變更中斷:
$migrate-aws-cli --script upload_s3_files.sh --fix
或者,您可以透過 --output 參數提供輸出路徑來撰寫更新的指令碼,而不是更新輸入指令碼:
$migrate-aws-cli --script upload_s3_files.sh --output upload_s3_files_v2.sh --fix
互動式模式
透過互動式模式,您可以自動偵測可能重大變更的 AWS CLI 第 1 版命令。大多數問題清單會顯示建議的修正,以緩解 CLI AWS 第 2 版中的中斷。您可以檢閱建議的修正,並決定是否套用修正。或者,透過 --output 參數提供輸出路徑,以控制寫入更新指令碼的位置:
$migrate-aws-cli --script upload_s3_files.sh --interactive \ --output upload_s3_files_v2.sh
下列輸出程式碼片段是互動式模式中的範例調查結果:
14 14│
15 15│ aws s3 ls s3://mybucket
16 16│
17 │-aws s3 cp s3://amzn-demo-bucket s3://amzn-demo-bucket2 --recursive
17│+aws s3 cp s3://amzn-demo-bucket s3://amzn-demo-bucket2 --recursive --copy-props none
18 18│
19 19│ TEMPLATE_KEY="cloudformation/$(basename "$TEMPLATE_FILE")"
20 20│
examples/upload_s3_files.sh:17 [s3-copy] In AWS CLI v2, object properties will be copied
from the source in multipart copies between S3 buckets. If a copy is or becomes multipart
after upgrading to AWS CLI v2, extra API calls will be made. See
https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration-changes.html#cliv2-migration-s3-copy-metadata.
Apply this fix? [y] yes, [n] no, [a] accept all of type, [r] reject all of type, [u] update all,
[s] save and exit, [q] quit:
建議的修正會以類似 Git diff 的格式顯示。遷移工具建議移除以 開頭的行-,並建議新增以 開頭的行+。在上述範例中,建議可以解譯為將 --copy-props none 參數新增至執行 Amazon S3 複本的 AWS CLI 第 1 版命令。
對於每個建議的修正,您可以輸入下列任何控制項:
-
輸入
y以接受建議的修正。 -
輸入
n以拒絕目前的修正。 -
輸入
a以接受具有相同類型的所有修正。 -
輸入
r以拒絕具有相同類型的所有修正。 -
輸入
u以接受所有剩餘的修正。 -
輸入
s以儲存並結束。 -
輸入
q以退出而不儲存。
某些問題清單可能會標記為手動檢閱,而不建議修正。您應該檢閱這些調查結果,並驗證您是否受到所參考重大變更的影響。如果您受到這些調查結果的影響,您應該遵循調查結果描述中指定的指導進行必要的變更,以避免或準備 CLI AWS 第 2 版中引入的重大變更。
限制
AWS CLI v1 至 v2 Migration Tool 目前不支援 CLI AWS 第 2 版帶來的每個重大變更,並且具有誤判案例,即使實際上不會面對重大變更,它仍會輸出命令的偵測。
我們強烈建議客戶了解 中中斷第 1 AWS CLI 版和第 2 AWS CLI 版之間的變更發佈的內容第 2 AWS CLI 版中的新功能和變更。
文字型分析
遷移工具會在不執行指令碼的情況下分析指令碼。這限制了它如何偵測 CLI AWS 命令來中斷變更。遷移工具只能檢查 CLI AWS 命令的文字。它無法偵測在執行時間發生的問題,例如將已棄用參數儲存在變數中,而不是直接傳遞給 AWS CLI。
不支援的中斷變更偵測
下表摘要說明遷移工具中中斷變更的支援範圍。