从源代码构建和安装 AWS CLI
本主题介绍如何在受支持的操作系统上从源代码安装或更新到最新版本的 AWS Command Line Interface(AWS CLI)。
有关 AWS CLI 最新版本的信息,请参阅 GitHub 上的 AWS CLI 版本 2 更改日志
重要
AWS CLI 版本 1 和 2 使用相同的 aws
命令名称。如果您之前安装了 AWS CLI 版本 1,请参阅从 AWS CLI 版本 1 迁移到 AWS CLI 版本 2。
主题
为什么要从源代码构建?
AWS CLI 可用作大多数平台和环境以及 Docker 映像的预构建安装程序。
通常,这些安装程序涵盖了大多数使用案例。从源代码安装的说明旨在帮助解决我们的安装程序未涵盖的使用案例。部分使用案例包括:
-
预构建的安装程序不支持您的环境。例如,预构建的安装程序不支持 ARM 32 位。
-
预构建的安装程序具有您的环境所缺少的依赖项。例如,Alpine Linux 使用
musl
,但当前安装程序需要 glibc
,而导致预构建的安装程序无法立即运行。 -
预构建的安装程序需要您的环境限制访问的资源。例如,安全强化型系统可能不会授予对共享内存的权限。这是冻结的
aws
安装程序所需要的。 -
因为最好能够完全控制代码和软件包的构建过程,而预构建的安装程序通常会成为软件包管理器中维护者的阻碍。从源代码构建使发行版维护者可以通过更简化的流程来保持 AWS CLI 处于更新状态。当从第三方软件包管理器(如
brew
、yum
和apt
)安装时,启用维护者可为客户提供更新版本的 AWS CLI。 -
修补 AWS CLI 功能的客户需要从源代码构建和安装 AWS CLI。这对于想要在向 AWS CLI GitHub 存储库提供更改之前测试对源代码所做更改的社区成员来说尤为重要。
快速步骤
注意
假设所有代码示例都从源代码目录的根目录运行。
要从源代码构建和安装 AWS CLI,请按本节中的步骤操作。AWS CLI 利用 GNU Autotools
-
设置您的环境的所有要求。这包括能够运行 GNU Auttols
生成的文件以及安装 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 并创建符号链接。有关详细信息和可用的安装选项,请参阅 步骤 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 源代码。有关说明,请参阅以下内容之一:
-
从 GitHub 分流和克隆 AWS CLI 存储库
。有关更多信息,请参阅《GitHub 文档》中的分流存储库 。 -
通过 https://awscli.amazonaws.com/awscli.tar.gz
下载最新的源代码压缩包,使用以下命令解压缩内容: $
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 签名文件。它具有与其对应的压缩包文件相同的路径和名称,但扩展名为 .sig
。将其保存在与压缩包文件相同的路径中。或者使用以下命令块:$
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 密钥之间没有信任链。有关更多信息,请参阅信任 Web
。
-
-
-
您的环境可以运行 GNU Autotools
生成的文件,如 configure
和Makefile
。这些文件可跨 POSIX 平台广泛移植。 -
安装了 Python 3.8 或更高版本的解释器。所需的最低 Python 版本遵循与 AWS SDK 和工具的官方 Python 支持策略
相同的时间表。解释器在其支持结束日期后 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
- 设置要用于安装 AWS CLI 的libdir
。默认值为<prefix-value>/lib
。如果未指定--libdir
和--prefix
,则 Linux 和 macOS 的默认设置为/usr/local/lib/
。 -
--bindir
- 设置要用于安装 AWS CLIaws
和aws_completer
可执行文件的bindir
。默认值为<prefix-value>/bin
。如果未指定bindir
和--prefix
,则 Linux 和 macOS 的默认设置为/usr/local/bin/
。
Python 解释器
注意
强烈建议在针对 Windows 进行安装时指定 Python 解释器。
./configure
脚本会自动选择已安装的 Python 3.8 或更高版本的解释器,用于通过 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,并通过在虚拟环境中对安装进行沙箱化以遵循最佳 Python 实践。此安装适用于希望以尽可能顺畅的方式从源代码安装 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
)都被复制到用于构建的虚拟环境中。
-
-
直接在 AWS CLI 代码库上运行
pip install
,以进行离线的树内构建,然后将 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
可执行文件创建符号链接。
步骤 5:验证 AWS CLI 安装
使用以下命令确认成功安装了 AWS CLI:
$
aws --version
aws-cli/2.17.20 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
如果无法识别 aws
命令,您可能需要重启终端以更新新的符号链接。如果您在安装或卸载 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 中使用 MSYS2
Alpine Linux 容器
下面是一个 Dockerfile 示例,可作为 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 映像的信息,请参阅 在 AWS CLI 中运行官方 Amazon ECR Public 映像或 Docker 映像。
AWS CLI 安装和卸载错误故障排除
有关安装错误的故障排除步骤,请参阅 排查 AWS CLI 错误 以了解常见故障排除步骤。有关相关性最高的故障排除步骤,请参阅找不到命令错误、“aws --version”命令返回的版本与您安装的版本不同和卸载 AWS CLI 后,“aws --version”命令返回一个版本。
对于故障排除指南中未涵盖的任何问题,请在 GitHub 的 AWS CLI 存储库source-distribution
标签的问题。如果现有问题没有涵盖您的错误,请创建一个新问题
后续步骤
安装 AWS CLI 后,应执行 设置 AWS CLI。