本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS CLI 从源代码构建和安装
本主题介绍如何在受支持的操作系统上从源代码安装或更新到最新版本的 AWS Command Line Interface (AWS CLI)。
有关最新版本的信息 AWS CLI,请参阅AWS CLI 版本 2 变更日 GitHub志
重要
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
、和)进行安装 AWS CLI 时,启用维护者可以为客户提供更多 up-to-date版本yum
的。apt
-
修补 AWS CLI 功能的客户需要 AWS CLI 从源代码构建和安装。对于想要在将更改贡献到 AWS CLI GitHub 存储库之前测试自己对源代码所做的更改的社区成员来说,这一点尤其重要。
快速步骤
注意
假设所有代码示例都从源代码目录的根目录运行。
要 AWS CLI 从源代码构建和安装,请按照本节中的步骤操作。 AWS CLI 利用 GNUAutotools
-
设置您的环境的所有要求。这包括能够运行 GNUAutotools
生成的文件并安装了 Python 3.8 或更高版本。 -
在终端中,导航到 AWS CLI 源文件夹的顶层并运行该
./configure
命令。此命令检查系统是否存在所有必需的依赖关系,并 AWS CLI 根据检测到的和指定的配置生成一个Makefile
用于构建和安装的依赖关系。有关详细信息、可用配置选项和默认设置信息,请参阅 步骤 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 源代码压缩包来下载源代码。有关说明,请参阅以下内容之一:
-
从中分叉并克隆AWS CLI 存储库GitHub
。有关更多信息,请参阅GitHub文档中的 Fork 存储库 。 -
在 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,链接如下:/awscli- https://awscli.amazonaws.com
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/aw
scli.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
。
-
-
-
您的环境可以运行 GNUAutotools
生成的文件,例如 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
- 设置要用于安装 AWS CLI的libdir
。默认值为<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 或更高版本的解释器,用于使用 AM_PATH_PYTHON
运行 configure
脚本时,可以使用 PYTHON
环境变量显式设置要使用的 Python 解释器:
下载依赖项
默认情况下,要求 AWS CLI
的所有构建和运行时依赖项都已安装在系统上。这包括任何 Python 库依赖项。运行 configure
脚本时会检查所有依赖项,如果系统缺少任何 Python 依赖项,则 configure
脚本会出错。
当您的系统缺少依赖项时,以下代码示例会出错:
要自动安装所需的 Python 依赖项,请使用 --with-download-deps
选项。使用此标志时,构建过程会执行以下操作:
-
跳过 Python 库依赖项检查。
-
将设置配置为下载所有必需的 Python 依赖项,并在构建 AWS CLI 期间仅使用下载的依赖项来
make
构建。
以下配置命令示例使用 --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
)都被复制到用于构建的虚拟环境中。
-
-
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
可执行文件创建符号链接。
步骤 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文档MSYS2中的在 CI
Alpine Linux 容器
以下是一个 Dockerfile 示例,可用于在 Alpine Linux 容器 AWS CLI 中进行有效安装,以替代预先构建的 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 P ECR ublic 或 Docker 镜像 AWS CLI。
AWS CLI 安装和卸载错误疑难解答
有关安装错误的故障排除步骤,请参阅 对错误进行故障排除 AWS CLI 以了解常见故障排除步骤。有关相关性最高的故障排除步骤,请参阅找不到命令错误、“aws --version”命令返回的版本与您安装的版本不同和卸载后,aws --version“” 命令会返回一个版本 AWS CLI。
对于疑难解答指南中未涉及的任何问题,请使用AWS CLI
存储库source-distribution
标签搜索问题GitHub。如果没有现有问题涵盖您的错误,请创建一个新问题
后续步骤
安装完成后 AWS CLI,您应该执行一个设置 AWS CLI。