

# 开始使用 AWS CLI
<a name="cli-chap-getting-started"></a>

本章提供了开始使用 AWS Command Line Interface (AWS CLI) 版本 2 的步骤，并提供了相关说明的链接。

1. **[完成所有先决条件](getting-started-prereqs.md)** - 要使用 AWS CLI 访问 AWS 服务，您至少需要一个 AWS 账户和 IAM 凭证。为了提高 AWS 账户的安全性，建议您不要使用根账户凭证。您应创建一个具有最低权限的用户来为将在 AWS 中运行的任务提供访问凭证。

1. 使用以下方法之一安装或进入 AWS CLI：
   + **（推荐）**[安装或更新最新版本的 AWS CLI](getting-started-install.md)。
   + [安装 AWS CLI 版本 2 的过去发行版](getting-started-version.md)。安装特定版本的做法主要用于团队将其工具与特定版本保持一致的情况。
   + [从源代码构建和安装 AWS CLI](getting-started-source-install.md)。从 GitHub 源代码构建 AWS CLI 是一种更深入的方法，主要供在我们预置安装程序不直接支持的平台上工作的客户使用。
   + [在 AWS CLI 中运行官方 Amazon ECR Public 映像或 Docker 映像](getting-started-docker.md).
   + 使用 AWS CloudShell 通过浏览器访问 AWS 控制台中的 AWS CLI 版本 2。有关更多信息，请参阅《[AWS CloudShell 用户指南》](https://docs.aws.amazon.com/cloudshell/latest/userguide/)。

1. [进入 AWS CLI 后，第一次使用时需要在 AWS CLI 中配置您的 IAM 凭证](getting-started-quickstart.md)。

**对安装程序或配置错误进行故障排除**  
如果您在安装、卸载或配置 AWS CLI 后遇到问题，请参阅[排查 AWS CLI 错误](cli-chap-troubleshooting.md)以了解故障排除步骤。

**Topics**
+ [使用 AWS CLI 版本 2 的先决条件](getting-started-prereqs.md)
+ [安装或更新最新版本的 AWS CLI](getting-started-install.md)
+ [安装 AWS CLI 版本 2 的过去发行版](getting-started-version.md)
+ [从源代码构建和安装 AWS CLI](getting-started-source-install.md)
+ [在 AWS CLI 中运行官方 Amazon ECR Public 映像或 Docker 映像](getting-started-docker.md)
+ [设置 AWS CLI](getting-started-quickstart.md)

# 使用 AWS CLI 版本 2 的先决条件
<a name="getting-started-prereqs"></a>

要使用 AWS CLI 访问 AWS 服务，您需要一个具有 IAM 或 IAM Identity Center 凭证的 AWS 账户。运行 AWS CLI 命令时，AWS CLI 需要有权访问这些 AWS 凭证。为了提高 AWS 账户的安全性，我们建议您在使用根用户或 IAM 用户时仅使用短期凭证。您应创建一个具有最低权限的用户来为将在 AWS 中运行的任务提供访问凭证。有关最佳实践的信息，请参阅《IAM 用户指南》中的[安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)。

**Topics**
+ [创建 IAM 或 IAM Identity Center 管理账户](#getting-started-prereqs-iam)
+ [后续步骤](#getting-started-prereqs-next)

## 创建 IAM 或 IAM Identity Center 管理账户
<a name="getting-started-prereqs-iam"></a>

在配置 AWS CLI 之前，您需要创建一个 IAM 或 IAM Identity Center 账户。


**账户创建选项**  

| 选择一种方法来管理您的凭证 | 目标 | 如何创建账户 | 如何配置对账户的编程访问 | 
| --- | --- | --- | --- | 
| AWS 管理控制台凭证 | 使用与初始账户设置期间创建的根用户、IAM 用户或来自您的身份提供商的联合身份对应的短期凭证。 | 打开 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup) 并按照在线说明操作。 | 无需执行其他步骤。要使用您的 AWS 账户登录 AWS CLI，请参阅 [使用控制台凭证登录以进行 AWS 本地开发](cli-configure-sign-in.md) | 
| IAM Identity Center 验证 | 使用短期凭证访问 AWS 服务。 | 按照《AWS IAM Identity Center 用户指南》中“入门”部分的说明操作。 | 通过在《AWS IAM Identity Center 用户指南》中配置使用，来配置编程访问。 | 
| AWS Identity and Access Management（不推荐使用） | 使用长期凭证访问 AWS 服务。 | 按照《IAM 用户指南》中“创建用于紧急访问的 IAM 用户”中的说明进行操作。 | 按照《IAM 用户指南》中的“管理用户的访问密钥”，配置编程访问。 | 

## 后续步骤
<a name="getting-started-prereqs-next"></a>

创建 AWS 账户和 IAM 凭证后，要使用 AWS CLI，您可以执行下列操作之一：
+ 在电脑上[安装最新版本](getting-started-install.md)的 AWS CLI 版本 2。
+ 在电脑上[安装过去发行版](getting-started-version.md)的 AWS CLI 版本 2。
+ [使用 Docker 镜像](getting-started-docker.md)从电脑访问 AWS CLI 版本 2。
+ 使用 AWS CloudShell 通过浏览器访问 AWS 控制台中的 AWS CLI 版本 2。有关更多信息，请参阅 [AWS CloudShell 用户指南](https://docs.aws.amazon.com/cloudshell/latest/userguide/)。

# 安装或更新最新版本的 AWS CLI
<a name="getting-started-install"></a>

本主题介绍如何在受支持的操作系统上安装或更新最新版本的 AWS Command Line Interface（AWS CLI）。有关 AWS CLI 最新版本的信息，请参阅 GitHub 上的 [AWS CLI 版本 2 更改日志](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst)。

要安装 AWS CLI 的过去发行版，请参阅[安装 AWS CLI 版本 2 的过去发行版](getting-started-version.md)。有关卸载说明，请参阅[卸载 AWS CLI 版本 2](uninstall.md)。

**重要**  
AWS CLI 版本 1 和 2 使用相同的 `aws` 命令名称。如果您之前安装了 AWS CLI 版本 1，请参阅[AWS CLI 版本 2 的迁移指南](cliv2-migration.md)。

**Topics**
+ [AWS CLI 安装和更新说明](#getting-started-install-instructions)
+ [AWS CLI 安装和卸载错误故障排除](#install-tshoot)
+ [后续步骤](#install-next-steps)

## AWS CLI 安装和更新说明
<a name="getting-started-install-instructions"></a>

有关安装说明，请展开适用于操作系统的部分。

### Linux
<a name="install-linux"></a>

#### 安装和更新要求
<a name="install-linux-prereqs"></a>
+ 您必须能够提取或“解压缩”下载的程序包。如果您的操作系统没有内置的 `unzip` 命令，请使用等效命令。
+ AWS CLI 使用 `glibc`、`groff` 和 `less`。默认情况下，它们都包含在 Linux 的大多数主要发行版中。
+ 我们在最近发行的 CentOS、Fedora、Ubuntu、Amazon Linux 1、Amazon Linux 2、Amazon Linux 2023 和 Linux ARM 的 64 位版本上支持 AWS CLI。
+ 由于 AWS 不维护除 `snap` 之外的第三方存储库，因此我们不能保证它们包含最新版本的 AWS CLI。

#### 安装或更新 AWS CLI
<a name="install-linux-instructions"></a>

**警告**  
如果这是您第一次在 Amazon Linux 上进行更新，要安装 AWS CLI 的最新版本，必须使用以下命令卸载预安装的 `yum` 版本：  

```
$ sudo yum remove awscli
```
删除 AWS CLI 的 `yum` 安装之后，请按照下面的 Linux 安装说明进行操作。

您可以使用以下方法之一安装 AWS CLI：
+ **命令行安装程序**是版本控制的好选择，因为您可以指定要安装的版本。此选项不会自动更新，因此，每次更新时都必须下载新的安装程序来覆盖以前的版本。
+ **官方支持的 `snap` 软件包**是一个不错的选择，可以让最新版本的 AWS CLI 作为 snap 软件包自动更新。没有内置支持来选择 AWS CLI 次要版本，因此，如果您的团队需要固定版本，则这不是最佳安装方法。

------
#### [ Command line installer - Linux x86 (64-bit) ]

要更新当前安装的 AWS CLI，请在每次更新以覆盖以前版本时下载一个新的安装程序。请在 Linux 上从命令行执行以下步骤来安装 AWS CLI。

以下是提供基本安装的单个复制和粘贴组中的快速安装步骤。有关更多说明，请参阅以下步骤。

**注意**  
**（可选）**以下命令块无需先验证下载内容的完整性即可下载和安装 AWS CLI。要验证下载内容的完整性，请使用以下分步说明。

**要安装** AWS CLI，请运行以下命令。

```
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```

**要更新 AWS CLI 的当前安装**，请添加现有的符号链接和安装程序信息，以使用 `--bin-dir`、`--install-dir` 和 `--update` 参数构造 `install` 命令。以下命令块使用符号链接示例 */usr/local/bin* 和安装程序位置示例 */usr/local/aws-cli* 来为当前用户在本地安装 AWS CLI。

```
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
```

**安装步骤指南**

1. 通过以下方式之一下载安装文件：
   + **使用 `curl` 命令** – `-o` 选项指定下载的程序包应写入的文件名。以下示例命令中使用的选项将下载的文件以本地名称 `awscliv2.zip` 写入到当前目录中。

     ```
     $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
     ```
   + **从 URL 下载**：要使用浏览器下载安装程序，请使用以下 URL：[https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip](https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip)

1. **（可选）验证下载的 zip 文件的完整性**

   如果已在上述步骤中选择手动下载 AWS CLI 安装程序包 `.zip`，则可以通过以下步骤使用 `GnuPG` 工具验证签名。

   AWS CLI 安装程序包 `.zip` 文件是使用 PGP 签名进行加密签名的。如果文件有任何损坏或更改，则此验证失败，您不应继续安装。

   1. 使用您的程序包管理器下载并安装 `gpg` 命令。有关 `GnuPG` 的更多信息，请参阅 [GnuPG 网站](https://www.gnupg.org/)。

   1. 要创建公有密钥文件，请创建一个文本文件并粘贴到以下文本中。

      ```
      -----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
      tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
      CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
      aGveYQUJDMpiLAAKCRCmMQrMRnJHXKBYD/9Ab0qQdGiO5hObchG8xh8Rpb4Mjyf6
      0JrVo6m8GNjNj6BHkSc8fuTQJ/FaEhaQxj3pjZ3GXPrXjIIVChmICLlFuRXYzrXc
      Pw0lniybypsZEVai5kO0tCNBCCFuMN9RsmmRG8mf7lC4FSTbUDmxG/QlYK+0IV/l
      uJkzxWa+rySkdpm0JdqumjegNRgObdXHAQDWlubWQHWyZyIQ2B4U7AxqSpcdJp6I
      S4Zds4wVLd1WE5pquYQ8vS2cNlDm4QNg8wTj58e3lKN47hXHMIb6CHxRnb947oJa
      pg189LLPR5koh+EorNkA1wu5mAJtJvy5YMsppy2y/kIjp3lyY6AmPT1posgGk70Z
      CmToEZ5rbd7ARExtlh76A0cabMDFlEHDIK8RNUOSRr7L64+KxOUegKBfQHb9dADY
      qqiKqpCbKgvtWlds909Ms74JBgr2KwZCSY1HaOxnIr4CY43QRqAq5YHOay/mU+6w
      hhmdF18vpyK0vfkvvGresWtSXbag7Hkt3XjaEw76BzxQH21EBDqU8WJVjHgU6ru+
      DJTs+SxgJbaT3hb/vyjlw0lK+hFfhWKRwgOXH8vqducF95NRSUxtS4fpqxWVaw3Q
      V2OWSjbne99A5EPEySzryFTKbMGwaTlAwMCwYevt4YT6eb7NmFhTx0Fis4TalUs+
      j+c7Kg92pDx2uQ==
      =OBAt
      -----END PGP PUBLIC KEY BLOCK-----
      ```

      以下是公有密钥的详细信息以供参考。

      ```
      Key ID:           A6310ACC4672475C
      Type:             RSA
      Size:             4096/4096
      Created:          2019-09-18
      Expires:          2026-07-07
      User ID:          AWS CLI Team <aws-cli@amazon.com>
      Key fingerprint:  FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
      ```

   1. 使用以下命令导入 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
      ```

   1. 下载您下载的程序包的 AWS CLI 签名文件。它具有与其对应的 `.zip` 文件相同的路径和名称，但扩展名为 `.sig`。在以下示例中，我们将其作为名为 `awscliv2.sig` 的文件保存到当前目录中。

      **对于最新版本的 AWS CLI，**请使用以下命令块：

      ```
      $ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip.sig
      ```

   1. 验证签名，并将下载的 `.sig` 和 `.zip` 文件名作为参数传递给 `gpg` 命令。

      ```
      $ gpg --verify awscliv2.sig awscliv2.zip
      ```

      该输出值应该类似于以下内容。

      ```
      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](https://en.wikipedia.org/wiki/Web_of_trust)。

1. 解压缩安装程序。如果您的 Linux 发行版没有的内置 `unzip` 命令，请使用等效的命令对其解压缩。以下示例命令解压缩程序包并在当前目录下创建一个名为 `aws` 的目录。

   ```
   $ unzip awscliv2.zip
   ```
**注意**  
从以前的版本进行更新时，`unzip` 命令会提示覆盖现有文件。要跳过这些提示，例如使用脚本自动化，请为 `unzip` 使用 `-u` 更新。此标志会自动更新现有文件并根据需要创建新文件。  

   ```
   $ unzip -u awscliv2.zip
   ```

1. 运行安装程序。安装命令在新解压缩的 `install` 目录中使用一个名为 `aws` 的文件。默认情况下，文件全部安装到 `/usr/local/aws-cli` 并在 `/usr/local/bin` 中创建符号链接。该命令包括 `sudo` 以授予对这些目录的写入权限。

   ```
   $ sudo ./aws/install
   ```

   如果您指定您已经具有写入权限的目录，则可以不带 `sudo` 进行安装。对于 `install` 命令，请按以下说明指定安装位置：
   + 确保您提供给 `-i` 和 `-b` 参数的路径不包含任何含空格字符或其他空白字符的卷名称或目录名称。如果有空格，安装将失败。
   + `--install-dir` 或 `-i` – 此选项指定要将所有文件复制到的目录。

     原定设置值为 `/usr/local/aws-cli`。
   + `--bin-dir` 或 `-b` – 此选项指定安装目录中的主 `aws` 程序通过符号链接指向指定路径中的 `aws` 文件。您必须具有对指定目录的写入权限。创建指向路径中已经存在的目录的符号链接后，无需再将安装目录添加到用户的 `$PATH` 变量中。

     原定设置值为 `/usr/local/bin`。

   ```
   $ ./aws/install -i /usr/local/aws-cli -b /usr/local/bin
   ```
**注意**  
要更新 AWS CLI 的当前安装，请添加现有的符号链接和安装程序信息，以使用 `--update` 参数构造 `install` 命令。  

   ```
   $ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
   ```
要查找现有的符号链接和安装目录，请执行以下步骤：  
使用 `which` 命令查找符号链接。这为您提供了与 `--bin-dir` 参数一起使用的路径。  

      ```
      $ which aws
      /usr/local/bin/aws
      ```
使用 `ls` 命令查找符号链接指向的目录。这为您提供了与 `--install-dir` 参数一起使用的路径。  

      ```
      $ ls -l /usr/local/bin/aws
      lrwxrwxrwx 1 ec2-user ec2-user 49 Oct 22 09:49 /usr/local/bin/aws -> /usr/local/aws-cli/v2/current/bin/aws
      ```

1. 通过以下命令确认此安装。

   ```
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Linux/5.10.205-195.807.amzn2.x86_64
   ```

   如果无法找到 `aws` 命令，您可能需要重新启动终端或按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

------
#### [ Command line - Linux ARM ]

要更新当前安装的 AWS CLI，请在每次更新以覆盖以前版本时下载一个新的安装程序。请在 Linux 上从命令行执行以下步骤来安装 AWS CLI。

以下是提供基本安装的单个复制和粘贴组中的快速安装步骤。有关更多说明，请参阅以下步骤。

**注意**  
**（可选）**以下命令块无需先验证下载内容的完整性即可下载和安装 AWS CLI。要验证下载内容的完整性，请使用以下分步说明。

**要安装** AWS CLI，请运行以下命令。

```
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```

**要更新 AWS CLI 的当前安装**，请添加现有的符号链接和安装程序信息，以使用 `--bin-dir`、`--install-dir` 和 `--update` 参数构造 `install` 命令。以下命令块使用示例符号链接 */usr/local/bin* 和示例安装位置 */usr/local/aws-cli*。

```
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
```

**安装步骤指南**

1. 通过以下方式之一下载安装文件：
   + **使用 `curl` 命令** – `-o` 选项指定下载的程序包应写入的文件名。以下示例命令中使用的选项将下载的文件以本地名称 `awscliv2.zip` 写入到当前目录中。

     ```
     $ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
     ```
   + **从 URL 下载**：要使用浏览器下载安装程序，请使用以下 URL：[https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip](https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip)

1. **（可选）验证下载的 zip 文件的完整性**

   如果已在上述步骤中选择手动下载 AWS CLI 安装程序包 `.zip`，则可以通过以下步骤使用 `GnuPG` 工具验证签名。

   AWS CLI 安装程序包 `.zip` 文件是使用 PGP 签名进行加密签名的。如果文件有任何损坏或更改，则此验证失败，您不应继续安装。

   1. 使用您的程序包管理器下载并安装 `gpg` 命令。有关 `GnuPG` 的更多信息，请参阅 [GnuPG 网站](https://www.gnupg.org/)。

   1. 要创建公有密钥文件，请创建一个文本文件并粘贴到以下文本中。

      ```
      -----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
      tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
      CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
      aGveYQUJDMpiLAAKCRCmMQrMRnJHXKBYD/9Ab0qQdGiO5hObchG8xh8Rpb4Mjyf6
      0JrVo6m8GNjNj6BHkSc8fuTQJ/FaEhaQxj3pjZ3GXPrXjIIVChmICLlFuRXYzrXc
      Pw0lniybypsZEVai5kO0tCNBCCFuMN9RsmmRG8mf7lC4FSTbUDmxG/QlYK+0IV/l
      uJkzxWa+rySkdpm0JdqumjegNRgObdXHAQDWlubWQHWyZyIQ2B4U7AxqSpcdJp6I
      S4Zds4wVLd1WE5pquYQ8vS2cNlDm4QNg8wTj58e3lKN47hXHMIb6CHxRnb947oJa
      pg189LLPR5koh+EorNkA1wu5mAJtJvy5YMsppy2y/kIjp3lyY6AmPT1posgGk70Z
      CmToEZ5rbd7ARExtlh76A0cabMDFlEHDIK8RNUOSRr7L64+KxOUegKBfQHb9dADY
      qqiKqpCbKgvtWlds909Ms74JBgr2KwZCSY1HaOxnIr4CY43QRqAq5YHOay/mU+6w
      hhmdF18vpyK0vfkvvGresWtSXbag7Hkt3XjaEw76BzxQH21EBDqU8WJVjHgU6ru+
      DJTs+SxgJbaT3hb/vyjlw0lK+hFfhWKRwgOXH8vqducF95NRSUxtS4fpqxWVaw3Q
      V2OWSjbne99A5EPEySzryFTKbMGwaTlAwMCwYevt4YT6eb7NmFhTx0Fis4TalUs+
      j+c7Kg92pDx2uQ==
      =OBAt
      -----END PGP PUBLIC KEY BLOCK-----
      ```

      以下是公有密钥的详细信息以供参考。

      ```
      Key ID:           A6310ACC4672475C
      Type:             RSA
      Size:             4096/4096
      Created:          2019-09-18
      Expires:          2026-07-07
      User ID:          AWS CLI Team <aws-cli@amazon.com>
      Key fingerprint:  FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
      ```

   1. 使用以下命令导入 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
      ```

   1. 下载您下载的程序包的 AWS CLI 签名文件。它具有与其对应的 `.zip` 文件相同的路径和名称，但扩展名为 `.sig`。在以下示例中，我们将其作为名为 `awscliv2.sig` 的文件保存到当前目录中。

      **对于最新版本的 AWS CLI，**请使用以下命令块：

      ```
      $ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip.sig
      ```

   1. 验证签名，并将下载的 `.sig` 和 `.zip` 文件名作为参数传递给 `gpg` 命令。

      ```
      $ gpg --verify awscliv2.sig awscliv2.zip
      ```

      该输出值应该类似于以下内容。

      ```
      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](https://en.wikipedia.org/wiki/Web_of_trust)。

1. 解压缩安装程序。如果您的 Linux 发行版没有的内置 `unzip` 命令，请使用等效的命令对其解压缩。以下示例命令解压缩程序包并在当前目录下创建一个名为 `aws` 的目录。

   ```
   $ unzip awscliv2.zip
   ```
**注意**  
从以前的版本进行更新时，`unzip` 命令会提示覆盖现有文件。要跳过这些提示，例如使用脚本自动化，请为 `unzip` 使用 `-u` 更新。此标志会自动更新现有文件并根据需要创建新文件。  

   ```
   $ unzip -u awscliv2.zip
   ```

1. 运行安装程序。安装命令在新解压缩的 `install` 目录中使用一个名为 `aws` 的文件。默认情况下，文件全部安装到 `/usr/local/aws-cli` 并在 `/usr/local/bin` 中创建符号链接。该命令包括 `sudo` 以授予对这些目录的写入权限。

   ```
   $ sudo ./aws/install
   ```

   如果您指定您已经具有写入权限的目录，则可以不带 `sudo` 进行安装。对于 `install` 命令，请按以下说明指定安装位置：
   + 确保您提供给 `-i` 和 `-b` 参数的路径不包含任何含空格字符或其他空白字符的卷名称或目录名称。如果有空格，安装将失败。
   + `--install-dir` 或 `-i` – 此选项指定要将所有文件复制到的目录。

     原定设置值为 `/usr/local/aws-cli`。
   + `--bin-dir` 或 `-b` – 此选项指定安装目录中的主 `aws` 程序通过符号链接指向指定路径中的 `aws` 文件。您必须具有对指定目录的写入权限。创建指向路径中已经存在的目录的符号链接后，无需再将安装目录添加到用户的 `$PATH` 变量中。

     原定设置值为 `/usr/local/bin`。

   ```
   $ ./aws/install -i /usr/local/aws-cli -b /usr/local/bin
   ```
**注意**  
要更新 AWS CLI 的当前安装，请添加现有的符号链接和安装程序信息，以使用 `--update` 参数构造 `install` 命令。  

   ```
   $ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
   ```
要查找现有的符号链接和安装目录，请执行以下步骤：  
使用 `which` 命令查找符号链接。这为您提供了与 `--bin-dir` 参数一起使用的路径。  

      ```
      $ which aws
      /usr/local/bin/aws
      ```
使用 `ls` 命令查找符号链接指向的目录。这为您提供了与 `--install-dir` 参数一起使用的路径。  

      ```
      $ ls -l /usr/local/bin/aws
      lrwxrwxrwx 1 ec2-user ec2-user 49 Oct 22 09:49 /usr/local/bin/aws -> /usr/local/aws-cli/v2/current/bin/aws
      ```

1. 通过以下命令确认此安装。

   ```
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Linux/5.10.205-195.807.amzn2.x86_64
   ```

   如果无法找到 `aws` 命令，您可能需要重新启动终端或按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

------
#### [ Snap package ]

我们在 `snap` 上提供 AWS 支持的 AWS CLI 官方版本。如果您希望始终在系统上安装最新版本的 AWS CLI，snap 软件包会自动更新，从而为您提供此版本。没有内置支持来选择 AWS CLI 的次要版本，因此，如果您的团队需要固定版本，则这不是最佳安装方法。如果您要安装 AWS CLI 的特定次要版本，建议您使用命令行安装程序。

1. 如果您的 Linux 平台尚未安装 `snap`，请在您的平台上安装 `snap`。

   1. 有关安装 `snap` 的信息，请参阅《Snap 文档》**中的[安装进程守护程序](https://snapcraft.io/docs/installing-snapd)。

   1. 您可能需要重新启动系统才能正确更新 `PATH` 变量。如果您遇到安装问题，请按照《Snap 文档》**中[修复常见问题](https://snapcraft.io/docs/fix-common-issues)中的步骤操作。

   1. 要验证 `snap` 是否已正确安装，请运行以下命令：

      ```
      $ snap version
      ```

1. 在 AWS CLI 中运行以下 `snap install` 命令。

   ```
   $ snap install aws-cli --classic
   ```

   根据您的权限，您可能需要将 `sudo` 添加到命令中。

   ```
   $ sudo snap install aws-cli --classic
   ```
**注意**  
要查看 AWS CLI 的快照存储库，包括其他 `snap` 说明，请参阅 *Canonical Snapcraft 网站*上的 [https://snapcraft.io/aws-cli](https://snapcraft.io/aws-cli) 页面。

1. 验证 AWS CLI 是否已正确安装。

   ```
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Linux/5.10.205-195.807.amzn2.x86_64
   ```

   如果出现错误，请参阅[排查 AWS CLI 错误](cli-chap-troubleshooting.md)。

------

### macOS
<a name="install-macos"></a>

#### 安装和更新要求
<a name="install-macos-prereqs"></a>
+ 我们在 macOS 版本 11 及更高版本上支持 AWS CLI。如需了解更多信息，请参阅 *AWS 开发人员工具博客*上的 [macOS support policy updates for the AWS CLI v2](https://aws.amazon.com/blogs/developer/macos-support-policy-updates-for-the-aws-cli-v2/)。
+ 由于 AWS 不维护第三方存储库，因此我们不能保证它们包含最新版本的 AWS CLI。

**macOS 版本支持矩阵**


| AWS CLI 版本 | 支持的 macOS 版本 | 
| --- | --- | 
| 2.21.0 – 当前 | 11\$1 | 
| 2.17.0 – 2.20.0 | 10.15\$1 | 
| 2.0.0 – 2.16.12 | 10.14 及更低版本 | 

#### 安装或更新 AWS CLI
<a name="install-macos0-instructions"></a>

如果要更新到最新版本，请使用与当前版本相同的安装方法。您可以通过下列方式之一在 macOS 上安装 AWS CLI。

------
#### [ GUI installer ]

以下步骤演示如何使用标准 macOS 用户界面和浏览器安装 AWS CLI 的最新版本。

1. 在浏览器中，下载 macOS `pkg` 文件：[https://awscli.amazonaws.com/AWSCLIV2.pkg](https://awscli.amazonaws.com/AWSCLIV2.pkg)

1. 运行下载的文件，然后按照屏幕上的说明进行操作。您可以选择通过以下方式安装 AWS CLI：
   + **针对电脑上的所有用户（需要 `sudo`）**
     + 您可以安装到任何文件夹，或选择推荐的默认文件夹 `/usr/local/aws-cli`。
     + 安装程序会自动在 `/usr/local/bin/aws` 中创建一个符号链接，该链接指向您选择的安装文件夹中的主程序。
   + **仅针对当前用户（不需要 `sudo`）**
     + 您可以安装到具有写入权限的任何文件夹。
     + 由于具有标准用户权限，在安装程序完成后，您必须在命令提示符下使用以下命令在 `$PATH` 中手动创建指向 `aws` 和 `aws_completer` 程序的符号链接文件。符号链接的默认位置为 `/usr/local/bin/`：

       ```
       $ ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws
       $ ln -s /folder/installed/aws-cli/aws_completer /usr/local/bin/aws_completer
       ```

        如果您没有该文件夹的写入权限，则可能需要在命令中使用 `sudo`。以下示例将 `sudo` 以及默认位置用于 `/usr/local/bin/` 中的符号链接：

       ```
       $ sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws
       $ sudo ln -s /folder/installed/aws-cli/aws_completer /usr/local/bin/aws_completer
       ```
**注意**  
您可以在安装过程中的任意时刻按 **Cmd\$1L** 来查看安装的调试日志。这会打开一个日志窗格，让您能够筛选和保存日志。日志文件还会自动保存到 `/var/log/install.log`。

1. 要验证 Shell 是否可以在 `$PATH` 中找到并运行 `aws` 命令，请使用以下命令。

   ```
   $ which aws
   /usr/local/bin/aws 
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Darwin/23.3.0
   ```

   如果无法找到 `aws` 命令，您可能需要重新启动终端或按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

------
#### [ Command line installer - All users ]

如果您拥有 `sudo` 权限，则可以针对电脑上的所有用户安装 AWS CLI。我们在一个易于复制和粘贴的组中提供步骤。请参阅以下步骤中每一行的描述。

```
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
```

**指导性安装说明**

1. 使用 `curl` 命令下载文件。`-o` 选项指定下载的程序包应写入的文件名。在此示例中，文件写入当前文件夹中的 `AWSCLIV2.pkg`。

   ```
   $ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
   ```

1. 运行标准 macOS `installer` 程序，同时将下载的 `.pkg` 文件指定为源。使用 `-pkg` 参数指定要安装的程序包的名称以及要将程序包安装到的驱动器的 `-target /` 参数。系统会将文件安装到 `/usr/local/aws-cli`，并自动在 `/usr/local/bin` 中创建符号链接。您必须在命令中使用 `sudo` 来授予对这些文件夹的写入权限。

   ```
   $ sudo installer -pkg ./AWSCLIV2.pkg -target /
   ```

   安装完成后，调试日志将写入到 `/var/log/install.log`。

1. 要验证 Shell 是否可以在 `$PATH` 中找到并运行 `aws` 命令，请使用以下命令。

   ```
   $ which aws
   /usr/local/bin/aws 
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Darwin/23.3.0
   ```

   如果无法找到 `aws` 命令，您可能需要重新启动终端或按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

------
#### [ Command line - Current user ]

1. 要指定将 AWS CLI 安装到哪个文件夹，必须使用任意文件名创建 XML 文件。此文件是 XML 格式的文件，类似于以下示例。保持所显示的所有值不变，但必须将第 9 行中的 */Users/myusername* 路径替换为您要在其中安装 AWS CLI 的文件夹的路径。*必须存在该文件夹，否则命令会失败。*以下名为 *choices.xml* 的 XML 示例指定安装程序将 AWS CLI 安装到文件夹 `/Users/myusername` 中，它在该文件夹中创建了一个名为 `aws-cli` 的文件夹。

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
     <array>
       <dict>
         <key>choiceAttribute</key>
         <string>customLocation</string>
         <key>attributeSetting</key>
         <string>/Users/myusername</string>
         <key>choiceIdentifier</key>
         <string>default</string>
       </dict>
     </array>
   </plist>
   ```

1. 使用 `curl` 命令下载 `pkg` 安装程序。`-o` 选项指定下载的程序包应写入的文件名。在此示例中，文件写入当前文件夹中的 `AWSCLIV2.pkg`。

   ```
   $ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
   ```

1. 使用以下选项运行标准 macOS `installer` 程序：
   + 使用 `-pkg` 参数指定要安装的程序包的名称。
   + 通过将 `-target` 参数设置为 `CurrentUserHomeDirectory`，指定*仅安装到当前用户*。
   + 在 `-applyChoiceChangesXML` 参数中指定您创建的 XML 文件的路径（相对于当前文件夹）和名称。

   以下示例在文件夹 AWS CLI 中安装 `/Users/myusername/aws-cli`。

   ```
   $ installer -pkg AWSCLIV2.pkg \
               -target CurrentUserHomeDirectory \
               -applyChoiceChangesXML choices.xml
   ```

1. 由于标准用户权限通常不允许写入 `$PATH` 中的文件夹，因此在此模式下，安装程序不会尝试将符号链接添加到 `aws` 和 `aws_completer` 程序中。要使 AWS CLI 正确运行，必须在安装程序完成后手动创建符号链接。如果 `$PATH` 包含您可以写入的文件夹，并且您将该文件夹指定为目标的路径，则可以在不使用 `sudo` 的情况下运行以下命令。如果 `$PATH` 中没有可写入的文件夹，您必须使用 `sudo`，以获取写入指定目标文件夹的权限。符号链接的默认位置为 `/usr/local/bin/`。将 `folder/installed` 替换为您的 AWS CLI 安装的路径。

   ```
   $ sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws
   $ sudo ln -s /folder/installed/aws-cli/aws_completer /usr/local/bin/aws_completer
   ```

   安装完成后，调试日志将写入到 `/var/log/install.log`。

1. 要验证 Shell 是否可以在 `$PATH` 中找到并运行 `aws` 命令，请使用以下命令。

   ```
   $ which aws
   /usr/local/bin/aws 
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Darwin/23.3.0
   ```

   如果无法找到 `aws` 命令，您可能需要重新启动终端或按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

------

### Windows
<a name="install-windows"></a>

#### 安装和更新要求
<a name="install-windows-prereqs"></a>
+ 我们在 Microsoft 支持的 64 位 Windows 版本上支持 AWS CLI。
+ 安装软件的管理员权限

#### 安装或更新 AWS CLI
<a name="install-windows-instructions"></a>

要在 Windows 上更新当前安装的 AWS CLI，请在每次更新以覆盖以前版本时下载一个新的安装程序。AWS CLI 会定期更新。要查看最新版本的发布时间，请参阅 *GitHub* 上的 [AWS CLI 版本 2 更改日志](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst)。

1. 下载并运行适用于 Windows（64 位）的 AWS CLI MSI 安装程序：

   [https://awscli.amazonaws.com/AWSCLIV2.msi](https://awscli.amazonaws.com/AWSCLIV2.msi) 

   或者，您可以运行 `msiexec` 命令来运行 MSI 安装程序。

   ```
   C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
   ```

   有关可与 `msiexec` 一起使用的各种参数，请参阅 *Microsoft Docs* 网站上的 [msiexec](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/msiexec)。例如，您可以使用 `/qn` 标记进行静默安装。

   ```
   C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi /qn
   ```

1. 要确认安装，请打开 **Start**（开始）菜单，搜索 `cmd` 以打开命令提示符窗口，然后在命令提示符处使用 `aws --version` 命令。

   ```
   C:\> aws --version
   aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
   ```

   如果 Windows 无法找到该程序，您可能需要关闭并重新打开命令提示符窗口以刷新该路径，按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

## AWS CLI 安装和卸载错误故障排除
<a name="install-tshoot"></a>

如果您在安装或卸载 AWS CLI 后遇到问题，请参阅[排查 AWS CLI 错误](cli-chap-troubleshooting.md)以了解故障排除步骤。有关相关性最高的故障排除步骤，请参阅[找不到命令错误](cli-chap-troubleshooting.md#tshoot-install-not-found)、[“`aws --version`”命令返回的版本与您安装的版本不同](cli-chap-troubleshooting.md#tshoot-install-wrong-version)和[卸载 AWS CLI 后，“`aws --version`”命令返回一个版本](cli-chap-troubleshooting.md#tshoot-uninstall-1)。

## 后续步骤
<a name="install-next-steps"></a>

成功安装 AWS CLI 后，可以安全地删除您下载的安装程序文件。完成[使用 AWS CLI 版本 2 的先决条件](getting-started-prereqs.md)中的步骤并安装 AWS CLI 之后，您应执行[设置 AWS CLI](getting-started-quickstart.md)。

# 安装 AWS CLI 版本 2 的过去发行版
<a name="getting-started-version"></a>

本主题介绍如何在受支持的操作系统上安装 AWS Command Line Interface 版本 2 (AWS CLI)的过去发行版。有关 AWS CLI 版本 2 的发行信息，请参阅 GitHub 上的 [AWS CLI 版本 2 更改日志](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst)。

AWS CLI 版本 2 安装说明：

## Linux
<a name="versioned-linux"></a>

### 安装要求
<a name="versioned-linux-reqs"></a>
+ 您了解需要安装 AWS CLI 版本 2 的哪个发行版。有关版本列表，请参阅 [GitHub](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) 上的 *AWS CLI 版本 2 更改日志*。
+ 您必须能够提取或“解压缩”下载的程序包。如果您的操作系统没有内置的 `unzip` 命令，请使用等效命令。
+ AWS CLI 版本 2 使用 `glibc`、`groff` 和 `less`。默认情况下，它们都包含在 Linux 的大多数主要发行版中。
+ 我们在最近发行的 CentOS、Fedora、Ubuntu、Amazon Linux 1、Amazon Linux 2 和 Linux ARM 的 64 位版本上支持 AWS CLI 版本 2。
+ 由于 AWS 不维护第三方存储库，因此我们不能保证它们包含最新版本的 AWS CLI。

### 安装说明
<a name="versioned-linux-instructions"></a>

请在 Linux 上从命令行执行以下步骤来安装 AWS CLI。

我们根据您是使用 64 位 Linux 还是 Linux ARM，在一个易于复制和粘贴的组中提供步骤。请参阅以下步骤中每一行的描述。

------
#### [ Linux x86 (64-bit) ]

**注意**  
**（可选）**以下命令块无需先验证下载内容的完整性即可下载和安装 AWS CLI。要验证下载内容的完整性，请使用以下分步说明。

 有关版本列表，请参阅 [GitHub](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) 上的 *AWS CLI 版本 2 更改日志*。

**要安装** AWS CLI，请运行以下命令。

要指定一个版本，请在文件名后附加一个连字符和版本号。在本示例中，版本 *2.0.30* 的文件名为 `awscli-exe-linux-x86_64-2.0.30.zip`，这会生成以下命令：

```
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```

**要更新 AWS CLI 的当前安装**，请添加现有的符号链接和安装程序信息，以使用 `--bin-dir`、`--install-dir` 和 `--update` 参数构造 `install` 命令。以下命令块使用示例符号链接 */usr/local/bin* 和示例安装位置 */usr/local/aws-cli*。

```
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
```

------
#### [ Linux ARM ]

**注意**  
**（可选）**以下命令块无需先验证下载内容的完整性即可下载和安装 AWS CLI。要验证下载内容的完整性，请使用以下分步说明。

 有关版本列表，请参阅 [GitHub](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) 上的 *AWS CLI 版本 2 更改日志*。

**要安装** AWS CLI，请运行以下命令。

要指定一个版本，请在文件名后附加一个连字符和版本号。在本示例中，版本 *2.0.30* 的文件名为 `awscli-exe-linux-aarch64-2.0.30.zip`，这会生成以下命令：

```
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```

**要更新 AWS CLI 的当前安装**，请添加现有的符号链接和安装程序信息，以使用 `--bin-dir`、`--install-dir` 和 `--update` 参数构造 `install` 命令。以下命令块使用示例符号链接 */usr/local/bin* 和示例安装位置 */usr/local/aws-cli*。

```
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
```

------

1. 通过以下方式之一下载安装文件：

------
#### [ Linux x86 (64-bit) ]
   + **使用 `curl` 命令** – `-o` 选项指定下载的程序包应写入的文件名。以下示例命令中使用的选项将下载的文件以本地名称 `awscliv2.zip` 写入到当前目录中。

     要指定一个版本，请在文件名后附加一个连字符和版本号。在本示例中，版本 *2.0.30* 的文件名为 `awscli-exe-linux-x86_64-2.0.30.zip`，这会生成以下命令：

     ```
     $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"
     ```

      有关版本列表，请参阅 [GitHub](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) 上的 *AWS CLI 版本 2 更改日志*。
   + **从 URL 下载** – 

     在浏览器中，通过在文件名后附加一个连字符和版本号来下载特定版本的 AWS CLI。

     ```
     https://awscli.amazonaws.com/awscli-exe-linux-x86_64-version.number.zip
     ```

     在本示例中，版本 *2.0.30* 的文件名为 awscli-exe-linux-x86\$164-2.0.30.zip，这会生成以下链接：[https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip](https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip)

------
#### [ Linux ARM ]
   + **使用 `curl` 命令** – `-o` 选项指定下载的程序包应写入的文件名。以下示例命令中使用的选项将下载的文件以本地名称 `awscliv2.zip` 写入到当前目录中。

     要指定一个版本，请在文件名后附加一个连字符和版本号。在本示例中，版本 *2.0.30* 的文件名为 `awscli-exe-linux-aarch64-2.0.30.zip`，这会生成以下命令：

     ```
     $ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip" -o "awscliv2.zip"
     unzip awscliv2.zip
     sudo ./aws/install
     ```
   + **从 URL 下载** – 

     在浏览器中，通过在文件名后附加一个连字符和版本号来下载特定版本的 AWS CLI。

     ```
     https://awscli.amazonaws.com/awscli-exe-linux-aarch64-version.number.zip
     ```

     在本示例中，版本 *2.0.30* 的文件名为 `awscli-exe-linux-aarch64-2.0.30.zip`，这会生成以下链接：[https://awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip](https://awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip)

------

1. **（可选）验证下载的 zip 文件的完整性**

   如果已在上述步骤中选择手动下载 AWS CLI 安装程序包 `.zip`，则可以通过以下步骤使用 `GnuPG` 工具验证签名。

   AWS CLI 安装程序包 `.zip` 文件是使用 PGP 签名进行加密签名的。如果文件有任何损坏或更改，则此验证失败，您不应继续安装。

   1. 使用您的程序包管理器下载并安装 `gpg` 命令。有关 `GnuPG` 的更多信息，请参阅 [GnuPG 网站](https://www.gnupg.org/)。

   1. 要创建公有密钥文件，请创建一个文本文件并粘贴到以下文本中。

      ```
      -----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
      tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
      CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
      aGveYQUJDMpiLAAKCRCmMQrMRnJHXKBYD/9Ab0qQdGiO5hObchG8xh8Rpb4Mjyf6
      0JrVo6m8GNjNj6BHkSc8fuTQJ/FaEhaQxj3pjZ3GXPrXjIIVChmICLlFuRXYzrXc
      Pw0lniybypsZEVai5kO0tCNBCCFuMN9RsmmRG8mf7lC4FSTbUDmxG/QlYK+0IV/l
      uJkzxWa+rySkdpm0JdqumjegNRgObdXHAQDWlubWQHWyZyIQ2B4U7AxqSpcdJp6I
      S4Zds4wVLd1WE5pquYQ8vS2cNlDm4QNg8wTj58e3lKN47hXHMIb6CHxRnb947oJa
      pg189LLPR5koh+EorNkA1wu5mAJtJvy5YMsppy2y/kIjp3lyY6AmPT1posgGk70Z
      CmToEZ5rbd7ARExtlh76A0cabMDFlEHDIK8RNUOSRr7L64+KxOUegKBfQHb9dADY
      qqiKqpCbKgvtWlds909Ms74JBgr2KwZCSY1HaOxnIr4CY43QRqAq5YHOay/mU+6w
      hhmdF18vpyK0vfkvvGresWtSXbag7Hkt3XjaEw76BzxQH21EBDqU8WJVjHgU6ru+
      DJTs+SxgJbaT3hb/vyjlw0lK+hFfhWKRwgOXH8vqducF95NRSUxtS4fpqxWVaw3Q
      V2OWSjbne99A5EPEySzryFTKbMGwaTlAwMCwYevt4YT6eb7NmFhTx0Fis4TalUs+
      j+c7Kg92pDx2uQ==
      =OBAt
      -----END PGP PUBLIC KEY BLOCK-----
      ```

      以下是公有密钥的详细信息以供参考。

      ```
      Key ID:           A6310ACC4672
      Type:             RSA
      Size:             4096/4096
      Created:          2019-09-18
      Expires:          2026-07-07
      User ID:          AWS CLI Team <aws-cli@amazon.com>
      Key fingerprint:  FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
      ```

   1. 使用以下命令导入 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
      ```

   1. 下载您下载的程序包的 AWS CLI 签名文件。它具有与其对应的 `.zip` 文件相同的路径和名称，但扩展名为 `.sig`。在以下示例中，我们将其作为名为 `awscliv2.sig` 的文件保存到当前目录中。

------
#### [ Linux x86 (64-bit) ]

      **对于最新版本的 AWS CLI，**请使用以下命令块：

      ```
      $ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip.sig
      ```

      **对于特定版本的 AWS CLI，**在文件名后附加一个连字符和版本号。在本示例中，版本 *2.0.30* 的文件名为 `awscli-exe-linux-x86_64-2.0.30.zip.sig`，这会生成以下命令：

      ```
      $ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip.sig
      ```

       有关版本列表，请参阅 [GitHub](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) 上的 *AWS CLI 版本 2 更改日志*。

------
#### [ Linux ARM ]

      **对于最新版本的 AWS CLI，**请使用以下命令块：

      ```
      $ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip.sig
      ```

      **对于特定版本的 AWS CLI，**在文件名后附加一个连字符和版本号。在本示例中，版本 *2.0.30* 的文件名为 `awscli-exe-linux-aarch64-2.0.30.zip.sig`，这会生成以下命令：

      ```
      $ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip.sig
      ```

       有关版本列表，请参阅 [GitHub](https://github.com/aws/aws-cli/blob/v2/CHANGELOG.rst?plain=1) 上的 *AWS CLI 版本 2 更改日志*。

------

   1. 验证签名，并将下载的 `.sig` 和 `.zip` 文件名作为参数传递给 `gpg` 命令。

      ```
      $ gpg --verify awscliv2.sig awscliv2.zip
      ```

      该输出值应该类似于以下内容。

      ```
      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](https://en.wikipedia.org/wiki/Web_of_trust)。

1. 解压缩安装程序。如果您的 Linux 发行版没有的内置 `unzip` 命令，请使用等效的命令对其解压缩。以下示例命令解压缩程序包并在当前目录下创建一个名为 `aws` 的目录。

   ```
   $ unzip awscliv2.zip
   ```

1. 运行安装程序。安装命令在新解压缩的 `install` 目录中使用一个名为 `aws` 的文件。默认情况下，文件全部安装到 `/usr/local/aws-cli` 并在 `/usr/local/bin` 中创建符号链接。该命令包括 `sudo` 以授予对这些目录的写入权限。

   ```
   $ sudo ./aws/install
   ```

   如果您指定您已经具有写入权限的目录，则可以不带 `sudo` 进行安装。对于 `install` 命令，请按以下说明指定安装位置：
   + 确保您提供给 `-i` 和 `-b` 参数的路径不包含任何含空格字符或其他空白字符的卷名称或目录名称。如果有空格，安装将失败。
   + `--install-dir` 或 `-i` – 此选项指定要将所有文件复制到的目录。

     原定设置值为 `/usr/local/aws-cli`。
   + `--bin-dir` 或 `-b` – 此选项指定安装目录中的主 `aws` 程序通过符号链接指向指定路径中的 `aws` 文件。您必须具有对指定目录的写入权限。创建指向路径中已经存在的目录的符号链接后，无需再将安装目录添加到用户的 `$PATH` 变量中。

     原定设置值为 `/usr/local/bin`。

   ```
   $ ./aws/install -i /usr/local/aws-cli -b /usr/local/bin
   ```
**注意**  
要将当前安装的 AWS CLI 版本 2 更新到更新版本，请添加现有的符号链接和安装程序信息，以构造带 `--update` 参数的 `install` 命令。  

   ```
   $ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
   ```
要查找现有的符号链接和安装目录，请执行以下步骤：  
使用 `which` 命令查找符号链接。这为您提供了与 `--bin-dir` 参数一起使用的路径。  

      ```
      $ which aws
      /usr/local/bin/aws
      ```
使用 `ls` 命令查找符号链接指向的目录。这为您提供了与 `--install-dir` 参数一起使用的路径。  

      ```
      $ ls -l /usr/local/bin/aws
      lrwxrwxrwx 1 ec2-user ec2-user 49 Oct 22 09:49 /usr/local/bin/aws -> /usr/local/aws-cli/v2/current/bin/aws
      ```

1. 通过以下命令确认此安装。

   ```
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Linux/5.10.205-195.807.amzn2.x86_64
   ```

   如果无法找到 `aws` 命令，您可能需要重新启动终端或按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

## macOS
<a name="versioned-macos"></a>

### 安装要求
<a name="versioned-macos-reqs"></a>
+ 您了解需要安装 AWS CLI 版本 2 的哪个发行版。有关版本列表，请参阅 [GitHub](https://github.com/aws/aws-cli/blob/v2/CHANGELOG.rst?plain=1) 上的 *AWS CLI 版本 2 更改日志*。
+ 我们在 Apple 支持的 64 位 macOS 版本上支持 AWS CLI 版本 2。
+ 由于 AWS 不维护第三方存储库，因此我们不能保证它们包含最新版本的 AWS CLI。

### 安装说明
<a name="versioned-macos-install"></a>

您可以通过以下方式在 macOS 上安装 AWS CLI 版本 2。

------
#### [ GUI installer ]

以下步骤演示如何使用标准 macOS 用户界面和浏览器安装或更新到 AWS CLI 版本 2 的最新版本。如果要更新到最新版本，请使用与当前版本所用的相同安装方法。

1. 在浏览器中，通过在文件名后附加一个连字符和版本号来下载特定版本的 AWS CLI。

   ```
   https://awscli.amazonaws.com/AWSCLIV2-version.number.pkg
   ```

   在本示例中，版本 *2.0.30* 的文件名为 `AWSCLIV2-2.0.30.pkg`，这会生成以下链接：[https://awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg](https://awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg)。

1. 运行下载的文件，然后按照屏幕上的说明进行操作。您可以选择通过以下方式安装 AWS CLI 版本 2：
   + **针对电脑上的所有用户（需要 `sudo`）**
     + 您可以安装到任何文件夹，或选择推荐的默认文件夹 `/usr/local/aws-cli`。
     + 安装程序会自动在 `/usr/local/bin/aws` 中创建一个符号链接，该链接指向您选择的安装文件夹中的主程序。
   + **仅针对当前用户（不需要 `sudo`）**
     + 您可以安装到具有写入权限的任何文件夹。
     + 由于具有标准用户权限，在安装程序完成后，您必须在命令提示符下使用以下命令在 `$PATH` 中手动创建指向 `aws` 和 `aws_completer` 程序的符号链接文件。如果 `$PATH` 包含您可以写入的文件夹，并且您将该文件夹指定为目标路径，则可以在不使用 `sudo` 的情况下运行以下命令。如果 `$PATH` 中没有可写入的文件夹，您必须在命令中使用 `sudo`，以获取写入指定目标文件夹的权限。符号链接的默认位置为 `/usr/local/bin/`。

       ```
       $ sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws
       $ sudo ln -s /folder/installed/aws-cli/aws_completer /usr/local/bin/aws_completer
       ```
**注意**  
您可以在安装过程中的任意时刻按 **Cmd\$1L** 来查看安装的调试日志。这会打开一个日志窗格，让您能够筛选和保存日志。日志文件还会自动保存到 `/var/log/install.log`。

1. 要验证 Shell 是否可以在 `$PATH` 中找到并运行 `aws` 命令，请使用以下命令。

   ```
   $ which aws
   /usr/local/bin/aws 
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Darwin/23.3.0
   ```

   如果无法找到 `aws` 命令，您可能需要重新启动终端或按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

------
#### [ Command line installer - All users ]

如果您拥有 `sudo` 权限，则可以针对电脑上的所有用户安装 AWS CLI 版本 2。我们在一个易于复制和粘贴的组中提供步骤。请参阅以下步骤中每一行的描述。

对于特定版本的 AWS CLI，在文件名后附加一个连字符和版本号。在本示例中，版本 *2.0.30* 的文件名为 `AWSCLIV2-2.0.30.pkg`，这会生成以下命令：

```
$ curl "https://awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
```

1. 使用 `curl` 命令下载文件。`-o` 选项指定下载的程序包应写入的文件名。在此示例中，文件写入当前文件夹中的 `AWSCLIV2.pkg`。

   对于特定版本的 AWS CLI，在文件名后附加一个连字符和版本号。在本示例中，版本 *2.0.30* 的文件名为 `AWSCLIV2-2.0.30.pkg`，这会生成以下命令：

   ```
   $ curl "https://awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg" -o "AWSCLIV2.pkg"
   ```

    有关版本列表，请参阅 [GitHub](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) 上的 *AWS CLI 版本 2 更改日志*。

1. 运行标准 macOS `installer` 程序，同时将下载的 `.pkg` 文件指定为源。使用 `-pkg` 参数指定要安装的程序包的名称以及要将程序包安装到的驱动器的 `-target /` 参数。系统会将文件安装到 `/usr/local/aws-cli`，并自动在 `/usr/local/bin` 中创建符号链接。您必须在命令中使用 `sudo` 来授予对这些文件夹的写入权限。

   ```
   $ sudo installer -pkg ./AWSCLIV2.pkg -target /
   ```

   安装完成后，调试日志将写入到 `/var/log/install.log`。

1. 要验证 Shell 是否可以在 `$PATH` 中找到并运行 `aws` 命令，请使用以下命令。

   ```
   $ which aws
   /usr/local/bin/aws 
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Darwin/23.3.0
   ```

   如果无法找到 `aws` 命令，您可能需要重新启动终端或按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

------
#### [ Command line - Current user ]

1. 要指定将 AWS CLI 安装到哪个文件夹，必须创建 XML 文件。此文件是 XML 格式的文件，类似于以下示例。保持所显示的所有值不变，但必须将第 9 行中的 */Users/myusername* 路径替换为您要在其中安装 AWS CLI 版本 2 的文件夹的路径。*必须存在该文件夹，否则命令会失败。*此 XML 示例指示安装程序在文件夹 AWS CLI 中安装 `/Users/myusername`，并创建名为 `aws-cli` 的文件夹。

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
     <array>
       <dict>
         <key>choiceAttribute</key>
         <string>customLocation</string>
         <key>attributeSetting</key>
         <string>/Users/myusername</string>
         <key>choiceIdentifier</key>
         <string>default</string>
       </dict>
     </array>
   </plist>
   ```

1. 使用 `pkg` 命令下载 `curl` 安装程序。`-o` 选项指定下载的程序包应写入的文件名。在此示例中，文件写入当前文件夹中的 `AWSCLIV2.pkg`。

   对于特定版本的 AWS CLI，在文件名后附加一个连字符和版本号。在本示例中，版本 *2.0.30* 的文件名为 `AWSCLIV2-2.0.30.pkg`，这会生成以下命令：

   ```
   $ curl "https://awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg" -o "AWSCLIV2.pkg"
   ```

    有关版本列表，请参阅 [GitHub](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) 上的 *AWS CLI 版本 2 更改日志*。

1. 使用以下选项运行标准 macOS `installer` 程序：
   + 使用 `-pkg` 参数指定要安装的程序包的名称。
   + 通过将 `-target` 参数设置为 `CurrentUserHomeDirectory`，指定*仅安装到当前用户*。
   + 在 `-applyChoiceChangesXML` 参数中指定您创建的 XML 文件的路径（相对于当前文件夹）和名称。

   以下示例在文件夹 AWS CLI 中安装 `/Users/myusername/aws-cli`。

   ```
   $ installer -pkg AWSCLIV2.pkg \
               -target CurrentUserHomeDirectory \
               -applyChoiceChangesXML choices.xml
   ```

1. 由于标准用户权限通常不允许写入 `$PATH` 中的文件夹，因此在此模式下，安装程序不会尝试将符号链接添加到 `aws` 和 `aws_completer` 程序中。要使 AWS CLI 正确运行，必须在安装程序完成后手动创建符号链接。如果 `$PATH` 包含您可以写入的文件夹，并且您将该文件夹指定为目标的路径，则可以在不使用 `sudo` 的情况下运行以下命令。如果 `$PATH` 中没有可写入的文件夹，您必须使用 `sudo`，以获取写入指定目标文件夹的权限。符号链接的默认位置为 `/usr/local/bin/`。

   ```
   $ sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws
   $ sudo ln -s /folder/installed/aws-cli/aws_completer /usr/local/bin/aws_completer
   ```

   安装完成后，调试日志将写入到 `/var/log/install.log`。

1. 要验证 Shell 是否可以在 `$PATH` 中找到并运行 `aws` 命令，请使用以下命令。

   ```
   $ which aws
   /usr/local/bin/aws 
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Darwin/23.3.0
   ```

   如果无法找到 `aws` 命令，您可能需要重新启动终端或按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

------

## Windows
<a name="versioned-windows"></a>

### 安装要求
<a name="versioned-windows-reqs"></a>
+ 您了解需要安装 AWS CLI 版本 2 的哪个发行版。有关版本列表，请参阅 [GitHub](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) 上的 *AWS CLI 版本 2 更改日志*。
+ 我们在 Microsoft 支持的 64 位 Windows 版本上支持 AWS CLI。
+ 安装软件的管理员权限

### 安装说明
<a name="versioned-windows-install"></a>

要在 Windows 上更新当前安装的 AWS CLI 版本 2，请在每次更新以覆盖以前版本时下载一个新的安装程序。AWS CLI 会定期更新。要查看最新版本的发布时间，请参阅 *GitHub* 上的 [AWS CLI 版本 2 更改日志](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst)。

1. 通过下列方式之一下载并运行适用于 Windows（64 位）的 AWS CLI MSI 安装程序：
   + **下载并运行 MSI 安装程序：**要为特定版本的 AWS CLI 创建下载链接，请在文件名后附加一个连字符和版本号。

     ```
     https://awscli.amazonaws.com/AWSCLIV2-version.number.msi
     ```

     在本示例中，版本 *2.0.30* 的文件名为 `AWSCLIV2-2.0.30.msi`，这会生成以下链接：[https://awscli.amazonaws.com/AWSCLIV2-2.0.30.msi](https://awscli.amazonaws.com/AWSCLIV2-2.0.30.msi)。
   + **使用 msiexec 命令：**您也可以通过将链接添加到 `msiexec` 命令来使用 MSI 安装程序。对于特定版本的 AWS CLI，在文件名后附加一个连字符和版本号。

     ```
     C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2-version.number.msi
     ```

     在本示例中，版本 *2.0.30* 的文件名为 `AWSCLIV2-2.0.30.msi`，这会生成以下链接：[https://awscli.amazonaws.com/AWSCLIV2-2.0.30.msi](https://awscli.amazonaws.com/AWSCLIV2-2.0.30.msi)。

     ```
     C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2-2.0.30.msi
     ```

     有关可与 `msiexec` 一起使用的各种参数，请参阅 *Microsoft Docs* 网站上的 [msiexec](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/msiexec)。

   有关版本列表，请参阅 [GitHub](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) 上的 *AWS CLI 版本 2 更改日志*。

1. 要确认安装，请打开 **Start**（开始）菜单，搜索 `cmd` 以打开命令提示符窗口，然后在命令提示符处使用 `aws --version` 命令。

   ```
   C:\> aws --version
   aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
   ```

   如果 Windows 无法找到该程序，您可能需要关闭并重新打开命令提示符窗口以刷新该路径，按照[排查 AWS CLI 错误](cli-chap-troubleshooting.md)中的说明排除故障。

## AWS CLI 安装和卸载错误故障排除
<a name="getting-started-version-tshoot"></a>

如果您在安装或卸载 AWS CLI 后遇到问题，请参阅[排查 AWS CLI 错误](cli-chap-troubleshooting.md)以了解故障排除步骤。有关相关性最高的故障排除步骤，请参阅[找不到命令错误](cli-chap-troubleshooting.md#tshoot-install-not-found)、[“`aws --version`”命令返回的版本与您安装的版本不同](cli-chap-troubleshooting.md#tshoot-install-wrong-version)和[卸载 AWS CLI 后，“`aws --version`”命令返回一个版本](cli-chap-troubleshooting.md#tshoot-uninstall-1)。

## 后续步骤
<a name="getting-started-version-next"></a>

完成[使用 AWS CLI 版本 2 的先决条件](getting-started-prereqs.md)中的步骤并安装 AWS CLI 之后，您应执行[设置 AWS CLI](getting-started-quickstart.md)。

# 从源代码构建和安装 AWS CLI
<a name="getting-started-source-install"></a>

本主题介绍如何在受支持的操作系统上从源代码安装或更新到最新版本的 AWS Command Line Interface（AWS CLI）。

有关 AWS CLI 最新版本的信息，请参阅 GitHub 上的 [AWS CLI 版本 2 更改日志](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst)。

**重要**  
AWS CLI 版本 1 和 2 使用相同的 `aws` 命令名称。如果您之前安装了 AWS CLI 版本 1，请参阅[AWS CLI 版本 2 的迁移指南](cliv2-migration.md)。

**Topics**
+ [为什么要从源代码构建？](#source-getting-started-install-why)
+ [快速步骤](#source-getting-started-install-quicksteps)
+ [步骤 1：设置所有要求](#source-getting-started-install-reqs)
+ [步骤 2：配置 AWS CLI 源代码安装](#source-getting-started-install-config)
+ [步骤 3：构建 AWS CLI](#source-getting-started-install-build)
+ [步骤 4：安装 AWS CLI](#source-getting-started-install-instructions)
+ [步骤 5：验证 AWS CLI 安装](#source-getting-started-install-verify)
+ [工作流程示例](#source-getting-started-install-workflows)
+ [AWS CLI 安装和卸载错误故障排除](#source-install-tshoot)
+ [后续步骤](#source-install-next-steps)

## 为什么要从源代码构建？
<a name="source-getting-started-install-why"></a>

AWS CLI 可用作大多数平台和环境以及 Docker 映像的[预构建安装程序](getting-started-install.md)。

通常，这些安装程序涵盖了大多数使用案例。从源代码安装的说明旨在帮助解决我们的安装程序未涵盖的使用案例。部分使用案例包括：
+ 预构建的安装程序不支持您的环境。例如，预构建的安装程序不支持 ARM 32 位。
+ 预构建的安装程序具有您的环境所缺少的依赖项。例如，Alpine Linux 使用 [https://musl.libc.org/](https://musl.libc.org/)，但当前安装程序需要 `glibc`，而导致预构建的安装程序无法立即运行。
+ 预构建的安装程序需要您的环境限制访问的资源。例如，安全强化型系统可能不会授予对共享内存的权限。这是冻结的 `aws` 安装程序所需要的。
+ 因为最好能够完全控制代码和软件包的构建过程，而预构建的安装程序通常会成为软件包管理器中维护者的阻碍。从源代码构建使发行版维护者可以通过更简化的流程来保持 AWS CLI 处于更新状态。当从第三方软件包管理器（如 `brew`、`yum` 和 `apt`）安装时，启用维护者可为客户提供更新版本的 AWS CLI。
+ 修补 AWS CLI 功能的客户需要从源代码构建和安装 AWS CLI。这对于想要在向 AWS CLI GitHub 存储库提供更改之前测试对源代码所做更改的社区成员来说尤为重要。

## 快速步骤
<a name="source-getting-started-install-quicksteps"></a>

**注意**  
假设所有代码示例都从源代码目录的根目录运行。

要从源代码构建和安装 AWS CLI，请按本节中的步骤操作。AWS CLI 利用 [GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html) 从源代码进行安装。在最简单的情况下，可以通过从 AWS CLI GitHub 存储库的根目录运行默认示例命令，以从源代码安装 AWS CLI。



1. [设置您的环境的所有要求。](#source-getting-started-install-reqs)这包括能够运行 [GNU Auttols](https://www.gnu.org/software/automake/faq/autotools-faq.html) 生成的文件以及安装 Python 3.8 或更高版本。

1. 在终端中，导航到 AWS CLI 源代码文件夹的顶层并运行 `./configure` 命令。此命令会检查系统是否具有所有必需的依赖项，并生成 `Makefile` 以根据检测到的和指定的配置来构建和安装 AWS CLI。

------
#### [ Linux and macOS ]

   以下 `./configure` 命令示例使用默认设置为 AWS CLI 设置构建配置。

   ```
   $ ./configure
   ```

------
#### [ Windows PowerShell ]

   在运行任何调用 MSYS2 的命令之前，必须保留当前工作目录：

   ```
   PS C:\> $env:CHERE_INVOKING = 'yes'
   ```

   然后，使用以下 `./configure` 命令示例设置构建配置，以便 AWS CLI 使用 Python 可执行文件的本地路径、安装到 C:\$1Program Files\$1AWSCLI 并下载所有依赖项。

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps "
   ```

------

   有关详细信息、可用配置选项和默认设置信息，请参阅 [步骤 2：配置 AWS CLI 源代码安装](#source-getting-started-install-config) 部分。

1. 运行 `make` 命令。此命令根据您的配置设置构建 AWS CLI。

   以下 `make` 命令示例使用您的现有 `./configure` 设置通过默认选项进行构建。

------
#### [ Linux and macOS ]

   ```
   $ make
   ```

------
#### [ Windows PowerShell ]

   ```
   PS C:\> C:\msys64\usr\bin\bash -lc "make" 
   ```

------

   有关详细信息和可用的构建选项，请参阅 [步骤 3：构建 AWS CLI](#source-getting-started-install-build) 部分。

1. 运行 `make install` 命令。此命令将您构建的 AWS CLI 安装到系统上所配置的位置。

   以下 `make install` 命令示例使用默认命令设置，在所配置的位置安装您构建的 AWS CLI 并创建符号链接。

------
#### [ Linux and macOS ]

   ```
   $ make install
   ```

------
#### [ Windows PowerShell ]

   ```
   PS C:\> C:\msys64\usr\bin\bash -lc "make install" 
   ```

   安装后，使用以下方法将路径添加到 AWS CLI：

   ```
   PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
   ```

------

   有关详细信息和可用的安装选项，请参阅 [步骤 4：安装 AWS CLI](#source-getting-started-install-instructions) 部分。

1. 使用以下命令确认成功安装了 AWS CLI：

   ```
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
   ```

   有关安装错误的故障排除步骤，请参阅 [AWS CLI 安装和卸载错误故障排除](#source-install-tshoot) 部分。

## 步骤 1：设置所有要求
<a name="source-getting-started-install-reqs"></a>

要从源代码构建 AWS CLI，您需要事先完成以下步骤：

**注意**  
假设所有代码示例都从源代码目录的根目录运行。

1. 通过分流 AWS CLI GitHub 存储库或下载源代码压缩包来下载 AWS CLI 源代码。有关说明，请参阅以下内容之一：
   + 从 *GitHub* 分流和克隆 [AWS CLI 存储库](https://github.com/aws/aws-cli)。有关更多信息，请参阅《GitHub 文档》**中的[分流存储库](https://docs.github.com/en/get-started/quickstart/fork-a-repo)。
   + 使用以下命令在 [https://awscli.amazonaws.com/awscli.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz) 中下载最新的 tarball 源代码并提取内容：

     ```
     $ curl "https://awscli.amazonaws.com/awscli.tar.gz" -o "awscli.tar.gz"
     $ tar -xzf awscli.tar.gz
     ```
**注意**  
要下载特定版本，请使用以下链接格式：[https://awscli.amazonaws.com/awscli-*versionnumber*.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)   
例如，对于版本 2.10.0，链接如下：[https://awscli.amazonaws.com/awscli-*2.10.0*.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)  
源版本从 AWS CLI 的 **2.10.0** 版本开始可用。

     **（可选）通过完成以下步骤，验证下载的 zip 文件的完整性：**

     1. 您可以通过以下步骤使用 `GnuPG` 工具验证签名。

        AWS CLI 安装程序包 `.zip` 文件是使用 PGP 签名进行加密签名的。如果文件有任何损坏或更改，则此验证失败，您不应继续安装。

     1. 使用您的程序包管理器下载并安装 `gpg` 命令。有关 `GnuPG` 的更多信息，请参阅 [GnuPG 网站](https://www.gnupg.org/)。

     1. 要创建公有密钥文件，请创建一个文本文件并粘贴到以下文本中。

        ```
        -----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
        tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
        CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
        aGveYQUJDMpiLAAKCRCmMQrMRnJHXKBYD/9Ab0qQdGiO5hObchG8xh8Rpb4Mjyf6
        0JrVo6m8GNjNj6BHkSc8fuTQJ/FaEhaQxj3pjZ3GXPrXjIIVChmICLlFuRXYzrXc
        Pw0lniybypsZEVai5kO0tCNBCCFuMN9RsmmRG8mf7lC4FSTbUDmxG/QlYK+0IV/l
        uJkzxWa+rySkdpm0JdqumjegNRgObdXHAQDWlubWQHWyZyIQ2B4U7AxqSpcdJp6I
        S4Zds4wVLd1WE5pquYQ8vS2cNlDm4QNg8wTj58e3lKN47hXHMIb6CHxRnb947oJa
        pg189LLPR5koh+EorNkA1wu5mAJtJvy5YMsppy2y/kIjp3lyY6AmPT1posgGk70Z
        CmToEZ5rbd7ARExtlh76A0cabMDFlEHDIK8RNUOSRr7L64+KxOUegKBfQHb9dADY
        qqiKqpCbKgvtWlds909Ms74JBgr2KwZCSY1HaOxnIr4CY43QRqAq5YHOay/mU+6w
        hhmdF18vpyK0vfkvvGresWtSXbag7Hkt3XjaEw76BzxQH21EBDqU8WJVjHgU6ru+
        DJTs+SxgJbaT3hb/vyjlw0lK+hFfhWKRwgOXH8vqducF95NRSUxtS4fpqxWVaw3Q
        V2OWSjbne99A5EPEySzryFTKbMGwaTlAwMCwYevt4YT6eb7NmFhTx0Fis4TalUs+
        j+c7Kg92pDx2uQ==
        =OBAt
        -----END PGP PUBLIC KEY BLOCK-----
        ```

        以下是公有密钥的详细信息以供参考。

        ```
        Key ID:           A6310ACC4672
        Type:             RSA
        Size:             4096/4096
        Created:          2019-09-18
        Expires:          2026-07-07
        User ID:          AWS CLI Team <aws-cli@amazon.com>
        Key fingerprint:  FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
        ```

     1. 使用以下命令导入 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
        ```

     1. 通过 [https://awscli.amazonaws.com/awscli.tar.gz.sig](https://awscli.amazonaws.com/awscli.tar.gz.sig) 下载您已下载的软件包的 AWS CLI 签名文件。它具有与其对应的压缩包文件相同的路径和名称，但扩展名为 `.sig`。将其保存在与压缩包文件相同的路径中。或者使用以下命令块：

        ```
        $ curl awscliv2.sig https://awscli.amazonaws.com/ -o awscli.tar.gz.sig
        ```

     1. 验证签名，并将下载的 `.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](https://wikipedia.org/wiki/Web_of_trust)。

1. 您的环境可以运行 [GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html) 生成的文件，如 `configure` 和 `Makefile`。这些文件可跨 POSIX 平台广泛移植。

------
#### [ Linux and macOS ]

   如果您的环境中尚未安装 Autotools 或者您需要对其进行更新，请按照《GNU 文档》中**的[如何安装 Autotools（以用户身份）？](https://www.gnu.org/software/automake/faq/autotools-faq.html#How-do-I-install-the-Autotools-_0028as-user_0029_003f)或[基本安装](https://www.gnu.org/savannah-checkouts/gnu/automake/manual/automake.html#Basic-Installation)中的安装说明进行操作。

------
#### [ Windows PowerShell ]

**警告**  
我们建议，如果您在 Windows 环境中，请使用预构建的安装程序。有关预构建的安装程序的安装说明，请参阅 [安装或更新最新版本的 AWS CLI](getting-started-install.md)

   由于 Windows 没有与 POSIX 兼容的 Shell，因此需要安装其他软件才能从源代码安装 AWS CLI。[MSYS2](https://www.msys2.org/) 提供了一系列工具和库来帮助构建和安装 Windows 软件，特别是对于 Autotools 使用的基于 POSIX 的脚本。

   1. 安装 MSYS2。有关安装和使用 MSYS2 的信息，请参阅《MSYS2 文档》**中的[安装和使用说明](https://www.msys2.org/)。

   1. 打开 MSYS2 终端并使用以下命令安装自动工具。

      ```
      $ pacman -S autotools
      ```

**注意**  
使用本指南中适用于 Windows 的配置、构建和安装代码示例时，假定默认的 MSYS2 安装路径为 `C:\msys64\usr\bin\bash`。在 PowerShell 中调用 MSYS2 时，您将使用以下格式，且 bash 命令加上引号：  

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc "command example" 
   ```
以下命令示例调用 `./configure` 命令。  

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc "./configure" 
   ```

------

1. 安装了 Python 3.8 或更高版本的解释器。所需的最低 Python 版本遵循与 [AWS SDK 和工具的官方 Python 支持策略](https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/)相同的时间表。解释器在其支持结束日期后 6 个月才获得支持。

1. **（可选）**安装 AWS CLI 的所有构建和运行时 Python 库依赖项。`./configure` 命令会通知您是否缺少任何依赖项以及如何安装它们。

   您可以通过配置自动安装和使用这些依赖项。有关更多信息，请参阅 [下载依赖项](#source-getting-started-install-config-dependencies)。

## 步骤 2：配置 AWS CLI 源代码安装
<a name="source-getting-started-install-config"></a>

构建和安装 AWS CLI 的配置是使用 `configure` 脚本指定的。要获取所有配置选项的文档，请使用 `--help` 选项运行 `configure` 脚本：

------
#### [ Linux and macOS ]

```
$ ./configure --help
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --help" 
```

------

**Topics**
+ [安装位置](#source-getting-started-install-config-location)
+ [Python 解释器](#source-getting-started-install-config-interpreter)
+ [下载依赖项](#source-getting-started-install-config-dependencies)
+ [安装类型](#source-getting-started-install-config-type)

### 安装位置
<a name="source-getting-started-install-config-location"></a>

AWS CLI 的源代码安装使用两个可配置的目录来安装 AWS CLI：
+ `libdir` - 将在其中安装 AWS CLI 的父目录。AWS CLI 安装的路径是 `<libdir-value>/aws-cli`。Linux 和 macOS 的默认 `libdir` 值是 `/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 CLI `aws` 和 `aws_completer` 可执行文件的 `bindir`。默认值为 `<prefix-value>/bin`。如果未指定 `bindir` 和 `--prefix`，则 Linux 和 macOS 的默认设置为 `/usr/local/bin/`。

------
#### [ Linux and macOS ]

以下命令示例使用 `--prefix` 选项执行 AWS CLI 的本地用户安装。此命令将 AWS CLI 安装在 `$HOME/.local/lib/aws-cli` 中，并将可执行文件安装在 `$HOME/.local/bin` 中：

```
$ ./configure --prefix=$HOME/.local
```

以下命令示例使用 `--libdir` 选项将 AWS CLI 作为附加应用程序安装在 `/opt` 目录中。此命令将 AWS CLI 安装在 `/opt/aws-cli` 中，并将可执行文件安装在其默认位置 `/usr/local/bin` 中。

```
$ ./configure --libdir=/opt
```

------
#### [ Windows PowerShell ]

以下命令示例使用 `--prefix` 选项执行 AWS CLI 的本地用户安装。此命令将 AWS CLI 安装在 `$HOME/.local/lib/aws-cli` 中，并将可执行文件安装在 `$HOME/.local/bin` 中：

```
$ C:\msys64\usr\bin\bash -lc "./configure --prefix='C:\Program Files\AWSCLI'" 
```

以下命令示例使用 `--libdir` 选项将 AWS CLI 作为附加应用程序安装在 `/opt` 目录中。此命令将 AWS CLI 安装在 `C:\Program Files\AWSCLI\opt\aws-cli` 中。

------

### Python 解释器
<a name="source-getting-started-install-config-interpreter"></a>

**注意**  
强烈建议在针对 Windows 进行安装时指定 Python 解释器。

`./configure` 脚本会自动选择已安装的 Python 3.8 或更高版本的解释器，用于通过 [https://www.gnu.org/software/automake/manual/html_node/Python.html](https://www.gnu.org/software/automake/manual/html_node/Python.html) Autoconf 宏来构建和运行 AWS CLI。

运行 `configure` 脚本时，可以使用 `PYTHON` 环境变量显式设置要使用的 Python 解释器：

------
#### [ Linux and macOS ]

```
$ PYTHON=/path/to/python ./configure
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "PYTHON='C:\path\to\python' ./configure"
```

------

### 下载依赖项
<a name="source-getting-started-install-config-dependencies"></a>

默认情况下，要求 AWS CLI 的所有构建和运行时依赖项都已安装在系统上。这包括任何 Python 库依赖项。运行 `configure` 脚本时会检查所有依赖项，如果系统缺少任何 Python 依赖项，则 `configure` 脚本会出错。

当您的系统缺少依赖项时，以下代码示例会出错：

------
#### [ Linux and macOS ]

```
$ ./configure 
checking for a Python interpreter with version >= 3.8... python
checking for python... /Users/username/.envs/env3.11/bin/python
checking for python version... 3.11
checking for python platform... darwin
checking for GNU default python prefix... ${prefix}
checking for GNU default python exec_prefix... ${exec_prefix}
checking for python script directory (pythondir)... ${PYTHON_PREFIX}/lib/python3.11/site-packages
checking for python extension module directory (pyexecdir)... ${PYTHON_EXEC_PREFIX}/lib/python3.11/site-packages
checking for --with-install-type... system-sandbox
checking for --with-download-deps... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 125, in <module>
    main()
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 121, in main
    parsed_args.func(parsed_args)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 49, in validate
    validate_env(parsed_args.artifact)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/validate_env.py", line 68, in validate_env
    raise UnmetDependenciesException(unmet_deps, in_venv)
validate_env.UnmetDependenciesException: Environment requires following Python dependencies:

awscrt (required: ('>=0.12.4', '<0.17.0')) (version installed: None)

We recommend using --with-download-deps flag to automatically create a virtualenv and download the dependencies.

If you want to manage the dependencies yourself instead, run the following pip command:
/Users/username/.envs/env3.11/bin/python -m pip install --prefer-binary 'awscrt>=0.12.4,<0.17.0'

configure: error: "Python dependencies not met."
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure" 
checking for a Python interpreter with version >= 3.8... python
checking for python... /Users/username/.envs/env3.11/bin/python
checking for python version... 3.11
checking for python platform... darwin
checking for GNU default python prefix... ${prefix}
checking for GNU default python exec_prefix... ${exec_prefix}
checking for python script directory (pythondir)... ${PYTHON_PREFIX}/lib/python3.11/site-packages
checking for python extension module directory (pyexecdir)... ${PYTHON_EXEC_PREFIX}/lib/python3.11/site-packages
checking for --with-install-type... system-sandbox
checking for --with-download-deps... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 125, in <module>
    main()
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 121, in main
    parsed_args.func(parsed_args)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 49, in validate
    validate_env(parsed_args.artifact)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/validate_env.py", line 68, in validate_env
    raise UnmetDependenciesException(unmet_deps, in_venv)
validate_env.UnmetDependenciesException: Environment requires following Python dependencies:

awscrt (required: ('>=0.12.4', '<0.17.0')) (version installed: None)

We recommend using --with-download-deps flag to automatically create a virtualenv and download the dependencies.

If you want to manage the dependencies yourself instead, run the following pip command:
/Users/username/.envs/env3.11/bin/python -m pip install --prefer-binary 'awscrt>=0.12.4,<0.17.0'

configure: error: "Python dependencies not met."
```

------

要自动安装所需的 Python 依赖项，请使用 `--with-download-deps` 选项。使用此标志时，构建过程会执行以下操作：
+ 跳过 Python 库依赖项检查。
+ 将设置配置为下载所有必需的 Python 依赖项，并在 `make` 构建期间**仅**使用下载的依赖项构建 AWS CLI。

以下配置命令示例使用 `--with-download-deps` 选项下载和使用 Python 依赖项：

------
#### [ Linux and macOS ]

```
$ ./configure --with-download-deps
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --with-download-deps"
```

------

### 安装类型
<a name="source-getting-started-install-config-type"></a>

源代码安装过程支持以下安装类型：
+ `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` 的值：

------
#### [ Linux and macOS ]

```
$ ./configure --with-install-type=portable-exe
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --with-install-type=portable-exe"
```

------

## 步骤 3：构建 AWS CLI
<a name="source-getting-started-install-build"></a>

使用 `make` 命令通过您的配置设置构建 AWS CLI：

------
#### [ Linux and macOS ]

```
$ make
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "make"
```

------

**注意**  
使用 Python [https://docs.python.org/3/library/venv.html](https://docs.python.org/3/library/venv.html) 模块在构建目录中创建虚拟环境。虚拟环境是使用 [Python 标准库中提供的 pip 版本](https://docs.python.org/3/library/ensurepip.html)引导的。
复制 Python 库依赖项。根据是否在 `configure` 命令中指定了 `--with-download-deps` 标志，此步骤将执行以下操作之一：  
指定了 `--with-download-deps`****。Python 依赖项是 pip 安装的。这包括 `wheel`、`setuptools` 和所有 AWS CLI 运行时依赖项。如果您正在构建 `portable-exe`，则安装 `pyinstaller`。这些要求都是在通过 [https://github.com/jazzband/pip-tools](https://github.com/jazzband/pip-tools) 生成的锁定文件中指定的。
**未**指定 `--with-download-deps`。来自 Python 解释器的站点包中的 Python 库以及任何脚本（例如 `pyinstaller`）都被复制到用于构建的虚拟环境中。
直接在 AWS CLI 代码库上运行 `pip install`，以进行离线的树内构建，然后将 AWS CLI 安装到构建虚拟环境中。此安装使用 pip 标志 [--no-build-isolation](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-build-isolation)、[--use-feature=in-tree-build](https://pip.pypa.io/en/stable/cli/pip_install/#local-project-installs)、[--no-cache-dir](https://pip.pypa.io/en/stable/cli/pip_install/#caching) 和 [https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index)。
**（可选）**如果在 `configure` 命令中将 `--install-type` 设置为 `portable-exe`，则使用 [https://www.pyinstaller.org/](https://www.pyinstaller.org/) 生成独立的可执行文件。

## 步骤 4：安装 AWS CLI
<a name="source-getting-started-install-instructions"></a>

`make install` 命令将您构建的 AWS CLI 安装到系统上所配置的位置。

------
#### [ Linux and macOS ]

以下命令示例使用您的配置和构建设置安装 AWS CLI：

```
$ make install
```

------
#### [ Windows PowerShell ]

以下命令示例使用您的配置和构建设置安装 AWS CLI，然后添加一个包含 AWS CLI 的路径的环境变量：

```
PS C:\> C:\msys64\usr\bin\bash -lc " make install "
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
```

------

`make install` 规则支持 [https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR](https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR) 变量。指定后，此变量会在安装 AWS CLI 时将指定的路径作为已配置的安装路径的前缀。默认情况下，未为该变量设置任何值。

------
#### [ Linux and macOS ]

以下代码示例使用 `--prefix=/usr/local` 标志来配置安装位置，然后对 `make install` 命令使用 `DESTDIR=/tmp/stage` 来更改该目的地。这些命令会导致 AWS CLI 安装在 `/tmp/stage/usr/local/lib/aws-cli` 中，而其可执行文件位于 `/tmp/stage/usr/local/bin` 中。

```
$ ./configure --prefix=/usr/local
$ make
$ make DESTDIR=/tmp/stage install
```

------
#### [ Windows PowerShell ]

以下代码示例使用 `--prefix=\awscli` 标志来配置安装位置，然后对 `make install` 命令使用 `DESTDIR=C:\Program Files` 来更改该目的地。这些命令会导致 AWS CLI 安装在 `C:\Program Files\awscli` 中。

```
$ ./configure --prefix=\awscli
$ make
$ make DESTDIR='C:\Program Files' install
```

------

**注意**  
将以下内容之一移至配置的安装目录：  
如果安装类型为 `system-sandbox`，则移动您构建的虚拟环境。
如果安装类型为 `portable-exe`，则移动已构建的独立可执行文件。
在配置的 bin 目录中为 `aws` 和 `aws_completer` 可执行文件创建符号链接。

## 步骤 5：验证 AWS CLI 安装
<a name="source-getting-started-install-verify"></a>

使用以下命令确认成功安装了 AWS CLI：

```
$ aws --version
aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
```

如果无法识别 `aws` 命令，您可能需要重启终端以更新新的符号链接。如果您在安装或卸载 AWS CLI 后遇到其他问题，请参阅 [排查 AWS CLI 错误](cli-chap-troubleshooting.md) 以了解常用故障排除步骤

## 工作流程示例
<a name="source-getting-started-install-workflows"></a>

本节提供了一些从源代码安装的基本工作流示例。

### 基本 Linux 和 macOS 安装
<a name="source-getting-started-install-workflows-basic"></a>

以下示例是一个基本的安装工作流，其中 AWS CLI 安装在默认的 `/usr/local/lib/aws-cli` 位置。

```
$ cd path/to/cli/respository/
$ ./configure
$ make
$ make install
```

### 自动 Windows 安装
<a name="source-getting-started-install-workflows-win"></a>

**注意**  
您必须以管理员身份运行 PowerShell 才能使用此工作流。

MSYS2 可以在 CI 设置中自动使用，请参阅《MSYS2 文档》**中的[在 CI 中使用 MSYS2](https://www.msys2.org/docs/ci/)。

------
#### [ Downloaded Tarball ]

下载 `awscli.tar.gz` 文件，解压缩，然后安装 AWS CLI。使用以下命令时，请替换以下路径：
+ `C:\msys64\usr\bin\bash`（包括 MSYS2 路径的位置）。
+ `.\awscli-2.x.x\`（包括解压缩的 `awscli.tar.gz` 文件夹名称）。
+ `PYTHON='C:\path\to\python.exe'`（包括本地 Python 路径）。

以下代码示例使用 MSYS2 自动从 PowerShell 构建和安装 AWS CLI，并指定要使用哪个 Python 本地安装：

```
PS C:\> curl "https://awscli.amazonaws.com/awscli.tar.gz" -o "awscliv2.zip"  #  Download the awscli.tar.gz file in the current working directory
PS C:\> tar -xvzf .\awscli.tar.gz #  Extract awscli.tar.gz file
PS C:\> cd .\awscli-2.x.x\ #  Navigate to the root of the extracted files
PS C:\> $env:CHERE_INVOKING = 'yes' #  Preserve the current working directory
PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps " 
PS C:\> C:\msys64\usr\bin\bash  -lc "make"
PS C:\> C:\msys64\usr\bin\bash  -lc "make install"
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
PS C:\> aws --version
aws-cli/2.27.41 Python/3.11.6 Windows/10 source-sandbox/AMD64
```

------
#### [ GitHub Repository ]

下载 `awscli.tar.gz` 文件，解压缩，然后安装 AWS CLI。使用以下命令时，请替换以下路径：
+ `C:\msys64\usr\bin\bash`（包括 MSYS2 路径的位置）。
+ `C:path\to\cli\repository\`（包括指向 *GitHub* 中克隆的 [AWS CLI 存储库](https://github.com/aws/aws-cli)的路径）。有关更多信息，请参阅《GitHub 文档》**中的[分流存储库](https://docs.github.com/en/get-started/quickstart/fork-a-repo)。
+ `PYTHON='C:\path\to\python.exe'`（包括本地 Python 路径）。

以下代码示例使用 MSYS2 自动从 PowerShell 构建和安装 AWS CLI，并指定要使用哪个 Python 本地安装：

```
PS C:\> cd C:path\to\cli\repository\
PS C:\> $env:CHERE_INVOKING = 'yes' #  Preserve the current working directory
PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps " 
PS C:\> C:\msys64\usr\bin\bash  -lc "make"
PS C:\> C:\msys64\usr\bin\bash  -lc "make install"
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
PS C:\> aws --version
```

------

### Alpine Linux 容器
<a name="source-getting-started-install-workflows-alpine"></a>

下面是一个 Dockerfile 示例，可作为 [Alpine 预构建二进制文件的替代](https://github.com/aws/aws-cli/issues/4685)，用于在 Alpine Linux 容器中正常安装 AWS CLI：使用此示例时，将 *AWSCLI\$1VERSION* 替换为所需的 AWS CLI 版本号：

```
 1. FROM python:3.8-alpine AS builder
 2. 
 3. ENV AWSCLI_VERSION=2.10.1
 4. 
 5. RUN apk add --no-cache \
 6.     curl \
 7.     make \
 8.     cmake \
 9.     gcc \
10.     g++ \
11.     libc-dev \
12.     libffi-dev \
13.     openssl-dev \
14.     && curl https://awscli.amazonaws.com/awscli-${AWSCLI_VERSION}.tar.gz | tar -xz \
15.     && cd awscli-${AWSCLI_VERSION} \
16.     && ./configure --prefix=/opt/aws-cli/ --with-download-deps \
17.     && make \
18.     && make install
19. 
20. FROM python:3.8-alpine
21. 
22. RUN apk --no-cache add groff
23. 
24. COPY --from=builder /opt/aws-cli/ /opt/aws-cli/
25. 
26. 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 映像](getting-started-docker.md)。

## AWS CLI 安装和卸载错误故障排除
<a name="source-install-tshoot"></a>

有关安装错误的故障排除步骤，请参阅 [排查 AWS CLI 错误](cli-chap-troubleshooting.md) 以了解常见故障排除步骤。有关相关性最高的故障排除步骤，请参阅[找不到命令错误](cli-chap-troubleshooting.md#tshoot-install-not-found)、[“`aws --version`”命令返回的版本与您安装的版本不同](cli-chap-troubleshooting.md#tshoot-install-wrong-version)和[卸载 AWS CLI 后，“`aws --version`”命令返回一个版本](cli-chap-troubleshooting.md#tshoot-uninstall-1)。

对于故障排除指南中未涵盖的任何问题，请在 *GitHub* 的 [AWS CLI 存储库](https://github.com/aws/aws-cli/labels/source-distribution)中搜索带有 `source-distribution` 标签的问题。如果现有问题没有涵盖您的错误，请[创建一个新问题](https://github.com/aws/aws-cli/issues/new?assignees=&labels=source-distribution%2Cneeds-triage&template=source-distribution.yml&title=%28short+issue+description%29)以获得 AWS CLI 维护者的帮助。

## 后续步骤
<a name="source-install-next-steps"></a>

安装 AWS CLI 后，应执行 [设置 AWS CLI](getting-started-quickstart.md)。

# 在 AWS CLI 中运行官方 Amazon ECR Public 映像或 Docker 映像
<a name="getting-started-docker"></a>

本主题介绍如何使用官方 Amazon Elastic Container Registry Public (Amazon ECR Public) 或 Docker Hub 映像，在 Docker 上运行、配置 AWS CLI 版本 2 以及对其进行版本控制。有关如何使用 Docker 的更多信息，请参阅 [Docker 的文档](https://docs.docker.com/)。

官方映像提供 AWS 直接支持和维护的隔离、可移植性和安全性。这使您能够在基于容器的环境中使用 AWS CLI 版本 2，而无需自行管理安装。

**Topics**
+ [先决条件](#cliv2-docker-prereq)
+ [在 Amazon ECR Public 和 Docker Hub 之间作出选择](#cliv2-docker-versus)
+ [运行官方 AWS CLI 版本 2 映像](#cliv2-docker-install)
+ [有关官方映像的接口和向后兼容性的说明](#cliv2-docker-install-notes)
+ [使用特定版本和标签](#cliv2-docker-upgrade)
+ [更新到最新的官方映像](#cliv2-docker-update)
+ [共享主机文件、凭据、环境变量和配置](#cliv2-docker-share-files)
+ [缩短 docker run 命令](#cliv2-docker-aliases)

## 先决条件
<a name="cliv2-docker-prereq"></a>

您必须已经安装 Docker。有关安装说明，请参阅 [Docker 网站](https://docs.docker.com/install/)。

要验证 Docker 的安装，请运行以下命令并确认是否有输出。

```
$ docker --version
Docker version 19.03.1
```

## 在 Amazon ECR Public 和 Docker Hub 之间作出选择
<a name="cliv2-docker-versus"></a>

我们建议为 AWS CLI 映像使用 Amazon ECR Public，而不使用 Docker Hub。Docker Hub 对公有使用者有更严格的速率限制，这会导致出现节流问题。此外，Amazon ECR Public 会在多个区域复制映像，以提供强大的可用性和处理区域中断问题。

有关 Docker Hub 速率限制的更多信息，请参阅 *Docker* 网站上的[了解 Docker Hub 速率限制](https://www.docker.com/increase-rate-limits/)。

## 运行官方 AWS CLI 版本 2 映像
<a name="cliv2-docker-install"></a>

 首次使用 `docker run` 命令时，系统会将最新映像下载到计算机。`docker run` 命令的每次后续使用都会从本地副本运行。

要运行 AWS CLI 版本 2 Docker 映像，请使用 `docker run` 命令。

------
#### [ Amazon ECR Public ]

官方 AWS CLI 版本 2 Amazon ECR Public 映像托管在 [`aws-cli/aws-cli` 存储库](https://gallery.ecr.aws/aws-cli/aws-cli)中的 Amazon ECR Public 上。

```
$ docker run --rm -it public.ecr.aws/aws-cli/aws-cli command
```

------
#### [ Docker Hub ]

官方 AWS CLI 版本 2 Docker 映像托管在 `amazon/aws-cli` 存储库中的 Docker Hub 上。

```
$ docker run --rm -it amazon/aws-cli command
```

------

下面是此命令运行方式：
+ `docker run --rm -it repository/name` – 等效于 `aws` 可执行文件。每次运行此命令时，Docker 都会启动已下载映像的容器，并执行您的 `aws` 命令。默认情况下，映像使用 AWS CLI 版本 2 的最新版本。

  例如，要在 Docker 中调用 `aws --version` 命令，请运行以下命令。

------
#### [ Amazon ECR Public ]

  ```
  $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli --version
  aws-cli/2.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
  ```

------
#### [ Docker Hub ]

  ```
  $ docker run --rm -it amazon/aws-cli --version
  aws-cli/2.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
  ```

------
+ `--rm` – 指定在命令退出后清理容器。
+ `-it` – 指定要使用 打开伪 TTY。`stdin`这允许您在容器中运行 AWS CLI 版本 2 时向其提供输入，例如，通过使用 `aws configure` 和 `aws help` 命令。当选择是否省略 `-it` 时，请考虑以下事项：
  + 如果您正在运行脚本，则不需要 `-it`。
  + 如果您的脚本遇到错误，则从 Docker 调用中省略 `-it` 也许能解决此问题。
  + 如果您正在尝试通过管道发送输出，`-it` 可能会导致错误，从 Docker 调用中省略 `-it` 也许能解决此问题。如果希望保留 `-it` 标志，但仍想通过管道发送输出，请禁用 AWS CLI 默认使用的[客户端分页程序](cli-usage-pagination.md#cli-usage-pagination-clientside)，应该能解决此问题。

有关 `docker run` 命令的更多信息，请参阅 [Docker 参考指南](https://docs.docker.com/engine/reference/run/)。

## 有关官方映像的接口和向后兼容性的说明
<a name="cliv2-docker-install-notes"></a>
+ 映像上支持的唯一工具是 AWS CLI。仅应直接运行 `aws` 可执行文件。例如，尽管已在映像上显式安装 `less` 和 `groff`，但它们不应直接在 AWS CLI 命令外部执行。
+ `/aws` 工作目录由用户控制。除非在运行 AWS CLI 命令时接到用户指示，否则映像不会写入此目录。
+ 依赖最新标签并不能保证向后兼容。为了确保向后兼容，您必须固定使用特定的 `<major.minor.patch>` 标签，因为这些标签是不可改变的；它们只会被推送一次。

## 使用特定版本和标签
<a name="cliv2-docker-upgrade"></a>

从版本 `2.0.6` 开始，官方 AWS CLI 版本 2 映像有多个版本可供使用。要运行 AWS CLI 版本 2 的特定版本，请将相应的标签附加到 `docker run` 命令。首次使用带有标签的 `docker run` 命令时，该标签的最新映像会下载到您的计算机。带有该标签的 `docker run` 命令的每次后续使用都从您的本地副本运行。

您可以使用两种类型的标签：
+ `latest` – 为映像定义 AWS CLI 版本 2 的最新版本。我们建议您在需要 AWS CLI 版本 2 的最新版本时使用 `latest` 标签。但是，依赖此标签时不保证向后兼容性。默认情况下，在 `latest` 命令中使用 `docker run` 标签。要显式使用 `latest` 标记，请将标签附加到容器映像名称。

------
#### [ Amazon ECR Public ]

  ```
  $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli:latest command
  ```

------
#### [ Docker Hub ]

  ```
  $ docker run --rm -it amazon/aws-cli:latest command
  ```

------
+ `<major.minor.patch>` – 为映像定义 AWS CLI 版本 2 的特定版本。如果您计划在生产中使用官方映像，我们建议您使用 AWS CLI 版本 2 的特定版本，以确保向后兼容。例如，要运行版本 `2.0.6`，请将版本附加到容器映像名称中。

------
#### [ Amazon ECR Public ]

  ```
  $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli:2.0.6 command
  ```

------
#### [ Docker Hub ]

  ```
  $ docker run --rm -it amazon/aws-cli:2.0.6 command
  ```

------

## 更新到最新的官方映像
<a name="cliv2-docker-update"></a>

由于最新的映像仅在您第一次使用 `docker run` 命令时下载到您的计算机，因此您需要手动提取更新的映像。要手动更新到最新版本，我们建议您拉取标记为 `latest` 的映像。拉取映像会将最新版本下载到您的计算机。

------
#### [ Amazon ECR Public ]

```
$ docker pull public.ecr.aws/aws-cli/aws-cli:latest
```

------
#### [ Docker Hub ]

```
$ docker pull amazon/aws-cli:latest
```

------

## 共享主机文件、凭据、环境变量和配置
<a name="cliv2-docker-share-files"></a>

由于 AWS CLI 版本 2 在容器中运行，因此，默认情况下 CLI 无法访问包括配置和凭证的主机文件系统。要将主机文件系统、凭证和配置共享到容器，请将主机系统的 `~/.aws` 目录挂载到位于 `/root/.aws` 的容器，并将 `-v` 标志附加到 `docker run` 命令。这允许在容器中运行的 AWS CLI 版本 2 查找主机文件信息。

------
#### [ Amazon ECR Public ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws  public.ecr.aws/aws-cli/aws-cli command
```

------
#### [ Docker Hub ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli command
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli command
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws  amazon/aws-cli command
```

------

有关 `-v` 标志和挂载的更多信息，请参阅 [Docker 参考指南](https://docs.docker.com/storage/volumes/)。

**注意**  
有关 `config` 和 `credentials` 文件的信息，请参阅 [AWS CLI 中的配置和凭证文件设置](cli-configure-files.md)。

### 示例 1：提供凭证和配置
<a name="cliv2-docker-share-files-config"></a>

在此示例中，我们在运行 `s3 ls` 命令时提供主机凭证和配置，以便列出 Amazon Simple Storage Service (Amazon S3) 中的存储桶。以下示例使用 AWS CLI 凭证和配置文件的默认位置。要使用其他位置，请更改文件路径。

------
#### [ Amazon ECR Public ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
```

------
#### [ Docker Hub ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli s3 ls
```

------

您可以使用 `-e` 标志调用特定系统的环境变量。要使用环境变量，请按名称调用它。

------
#### [ Amazon ECR Public ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
```

------
#### [ Docker Hub ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls
```

------

### 示例 2：将 Amazon S3 文件下载到您的主机系统
<a name="cliv2-docker-share-files-s3"></a>

对于某些 AWS CLI 版本 2 命令，您可以从容器中的主机系统读取文件，或将文件从容器写入主机系统。

在此示例中，我们通过将当前工作目录挂载到容器的 `S3` 目录，将 `s3://aws-cli-docker-demo/hello` 对象 `/aws` 下载到本地文件系统。通过将 `hello` 对象下载到容器的 `/aws` 目录，文件也会保存到主机系统的当前工作目录中。

------
#### [ Amazon ECR Public ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
```

------
#### [ Docker Hub ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
```

------

要确认本地文件系统中存在下载的文件，请运行以下命令。

**Linux 和 macOS**：

```
$ cat hello
Hello from Docker!
```

**Windows PowerShell**：

```
$ type hello
Hello from Docker!
```

### 示例 3：使用您的 AWS\$1PROFILE 环境变量
<a name="cliv2-docker-share-files-envvars"></a>

您可以使用 `-e` 标志调用特定系统的环境变量。调用您想使用的每个环境变量。在本示例中，我们在运行 `s3 ls` 命令以在 Amazon Simple Storage Service (Amazon S3) 中列出存储桶时提供了主机凭证、配置和 *AWS\$1PROFILE* 环境变量。

------
#### [ Amazon ECR Public ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
```

------
#### [ Docker Hub ]

**Linux 和 macOS**：

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows 命令提示符**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**：

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls
```

------

## 缩短 docker run 命令
<a name="cliv2-docker-aliases"></a>

为了缩短 `docker run` 命令，我们建议您使用操作系统的功能在 Linux 和 macOS 中创建 [https://www.linux.com/topic/desktop/understanding-linux-links/](https://www.linux.com/topic/desktop/understanding-linux-links/)（符号链接）或 [https://www.linux.com/topic/desktop/aliases-diy-shell-commands/](https://www.linux.com/topic/desktop/aliases-diy-shell-commands/)，或者在 Windows 中创建 [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/doskey](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/doskey)。要设置 `aws` 别名，可以运行以下命令之一。
+ 要对 `aws` 命令进行基本访问，请运行以下命令。

------
#### [ Amazon ECR Public ]

  **Linux 和 macOS**：

  ```
  $ alias aws='docker run --rm -it public.ecr.aws/aws-cli/aws-cli'
  ```

  **Windows 命令提示符**

  ```
  C:\> doskey aws=docker run --rm -it public.ecr.aws/aws-cli/aws-cli $*
  ```

  **Windows PowerShell**：

  ```
  C:\> Function AWSCLI {docker run --rm -it public.ecr.aws/aws-cli/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
#### [ Docker Hub ]

  **Linux 和 macOS**：

  ```
  $ alias aws='docker run --rm -it amazon/aws-cli'
  ```

  **Windows 命令提示符**

  ```
  C:\> doskey aws=docker run --rm -it amazon/aws-cli $*
  ```

  **Windows PowerShell**：

  ```
  C:\> Function AWSCLI {docker run --rm -it amazon/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
+ 要在使用 `aws` 命令时访问主机文件系统和配置设置，请运行以下命令：

------
#### [ Amazon ECR Public ]

  **Linux 和 macOS**：

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli'
  ```

  **Windows 命令提示符**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli $*
  ```

  **Windows PowerShell**：

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
#### [ Docker Hub ]

  **Linux 和 macOS**：

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'
  ```

  **Windows 命令提示符**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli $*
  ```

  **Windows PowerShell**：

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
+ 要分配要在 `aws` 别名中使用的特定版本，请附加版本标签。

------
#### [ Amazon ECR Public ]

  **Linux 和 macOS**：

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli:2.0.6'
  ```

  **Windows 命令提示符**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $*
  ```

  **Windows PowerShell**：

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
#### [ Docker Hub ]

  **Linux 和 macOS**：

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli:2.0.6'
  ```

  **Windows 命令提示符**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli:2.0.6 $*
  ```

  **Windows PowerShell**：

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli:2.0.6 $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------

设置别名后，您可以从容器内运行 AWS CLI 版本 2，就好像它安装在主机系统上一样。

```
$ aws --version
aws-cli/2.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
```

# 设置 AWS CLI
<a name="getting-started-quickstart"></a>

本主题介绍如何快速配置 AWS Command Line Interface (AWS CLI)的基本设置，以便与 AWS 交互。其中包括您的安全凭证、原定设置输出格式和原定设置 AWS 区域。

**Topics**
+ [收集您的凭证信息以进行编程访问](#getting-started-prereqs-keys)
+ [设置新的配置和凭证](#getting-started-quickstart-new)
+ [使用现有配置和凭证文件](#getting-started-quickstart-existing)

## 收集您的凭证信息以进行编程访问
<a name="getting-started-prereqs-keys"></a>

如果您需要在 AWS 管理控制台 之外与 AWS 进行交互，则需要编程式访问权限。对于身份验证和凭证说明，请选择以下选项之一：


****  

| 身份验证类型 | 用途 | 说明 | 
| --- | --- | --- | 
|  AWS 管理控制台凭证  | **（推荐）**使用您的控制台凭证登录 AWS CLI，来使用短期凭证。如果使用根用户、IAM 用户或 IAM 联合身份验证来访问 AWS 账户，则建议您采用这种方式 | [使用控制台凭证登录以进行 AWS 本地开发](cli-configure-sign-in.md) | 
|  IAM Identity Center 员工用户短期凭证  | 为 IAM Identity Center 员工用户提供短期凭证。最佳安全实践是将 AWS Organizations 与 IAM Identity Center 结合使用。它能够将短期凭证与用户目录（例如内置 IAM Identity Center 目录或 Active Directory）结合在一起。 | [使用 AWS CLI 配置 IAM Identity Center 身份验证](cli-configure-sso.md) | 
| IAM 用户短期凭证 | 使用 IAM 用户短期凭证，它比长期凭证更安全。如果您的凭证遭到泄露，则在凭证过期之前的使用时间有限。 | [在 AWS CLI 中使用短期凭证进行身份验证](cli-authentication-short-term.md) | 
| Amazon EC2 实例上的 IAM 或 IAM Identity Center 用户。 | 通过分配给 Amazon EC2 实例的角色，使用 Amazon EC2 实例元数据查询临时凭证。 | [在 AWS CLI 中将 Amazon EC2 实例元数据用作凭证](cli-configure-metadata.md) | 
| 代入角色以获得权限 | 将另一个凭证方法配对并代入一个角色以临时访问您的用户可能无法访问的 AWS 服务。 | [在 AWS CLI 中使用 IAM 角色](cli-configure-role.md) | 
| IAM 用户长期凭证 | （不推荐）使用不会过期的长期凭证。 | [在 AWS CLI 中使用 IAM 用户凭证进行身份验证](cli-authentication-user.md) | 
| IAM 或 IAM Identity Center 员工用户的外部存储  | （不推荐）将另一个凭证方法配对，但存储位于 AWS CLI 外部的凭证值。此方法的安全性取决于存储凭证的外部位置。 | [在 AWS CLI 中使用外部进程获取凭证](cli-configure-sourcing-external.md) | 

## 设置新的配置和凭证
<a name="getting-started-quickstart-new"></a>

AWS CLI 将您的配置和凭证信息存储在 `credentials` 和 `config` 文件的*配置文件*（设置集合）中。

**Topics**
+ [使用 AWS CLI 命令进行配置](#getting-started-quickstart-new-command)
+ [手动编辑凭证和配置文件](#getting-started-quickstart-new-file)

以下示例将示例值用于每种身份验证方法。请将示例值替换为您自己的值。

### 使用 AWS CLI 命令进行配置
<a name="getting-started-quickstart-new-command"></a>

对于一般用途，在您的首选终端中使用 `aws configure` 或 `aws configure sso` 命令是设置 AWS CLI 安装的最快方法。根据您首选的凭证方法，AWS CLI 会提示您输入相关信息。预设情况下，当您运行的 AWS CLI 命令未明确指定要使用的配置文件时，将使用此配置文件中的信息。

有关 `credentials` 和 `config` 文件的更多信息，请参阅[AWS CLI 中的配置和凭证文件设置](cli-configure-files.md)。

------
#### [ Console sessions as short-term credentials ]

此示例允许您将现有的控制台凭证与 `aws login` 命令一起使用。此登录方法可用于在初始账户设置期间创建的根凭证、IAM 用户或您的身份提供商提供的联合身份。有关更多信息，请参阅[使用控制台凭证登录以进行 AWS 本地开发](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html)。

```
$ aws login
No AWS region has been configured. The AWS region is the geographic location of your AWS resources. 

If you've used AWS before and already have resources in your account, tell us which region they were 
created in. If you haven't created resources in your account before, you can pick the region closest to you: 
https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html. You are able to change 
the region in the CLI at any time with the command `aws configure set region NEW_REGION`.

AWS Region [us-east-1]: us-east-1
Attempting to open the login page for `us-east-1` in your default browser. If the browser does not open, 
use the following URL to complete your login:

https://us-east-1.signin.aws.amazon.com/v1/authorize<abbreviated>

If you cannot connect to this URL, make sure that you have specified a valid region.

Waiting for login...

Logged in with role `arn:aws:sts::012345678910:user/iam-user`, and configured profile 
`default` to use `us-east-1`. This session will expire on October 14, 2025 at 2:04 PST. After this time, you 
can renew your session with `aws login`.
```

------
#### [ IAM Identity Center (SSO) ]

此示例介绍使用 `aws configure sso` 向导的 AWS IAM Identity Center。有关更多信息，请参阅 [使用 AWS CLI 配置 IAM Identity Center 身份验证](cli-configure-sso.md)。

```
$ aws configure sso
SSO session name (Recommended): my-sso
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]:us-east-1

Attempting to automatically open the SSO authorization page in your default browser.

There are 2 AWS accounts available to you.
> DeveloperAccount, developer-account-admin@example.com (111122223333) 
  ProductionAccount, production-account-admin@example.com (444455556666)

Using the account ID 111122223333

There are 2 roles available to you.
> ReadOnly
  FullAccess

Using the role name "ReadOnly"

CLI default client Region [None]: us-west-2
CLI default output format [None]: json
CLI profile name [123456789011_ReadOnly]: user1
```

------
#### [ IAM Identity Center (Legacy SSO) ]

此示例介绍使用 `aws configure sso` 向导的 AWS IAM Identity Center 的传统方法。要使用传统 SSO，请将会话名称留空。有关更多信息，请参阅 [使用 AWS CLI 配置 IAM Identity Center 身份验证](cli-configure-sso.md)。

```
$ aws configure sso
SSO session name (Recommended):
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]:us-east-1

SSO authorization page has automatically been opened in your default browser.
Follow the instructions in the browser to complete this authorization request.

There are 2 AWS accounts available to you.
> DeveloperAccount, developer-account-admin@example.com (111122223333) 
  ProductionAccount, production-account-admin@example.com (444455556666)

Using the account ID 111122223333

There are 2 roles available to you.
> ReadOnly
  FullAccess

Using the role name "ReadOnly"

CLI default client Region [None]: us-west-2
CLI default output format [None]: json
CLI profile name [123456789011_ReadOnly]: user1
```

------
#### [ Short-term credentials ]

此示例介绍来自 AWS Identity and Access Management 的短期凭证。aws 配置向导用于设置初始值，然后 `aws configure set` 命令分配所需的最后一个值。有关更多信息，请参阅 [在 AWS CLI 中使用短期凭证进行身份验证](cli-authentication-short-term.md)。

```
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
$ aws configure set aws_session_token fcZib3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
```

------
#### [ IAM role ]

此示例介绍代入 IAM 角色。使用 IAM 角色的配置文件从另一个配置文件提取凭证，然后应用 IAM 角色权限。在以下示例中，`default` 是凭证的源配置文件，`user1` 将借用相同的凭证，然后代入新角色。此过程没有向导，因此，将使用 `aws configure set` 命令设置每个值。有关更多信息，请参阅 [在 AWS CLI 中使用 IAM 角色](cli-configure-role.md)。

```
$ aws configure set role_arn arn:aws:iam::123456789012:role/defaultrole
$ aws configure set source_profile default
$ aws configure set role_session_name session_user1
$ aws configure set region us-west-2
$ aws configure set output json
```

------
#### [ Amazon EC2 instance metadata credentials ]

此示例介绍从托管 Amazon EC2 实例元数据中获得的凭证。此过程没有向导，因此，将使用 `aws configure set` 命令设置每个值。有关更多信息，请参阅 [在 AWS CLI 中将 Amazon EC2 实例元数据用作凭证](cli-configure-metadata.md)。

```
$ aws configure set role_arn arn:aws:iam::123456789012:role/defaultrole
$ aws configure set credential_source Ec2InstanceMetadata
$ aws configure set region us-west-2
$ aws configure set output json
```

------
#### [ Long-term credentials ]

**警告**  
为了避免安全风险，在开发专用软件或处理真实数据时，请勿使用 IAM 用户进行身份验证，而是使用与身份提供者的联合身份验证，例如 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

此示例介绍来自 AWS Identity and Access Management 的长期凭证。有关更多信息，请参阅 [在 AWS CLI 中使用 IAM 用户凭证进行身份验证](cli-authentication-user.md)。

```
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

------

有关身份验证和凭证方法的更多详细信息，请参阅 [AWS CLI 身份验证和访问凭证](cli-chap-authentication.md)。

### 手动编辑凭证和配置文件
<a name="getting-started-quickstart-new-file"></a>

在复制和粘贴信息时，我们建议手动编辑 `config` 和 `credentials` 文件。根据您首选的凭证方法，将通过不同的方式设置文件。

这些文件存储在您的主目录下的 `.aws` 文件夹中。主目录位置因操作系统而异，但在 Windows 中使用环境变量 `%UserProfile%` 引用，在基于 Unix 的系统中使用 `$HOME` 或 `~`（波形符）引用。有关这些设置的存储位置的更多信息，请参阅 [配置设置存储在何处？](cli-configure-files.md#cli-configure-files-where)。

以下示例显示了一个 `default` 配置文件和一个名为 `user1` 的配置文件，并且将使用示例值。请将示例值替换为您自己的值。有关 `credentials` 和 `config` 文件的更多信息，请参阅[AWS CLI 中的配置和凭证文件设置](cli-configure-files.md)。

------
#### [ IAM Identity Center (SSO) ]

此示例适用于 AWS IAM Identity Center。有关更多信息，请参阅 [使用 AWS CLI 配置 IAM Identity Center 身份验证](cli-configure-sso.md)。

**凭证文件**

该 `credentials` 文件不用于此身份验证方法。

**Config 文件**

```
[default]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = readOnly
region = us-west-2
output = text

[profile user1]
sso_session = my-sso
sso_account_id = 444455556666
sso_role_name = readOnly
region = us-east-1
output = json

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

------
#### [ IAM Identity Center (Legacy SSO) ]

此示例介绍 AWS IAM Identity Center 的传统方法。有关更多信息，请参阅 [使用 AWS CLI 配置 IAM Identity Center 身份验证](cli-configure-sso.md)。

**凭证文件**

该 `credentials` 文件不用于此身份验证方法。

**Config 文件**

```
[default]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-east-1
sso_account_id = 111122223333
sso_role_name = readOnly
region = us-west-2
output = text

[profile user1]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-east-1
sso_account_id = 444455556666
sso_role_name = readOnly
region = us-east-1
output = json
```

------
#### [ Short-term credentials ]

此示例介绍来自 AWS Identity and Access Management 的短期凭证。有关更多信息，请参阅 [在 AWS CLI 中使用短期凭证进行身份验证](cli-authentication-short-term.md)。

**凭证文件**

```
[default]
aws_access_key_id=ASIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token = IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE

[user1]
aws_access_key_id=ASIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
aws_session_token = fcZib3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
```

**Config 文件**

```
[default]
region=us-west-2
output=json

[profile user1]
region=us-east-1
output=text
```

------
#### [ IAM role ]

此示例介绍代入 IAM 角色。使用 IAM 角色的配置文件从另一个配置文件提取凭证，然后应用 IAM 角色权限。在以下示例中，`default` 是凭证的源配置文件，`user1` 将借用相同的凭证，然后代入新角色。有关更多信息，请参阅 [在 AWS CLI 中使用 IAM 角色](cli-configure-role.md)。

**凭证文件**

`credentials` 文件取决于源配置文件使用的身份验证。在以下示例中，源配置文件使用短期凭证。

```
[default]
aws_access_key_id=ASIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token = IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
```

**Config 文件**

```
[default]
region=us-west-2
output=json

[profile user1]
role_arn=arn:aws:iam::777788889999:role/user1role
source_profile=default
role_session_name=session_user1
region=us-east-1
output=text
```

------
#### [ Amazon EC2 instance metadata credentials ]

此示例介绍从托管 Amazon EC2 实例元数据中获得的凭证。有关更多信息，请参阅 [在 AWS CLI 中将 Amazon EC2 实例元数据用作凭证](cli-configure-metadata.md)。

**凭证文件**

该 `credentials` 文件不用于此身份验证方法。

**Config 文件**

```
[default]
role_arn=arn:aws:iam::123456789012:role/defaultrole
credential_source=Ec2InstanceMetadata
region=us-west-2
output=json

[profile user1]
role_arn=arn:aws:iam::777788889999:role/user1role
credential_source=Ec2InstanceMetadata
region=us-east-1
output=text
```

------
#### [ Long-term credentials ]

**警告**  
为了避免安全风险，在开发专用软件或处理真实数据时，请勿使用 IAM 用户进行身份验证，而是使用与身份提供者的联合身份验证，例如 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

此示例介绍来自 AWS Identity and Access Management 的长期凭证。有关更多信息，请参阅 [在 AWS CLI 中使用 IAM 用户凭证进行身份验证](cli-authentication-user.md)。

**凭证文件**

```
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[user1]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
```

**Config 文件**

```
[default]
region=us-west-2
output=json

[profile user1]
region=us-east-1
output=text
```

------

有关身份验证和凭证方法的更多详细信息，请参阅 [AWS CLI 身份验证和访问凭证](cli-chap-authentication.md)。

## 使用现有配置和凭证文件
<a name="getting-started-quickstart-existing"></a>

如果您现在拥有配置和凭证文件，这些文件可用于 AWS CLI。

要使用 `config` 和 `credentials` 文件，请将它们移至主目录中名为 `.aws` 的文件夹中。主目录位置因操作系统而异，但在 Windows 中使用环境变量 `%UserProfile%` 引用，在基于 Unix 的系统中使用 `$HOME` 或 `~`（波形符）引用。

通过将 `AWS_CONFIG_FILE` 和 `AWS_SHARED_CREDENTIALS_FILE` 环境变量设置为另一个本地路径，可以为 `config` 和 `credentials` 文件指定非原定设置位置。有关详细信息，请参阅 [为 AWS CLI 配置环境变量](cli-configure-envvars.md)。

有关配置和凭证文件的更多详细信息，请参阅 [AWS CLI 中的配置和凭证文件设置](cli-configure-files.md)。