本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CLI 從來源建置和安裝
本主題將描述如何在支援的作業系統上從來源安裝或更新 AWS Command Line Interface (AWS CLI)。
如需 最新版本的相關資訊 AWS CLI,請參閱 上的AWS CLI 第 2 版變更日誌
重要
AWS CLI 第 1 版和第 2 版使用相同的aws
命令名稱。如果您先前已安裝 AWS CLI 版本 1,請參閱 從 AWS CLI 第 1 版遷移至第 2 AWS CLI 版。
主題
為什麼要從來源建置?
AWS CLI 適用於大多數平台和環境的預先建置安裝程式,以及 Docker 映像。
這些安裝程式通常涵蓋大多數的使用案例。從來源安裝的說明是為了幫助我們的安裝程式未涵蓋的使用案例。部分使用案例如下:
-
預先建置的安裝程式不支援您的環境。例如,預先建置的安裝程式不支援 ARM 32 位元。
-
預先建置的安裝程式具有您環境缺少的相依性。例如,Alpine Linux 使用
musl
,但是現有的安裝程式需要 glibc
,造成預先建置的安裝程式無法立即運作。 -
預先建置的安裝程式需要您的環境限制存取的資源。例如,強化安全性的系統可能不會授予共用記憶體的權限。這是凍結的
aws
安裝程式所需的。 -
預先建置的安裝程式通常是套件管理工具中維護程式的封鎖程式,通常建議程式碼和套件在建置過程中取得完全控制權限。從來源建置可讓分佈維護器更簡化的程序,以保持 AWS CLI 更新。啟用維護器可在從第三方套件管理員安裝 AWS CLI 時為客戶提供更多 up-to-date版本的
brew
,例如yum
、 和apt
。 -
修補 AWS CLI 功能的客戶需要 AWS CLI 從來源建置和安裝 。對於想要在將變更貢獻至 AWS CLI GitHub 儲存庫之前測試對來源所做的變更的社群成員而言,這一點尤其重要。
快速步驟
注意
所有程式碼範例都是假設從來源目錄的根目錄執行。
若要 AWS CLI 從來源建置和安裝 ,請遵循本節中的步驟。 AWS CLI 會利用 GNU Autotools
-
為您的環境設定所有需求。這包括能夠執行 GNU Autotools
產生的檔案,並安裝 Python 3.8 或更新版本。 -
在終端機中,導覽至 AWS CLI 來源資料夾的頂層,然後執行
./configure
命令。此命令會檢查系統是否具備所有必要的相依性,並產生Makefile
,以 AWS CLI 根據偵測到的和指定的組態來建置和安裝 。如需詳細資訊、可用的組態選項和預設設定資訊,請參閱 步驟 2:設定 AWS CLI 來源安裝 一節。
-
執行
make
命令。此命令 AWS CLI 會根據您的組態設定建置 。下列
make
命令範例會使用您現有的./configure
設定,以預設選項建置。如需詳細資訊和可用的建置選項,請參閱 步驟 3:建置 AWS CLI 一節。
-
執行
make install
命令。此命令會將您的建置 AWS CLI 安裝到系統上配置的位置。以下
make install
命令範例安裝您的建置 AWS CLI 並使用預設命令設定在配置的位置建立 symlink。如需詳細資訊和可用的安裝選項,請參閱 步驟 4:安裝 AWS CLI 一節。
-
使用以下命令確認 AWS CLI 已成功安裝 :
$
aws --version
aws-cli/2.17.20 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
如需安裝錯誤的故障診斷步驟,請參閱 安裝 AWS CLI 和解除安裝錯誤的疑難排解 一節。
步驟 1:設定所有要求
若要 AWS CLI 從來源建置 ,您需要事先完成下列事項:
注意
所有程式碼範例都是假設從來源目錄的根目錄執行。
透過偽造 AWS CLI GitHub 儲存庫或下載 AWS CLI 來源 tarball 來下載來源。說明如下:
-
從 撥出和複製AWS CLI 儲存庫
GitHub。如需詳細資訊,請參閱 GitHub 文件 中的 Fork a Repo 。 -
在 https://awscli.amazonaws.com/awscli.tar.gz
下載最新的來源 tarball,使用以下命令擷取內容: $
curl -o awscli.tar.gz https://awscli.amazonaws.com/awscli.tar.gz
$
tar -xzf awscli.tar.gz
注意
若要下載特定版本,請使用下列連結格式:https://awscli.amazonaws.com/awscli-
versionnumber
.tar.gz例如,對於 2.10.0 版,連結如下:https://awscli.amazonaws.com/awscli-
2.10.0
.tar.gz來源版本從 AWS CLI的 2.10.0 版開始提供。
(可選) 完成下列步驟,驗證所下載 zip 檔案的完整性:
-
您可以依循下列步驟使用
GnuPG
工具來驗證簽章。AWS CLI 安裝程式套件
.zip
檔案使用簽章進行密碼編譯PGP簽署。如果檔案有任何損壞或更改,此驗證會失敗,且您不應該繼續進行安裝。 -
使用您的套件管理工具下載並安裝
gpg
命令。如需有關GnuPG
的詳細資訊,請參閱 GnuPG 網站。 -
若要建立公開金鑰檔案,請建立文字檔案,然後貼上下列文字。
-----BEGIN PGP PUBLIC KEY BLOCK----- mQINBF2Cr7UBEADJZHcgusOJl7ENSyumXh85z0TRV0xJorM2B/JL0kHOyigQluUG ZMLhENaG0bYatdrKP+3H91lvK050pXwnO/R7fB/FSTouki4ciIx5OuLlnJZIxSzx PqGl0mkxImLNbGWoi6Lto0LYxqHN2iQtzlwTVmq9733zd3XfcXrZ3+LblHAgEt5G TfNxEKJ8soPLyWmwDH6HWCnjZ/aIQRBTIQ05uVeEoYxSh6wOai7ss/KveoSNBbYz gbdzoqI2Y8cgH2nbfgp3DSasaLZEdCSsIsK1u05CinE7k2qZ7KgKAUIcT/cR/grk C6VwsnDU0OUCideXcQ8WeHutqvgZH1JgKDbznoIzeQHJD238GEu+eKhRHcz8/jeG 94zkcgJOz3KbZGYMiTh277Fvj9zzvZsbMBCedV1BTg3TqgvdX4bdkhf5cH+7NtWO lrFj6UwAsGukBTAOxC0l/dnSmZhJ7Z1KmEWilro/gOrjtOxqRQutlIqG22TaqoPG fYVN+en3Zwbt97kcgZDwqbuykNt64oZWc4XKCa3mprEGC3IbJTBFqglXmZ7l9ywG EEUJYOlb2XrSuPWml39beWdKM8kzr1OjnlOm6+lpTRCBfo0wa9F8YZRhHPAkwKkX XDeOGpWRj4ohOx0d2GWkyV5xyN14p2tQOCdOODmz80yUTgRpPVQUtOEhXQARAQAB tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4WIQT7 Xbd/1cEYuAURraimMQrMRnJHXAUCXYKvtQIbAwUJB4TOAAULCQgHAgYVCgkICwIE FgIDAQIeAQIXgAAKCRCmMQrMRnJHXJIXEAChLUIkg80uPUkGjE3jejvQSA1aWuAM yzy6fdpdlRUz6M6nmsUhOExjVIvibEJpzK5mhuSZ4lb0vJ2ZUPgCv4zs2nBd7BGJ MxKiWgBReGvTdqZ0SzyYH4PYCJSE732x/Fw9hfnh1dMTXNcrQXzwOmmFNNegG0Ox au+VnpcR5Kz3smiTrIwZbRudo1ijhCYPQ7t5CMp9kjC6bObvy1hSIg2xNbMAN/Do ikebAl36uA6Y/Uczjj3GxZW4ZWeFirMidKbtqvUz2y0UFszobjiBSqZZHCreC34B hw9bFNpuWC/0SrXgohdsc6vK50pDGdV5kM2qo9tMQ/izsAwTh/d/GzZv8H4lV9eO tEis+EpR497PaxKKh9tJf0N6Q1YLRHof5xePZtOIlS3gfvsH5hXA3HJ9yIxb8T0H QYmVr3aIUes20i6meI3fuV36VFupwfrTKaL7VXnsrK2fq5cRvyJLNzXucg0WAjPF RrAGLzY7nP1xeg1a0aeP+pdsqjqlPJom8OCWc1+6DWbg0jsC74WoesAqgBItODMB rsal1y/q+bPzpsnWjzHV8+1/EtZmSc8ZUGSJOPkfC7hObnfkl18h+1QtKTjZme4d H17gsBJr+opwJw/Zio2LMjQBOqlm3K1A4zFTh7wBC7He6KPQea1p2XAMgtvATtNe YLZATHZKTJyiqA== =vYOk -----END PGP PUBLIC KEY BLOCK-----
以下公開金鑰詳細資訊僅供參考。
Key ID: A6310ACC4672 Type: RSA Size: 4096/4096 Created: 2019-09-18 Expires: 2023-09-17 User ID: AWS CLI Team <aws-cli@amazon.com> Key fingerprint: FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C
-
使用下列命令匯入 AWS CLI 公有金鑰,取代
public-key-file-name
以及您建立的公有金鑰的檔案名稱。$
gpg --import
public-key-file-name
gpg: /home/
username
/.gnupg/trustdb.gpg: trustdb created gpg: key A6310ACC4672475C: public key "AWS CLI Team <aws-cli@amazon.com>" imported gpg: Total number processed: 1 gpg: imported: 1 -
下載您在 https://awscli.amazonaws.com/awscli.tar.gz.sig
下載的套件的 AWS CLI 簽章檔案。它會有與其對應的 tarball 檔案具有相同的路徑和名稱,但具有副檔名 .sig
。將它儲存在與 tarball 檔案相同的路徑下。或使用下列命令區塊:$
curl -o awscliv2.sig https://awscli.amazonaws.com/awscli.tar.gz.sig
-
驗證簽章,並將下載的
.sig
和.zip
檔案名稱以參數形式傳遞給gpg
命令。$
gpg --verify awscliv2.sig awscli.tar.gz
輸出應看起來如下列內容。
gpg: Signature made Mon Nov 4 19:00:01 2019 PST gpg: using RSA key FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C gpg: Good signature from "AWS CLI Team <aws-cli@amazon.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C
重要
輸出中的警告是預期的,並不表示有問題。這是因為您的個人PGP金鑰 (如果您有) 和 AWS CLI PGP金鑰之間沒有信任鏈。如需詳細資訊,請參閱「信任網路
」。
-
-
-
您有一個環境可以執行 GNU Autotools
產生的檔案,例如 configure
和Makefile
。這些檔案在跨POSIX平台之間具有廣泛的可攜性。 -
已安裝 Python 3.8 或更新版本的解譯器。所需的最低 Python 版本遵循與 和 工具的 AWS SDKs官方 Python 支援政策
相同的時間表。僅在翻譯日期後 end-of-support 6 個月才支援。 -
(選擇性) 安裝 AWS CLI所有的建置和執行時間 Python 程式庫相依性。如果缺少任何相依性以及不知道如何安裝,
./configure
命令能提供您資訊。您可以透過配置自動安裝和使用這些相依性,請參閱 下載相依性 獲得更多資訊。
步驟 2:設定 AWS CLI 來源安裝
建置和安裝 的組態 AWS CLI 是使用configure
指令碼指定。如需所有組態選項的文件,請使用 --help
選項執行 configure
指令碼:
最重要的選項如下:
安裝位置
的來源安裝 AWS CLI 使用兩個可設定的目錄來安裝 AWS CLI:
-
libdir
- AWS CLI 將安裝 的父目錄。 AWS CLI 安裝的路徑為
。Linux 和 macOS 的預設<libdir-value>
/aws-clilibdir
值是/usr/local/lib
,讓預設安裝目錄成為/usr/local/lib
/aws-cli -
bindir
- 安裝 AWS CLI 可執行檔的目錄。預設位置為/usr/local/bin
。
下列 configure
選項可控制使用的目錄:
-
--prefix
- 設定用於安裝的目錄字首。Linux 和 macOS 的預設值為/usr/local
。 -
--libdir
- 設定libdir
用於安裝 AWS CLI。預設值為<prefix-value>/lib
。如果--libdir
和--prefix
兩者都未指定,Linux 和 macOS 的預設值為/usr/local/lib/
。 -
--bindir
- 將 設定為bindir
用於安裝 AWS CLIaws
和aws_completer
可執行檔。預設值為<prefix-value>/bin
。如果bindir
和--prefix
兩者都未指定,Linux 和 macOS 的預設值為/usr/local/bin/
。
Python 解譯器
注意
強烈建議您在 Windows 安裝時,指定 Python 解譯器。
./configure
指令碼會自動選取已安裝的 Python 3.8 或更新版本解譯器,以便在 AWS CLI 使用 AM_PATH_PYTHON
執行 configure
指令碼時,可以使用 PYTHON
環境變數明確設定要使用的 Python 解釋器:
下載相依性
根據預設要求,系統必須已安裝 AWS CLI
的所有建置和執行時間相依性。這包括任何 Python 程式庫的相依性。configure
指令碼執行時會檢查所有相依性,如果系統缺少任何 Python 相依性,configure
指令碼會發生錯誤。
您的系統缺少相依性時,會顯示以下的代碼範例錯誤:
若要自動安裝所需的 Python 相依性,請使用 --with-download-deps
選項。使用此標記時,建置程序會執行下列動作:
-
跳過 Python 程式庫的相依性檢查。
-
設定 設定以下載所有必要的 Python 相依性,並僅使用下載的相依性在
make
建置 AWS CLI 期間建置 。
下面的配置命令範例使用 --with-download-deps
選項下載和使用 Python 相依性:
安裝類型
來源安裝程序支援下列安裝類型:
-
system-sandbox
- (預設) 建立隔離的 Python 虛擬環境、將 安裝 AWS CLI 到虛擬環境中,並在虛擬環境中將 與aws
aws_completer
的對稱連結。此 的安裝直接 AWS CLI 取決於其執行時間選取的 Python 解譯器。這是輕量安裝機制,可在 系統上 AWS CLI 安裝 ,並透過在虛擬環境中對安裝進行沙盒處理,以遵循最佳實務。此安裝適用於希望以最順暢的方式 AWS CLI 從來源安裝 的客戶,並將安裝與 Python 安裝搭配使用。
-
portable-exe
- 將 凍結 AWS CLI 為可分佈至類似架構環境的獨立可執行檔。這與用於產生 AWS CLI官方預先建置可執行檔的過程相同。portable-exe
凍結在configure
步驟中選擇的 Python 解譯器副本,以用於 AWS CLI的執行時間。這讓它可移動到可能沒有 Python 解譯器的其他機器。這種類型的建置很有用,因為您可以確保 AWS CLI 安裝不會與環境已安裝的 Python 版本結合,而且可以將建置分發給可能尚未安裝 Python 的其他系統。這可讓您控制所使用 AWS CLI 可執行檔的相依性和安全性。
若要設定安裝類型,請使用 --with-install-type
選項並指定 portable-exe
或 system-sandbox
的值。
以下 ./configure
命令範例會指定 portable-exe
的值:
步驟 3:建置 AWS CLI
使用 make
命令, AWS CLI 使用您的組態設定建置 :
注意
使用 make
指令時,會在幕後完成下列步驟:
-
虛擬環境使用 Python
venv
模組在建置目錄中建立。虛擬環境使用 Python 標準庫中提供的 pip 版本 啟動。 -
複製 Python 程式庫的相依性。根據是否在
configure
命令中指定--with-download-deps
標記,此步驟會執行下列其中一項作業:-
指定
--with-download-deps
。Python 的相依性使用 pip 安裝。這包括wheel
、setuptools
以及所有 AWS CLI 執行時間相依性。如果您在建置portable-exe
,則pyinstaller
已安裝。這些要求都在從pip-compile
中產生的鎖定檔案中指定。 -
未指定
--with-download-deps
。Python 解譯器站點套件中的 Python 庫以及任何指令碼 (例如pyinstaller
) 都將複製到用於建置的虛擬環境中。
-
-
pip install
直接在 AWS CLI 程式碼庫上執行,以在建置虛擬環境中進行離線的樹狀 AWS CLI 建置和安裝。此安裝使用 pip 旗標 --no-build-isolation、--use-feature=in-tree-build 、--no-cache-dir 和 --no-index
。 -
(選擇性) 如果在
configure
命令中將--install-type
設為portable-exe
,請使用pyinstaller
建置獨立的可執行檔。
步驟 4:安裝 AWS CLI
make install
命令會將您建置的 AWS CLI 安裝在系統上設定的 位置。
make install
規則支援 DESTDIR
注意
make install
執行時,會在幕後完成以下步驟
-
將下列其中一項移至已設定的安裝目錄:
-
如果安裝類型為
system-sandbox
,移動您建置的虛擬環境。 -
如果安裝類型為
portable-exe
,移動您建置的獨立可執行檔。
-
-
在配置的 bin 目錄中為
aws
和aws_completer
可執行檔建立 symlink。
步驟 5:驗證 AWS CLI 安裝
使用以下命令確認 AWS CLI 已成功安裝 :
$
aws --version
aws-cli/2.17.20 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
如果找不到 aws
命令,您可能需要重新啟動終端,才能更新為新的 symlink。如果您在安裝或解除安裝 之後遇到其他問題 AWS CLI,請參閱 對 的錯誤進行故障診斷 AWS CLI 以取得常見的疑難排解步驟
工作流程範例
本節提供一些從來源安裝的基本工作流程範例。
基本 Linux 和 macOS 安裝
下列範例是基本安裝工作流程,其中 AWS CLI 安裝在 的預設位置/usr/local/lib/aws-cli
。
$
cd
path/to/cli/respository/
$
./configure
$
make
$
make install
自動化 Windows 安裝
注意
您必須以管理員 PowerShell 身分執行 ,才能使用此工作流程。
MSYS2 可以在 CI 設定中以自動方式使用,請參閱 文件 中的MSYS2在 CI 中使用
Alpine Linux 容器
以下是 Dockerfile 範例,可用於在 AWS CLI Alpine Linux 容器中取得 的工作安裝,作為 Alpine 預先建置二進位檔案的替代方案AWSCLI_VERSION
搭配您想要的 AWS CLI 版本編號:
FROM python:3.8-alpine AS builder ENV AWSCLI_VERSION=2.10.1 RUN apk add --no-cache \ curl \ make \ cmake \ gcc \ g++ \ libc-dev \ libffi-dev \ openssl-dev \ && curl https://awscli.amazonaws.com/awscli-${AWSCLI_VERSION}.tar.gz | tar -xz \ && cd awscli-${AWSCLI_VERSION} \ && ./configure --prefix=/opt/aws-cli/ --with-download-deps \ && make \ && make install FROM python:3.8-alpine RUN apk --no-cache add groff COPY --from=builder /opt/aws-cli/ /opt/aws-cli/ ENTRYPOINT ["/opt/aws-cli/bin/aws"]
此映像會建置,並從類似以 Amazon Linux 2 建置的容器 AWS CLI 叫用:
$
docker build --tag awscli-alpine .
$
docker run --rm -it awscli-alpine --version
aws-cli/2.2.1 Python/3.8.11 Linux/5.10.25-linuxkit source-sandbox/x86_64.alpine.3 prompt/off
此映像的最終大小小於官方 AWS CLI Docker 映像的大小。如需 Docker 映像檔的相關資訊,請參閱 執行 的官方 Amazon ECR Public 或 Docker 映像 AWS CLI。
安裝 AWS CLI 和解除安裝錯誤的疑難排解
如需安裝錯誤的故障診斷步驟,請參閱 對 的錯誤進行故障診斷 AWS CLI 了解常見的故障診斷步驟。如需最相關的故障診斷步驟,請參閱 命令未找到錯誤、「aws --version」命令傳回的版本與您安裝的版本不同 和 "aws --version" 命令會在解除安裝 後傳回版本 AWS CLI。
對於故障診斷指南中未涵蓋的任何問題,請在 上的AWS CLI 儲存庫source-distribution
標籤的問題GitHub。如果沒有現有問題涵蓋您的錯誤,請建立新的問題
後續步驟
安裝 之後 AWS CLI,您應該執行 設定 AWS CLI。