

# 配置 AWS CLI 设置
<a name="cli-chap-configure"></a>

本部分介绍如何配置 AWS Command Line Interface (AWS CLI) 用于与 AWS 交互的设置。这些功能包括：
+ **凭证**将标识 API 的调用方。访问凭证用于加密向 AWS 服务器发出的请求，以确认您的身份并检索相关的权限策略。这些权限将决定您可以执行的操作。有关如何设置凭证的信息，请参阅 [AWS CLI 身份验证和访问凭证](cli-chap-authentication.md)。
+ **其他配置详细信息**，用于说明 AWS CLI 如何处理请求，例如默认输出格式和默认 AWS 区域。

**注意**  
AWS要求所有传入的请求都进行加密签名。AWS CLI 为您执行该操作。“签名”包括日期/时间戳。因此，您必须确保正确设置电脑的日期和时间。否则，如果签名中的日期/时间与 AWS 服务认定的日期/时间相差太远，AWS 会拒绝请求。

## 配置和凭证优先顺序
<a name="configure-precedence"></a>

凭证和配置设置位于不同位置（例如，系统或用户环境变量、本地 AWS 配置文件）或在命令行上显式声明为参数。某些位置优先于其他位置。AWS CLI 凭证和配置设置的优先顺序如下：

1. **[命令行选项](cli-configure-options.md)** – 覆盖任何其他位置的设置，例如 `--region`、`--output` 和 `--profile` 参数。

1. **[环境变量](cli-configure-envvars.md)** – 您可以在系统的环境变量中存储值。

1. **[代入角色](cli-configure-role.md)** – 通过配置或 [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) 命令代入 IAM 角色的权限。

1. **[使用 Web 身份代入角色](cli-configure-role.md)** – 通过配置或 [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) 命令使用 Web 身份代入 IAM 角色的权限。

1. **[AWS IAM Identity Center](cli-configure-files.md)** – 在您运行 `aws configure sso` 命令时，存储在 `config` 文件中的 IAM Identity Center 配置设置将更新。运行 `aws sso login` 命令时会对凭证进行身份验证。`config` 文件位于 `~/.aws/config`（在 Linux 或 macOS 上）或 `C:\Users\USERNAME\.aws\config`（在 Windows 上）。

1. **[凭证文件](cli-configure-files.md)** – 在运行命令 `aws configure` 时，将更新 `credentials` 和 `config` 文件。`credentials` 文件位于 `~/.aws/credentials`（在 Linux 或 macOS 上）或 `C:\Users\USERNAME\.aws\credentials`（在 Windows 上）。

1. **[自定义流程](cli-configure-sourcing-external.md)** – 从外部来源获取您的凭证。

1. **[配置文件](cli-configure-files.md)** – 在运行命令 `aws configure` 时，将更新 `credentials` 和 `config` 文件。`config` 文件位于 `~/.aws/config`（在 Linux 或 macOS 上）或 `C:\Users\USERNAME\.aws\config`（在 Windows 上）。

1. **[容器凭证](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)** – 您可以将 IAM 角色与每个 Amazon Elastic Container Service (Amazon ECS) 作业定义关联。之后，该任务的容器就可以使用该角色的临时凭证。有关更多信息，请参阅 *Amazon Elastic Container Service 开发人员指南*中的[任务的 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。

1. **[Amazon EC2 实例配置文件凭证](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)** – 您可以将 IAM 角色与每个 Amazon Elastic Compute Cloud (Amazon EC2) 实例关联。之后，在该实例上运行的代码就可以使用该角色的临时凭证。凭证通过 Amazon EC2 元数据服务提供。有关更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 的 IAM 角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)和《IAM 用户指南》**中的[使用实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。

## 此部分中的其他主题
<a name="configure-topics"></a>
+ [AWS CLI 中的配置和凭证文件设置](cli-configure-files.md)
+ [为 AWS CLI 配置环境变量](cli-configure-envvars.md)
+ [AWS CLI 中的命令行选项](cli-configure-options.md)
+ [在 AWS CLI 中配置命令完成](cli-configure-completion.md)
+ [AWS CLI 中的 AWS CLI 重试次数](cli-configure-retries.md)
+ [在 AWS CLI 中使用 HTTP 代理](cli-configure-proxy.md)

# AWS CLI 中的配置和凭证文件设置
<a name="cli-configure-files"></a>

您可以将常用的配置设置和凭证保存在由 AWS CLI 维护的文件中。

这些文件将分成 `profiles`。默认情况下，AWS CLI 将使用在名为 `default` 的配置文件中找到的设置。要使用备用设置，您可以创建和引用其他配置文件。

您可以通过设置某个支持的环境变量或使用命令行参数来覆盖个别设置。有关配置设置优先顺序的更多信息，请参阅[配置 AWS CLI 设置](cli-chap-configure.md)。

**注意**  
有关如何设置凭证的信息，请参阅 [AWS CLI 身份验证和访问凭证](cli-chap-authentication.md)。

**Topics**
+ [配置和凭证文件的格式](#cli-configure-files-format)
+ [配置设置存储在何处？](#cli-configure-files-where)
+ [使用命名配置文件](#cli-configure-files-using-profiles)
+ [使用命令设置和查看配置设置](#cli-configure-files-methods)
+ [设置新的配置和凭证命令示例](#cli-configure-files-examples)
+ [支持的 `config` 文件设置](#cli-configure-files-settings)

## 配置和凭证文件的格式
<a name="cli-configure-files-format"></a>

`config` 和 `credentials` 文件将归入各个节中。节包括 *profiles*、*sso-sessions* 和 *services*。节是一个命名的设置集合，它一直持续到遇到另一个节定义行为止。可将多个配置文件和节存储在 `config` 和 `credentials` 文件中。

这些文件是使用以下格式的纯文本文件：
+ 节名称用方括号 [] 括起来，例如 `[default]`、`[profile user1]` 和 `[sso-session]`。
+ 部分中的所有条目均采用 `setting_name=value` 的一般形式。
+ 可以通过以井号字符（`#`）开头来注释掉行。

**`config` 和 `credentials` 文件包含以下节类型：**
+ [`profile`](#cli-configure-files-format-profile)
+ [`sso-session`](#cli-configure-files-format-sso-session)
+ [`services`](#cli-configure-files-format-services)

### 节类型：`profile`
<a name="cli-configure-files-format-profile"></a>

配置文件节名称使用以下格式，具体取决于文件：
+ **Config 文件：** `[default]` `[profile user1]`
+ **凭证文件：** `[default]` `[user1]`

  在 `credentials` 文件中创建条目时，***请勿*** 使用单词 `profile`。

每个配置文件都可以指定不同的凭证，还可以指定不同的 AWS 区域和输出格式。在 `config` 文件中命名配置文件时，请包括前缀词“`profile`”，但不要将它包括在 `credentials` 文件中。

以下示例显示指定了两个配置文件、区域和输出的 `credentials` 和 `config` 文件。第一个 *[default]* 配置文件在运行未指定配置文件的 AWS CLI 命令时使用。第二个在运行有 `--profile user1` 参数的 AWS CLI 命令时使用。

------
#### [ 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 中使用 IAM 用户凭证进行身份验证](cli-authentication-user.md)。

### 节类型：`sso-session`
<a name="cli-configure-files-format-sso-session"></a>

`config` 文件的 `sso-session` 部分用于对获取 SSO 访问令牌的配置变量进行分组，然后可以用来获取 AWS 凭证。使用了以下设置：
+ **（必需）**`sso\$1start\$1url`
+ **（必需）**`sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`
+ `sso\$1registration\$1scopes`

您定义一个 `sso-session` 部分并将其关联到配置文件。必须在 `sso-session` 部分内设置 `sso_region` 和 `sso_start_url`。通常，`sso_account_id` 和 `sso_role_name` 必须在 `profile` 部分进行设置，以便 SDK 可以请求 SSO 凭证。

以下示例将 SDK 配置为请求 SSO 凭证并支持自动令牌刷新：

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

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

这也允许在多个配置文件中重复使用 `sso-session` 配置：

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[profile prod]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole2

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

但是，并不是所有 SSO 令牌配置场景都需要 `sso_account_id` 和 `sso_role_name`。如果您的应用程序仅使用支持持有者身份验证的 AWS 服务，则不需要传统 AWS 凭证。持有者身份验证是一种 HTTP 身份验证方案，它使用称为持有者令牌的安全令牌。在这种情况下，不需要 `sso_account_id` 和 `sso_role_name`。请参阅 AWS 服务的单独指南，以确定其是否支持持有者令牌授权。

此外，可以作为 `sso-session` 的一部分配置注册范围。范围是 OAuth 2.0 中的一种机制，用于限制应用程序对用户账户的访问。应用程序可以请求一个或多个范围，向应用程序签发的访问令牌将仅限于授予的范围。这些范围定义了为已注册的 OIDC 客户端请求授权的权限和客户端检索的访问令牌。以下示例将 `sso_registration_scopes` 设置为提供已列出账户/角色的访问权限：

```
[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
```

身份验证令牌缓存到 `~/.aws/sso/cache` 目录下的磁盘上，文件名基于会话名称。

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

### 节类型：`services`
<a name="cli-configure-files-format-services"></a>

`services` 节是一组为 AWS 服务 请求配置自定义端点的设置。然后，配置文件将链接到 `services` 节。

```
[profile dev]
services = my-services
```

`services` 节按 `<SERVICE> = ` 行分成多个小节，其中 `<SERVICE>` 是 AWS 服务 标识键。AWS 服务 标识符基于 API 模型的 `serviceId`，不过需要将所有空格替换为下划线，并将所有字母小写。有关 `services` 节中要使用的所有服务标识符密钥的列表，请参阅[在 AWS CLI 中使用端点](cli-configure-endpoints.md)。服务标识符密钥后面是嵌套的设置，每个设置单独成行，缩进两个空格。

以下示例会配置端点，用于在 *dev* 配置文件中使用的 *my-services* 节中向服务发出的请求。后面紧跟的任何缩进行都包含在该小节中，并适用于该服务。

```
[profile dev]
services = my-services

[services my-services]
dynamodb = 
  endpoint_url = http://localhost:8000
```

有关特定于服务的端点的更多信息，请参阅 ‬[在 AWS CLI 中使用端点](cli-configure-endpoints.md)。

如果您的配置文件具有基于角色的凭证，而这些凭证是通过 IAM 代入角色功能的 `source_profile` 参数配置的，则开发工具包仅使用所指定配置文件的服务配置。它不使用关联有角色的配置文件。例如，使用以下共享 `config` 文件：

```
[profile A]
credential_source = Ec2InstanceMetadata
endpoint_url = https://profile-a-endpoint.aws/

[profile B]
source_profile = A
role_arn = arn:aws:iam::123456789012:role/roleB
services = profileB

[services profileB]
ec2 = 
  endpoint_url = https://profile-b-ec2-endpoint.aws
```

 如果您使用配置文件 `B` 并在代码中调用 Amazon EC2，则端点将解析为 `https://profile-b-ec2-endpoint.aws`。如果您的代码向其他任何服务发出请求，则端点解析将不遵循任何自定义逻辑。该端点不会解析到配置文件 `A` 中定义的全局端点。要使全局端点对配置文件 `B` 生效，您需要直接在配置文件 `B` 中设置 `endpoint_url`。

## 配置设置存储在何处？
<a name="cli-configure-files-where"></a>

AWS CLI 将使用 `aws configure` 指定的敏感凭证信息存储在主目录中名为 `credentials` 的文件夹中名为 `.aws` 的本地文件中。使用 `aws configure` 指定的较不敏感的配置选项存储在名为 `config` 的本地文件中，该文件也存储在主目录的 `.aws` 文件夹中。

**在 config 文件中存储凭证**  
您可以将所有配置文件设置保留在一个文件中，因为 AWS CLI 可以从 `config` 文件中读取凭证。如果两个文件中都有共享相同名称的配置文件的凭证，则凭证文件中的密钥优先。我们建议将凭证保存在 `credentials` 文件中。这些文件也被各种语言软件开发工具包（SDK）使用。如果除了 AWS CLI 之外，您还使用某个开发工具包，请确认凭证是否应存储在其自己的文件中。

主目录位置因操作系统而异，但在 Windows 中使用环境变量 `%UserProfile%` 引用，在基于 Unix 的系统中使用 `$HOME` 或 `~`（波形符）引用。通过将 `AWS_CONFIG_FILE` 和 `AWS_SHARED_CREDENTIALS_FILE` 环境变量设置为另一个本地路径，可以为文件指定非默认位置。有关详细信息，请参阅 [为 AWS CLI 配置环境变量](cli-configure-envvars.md)。

当您使用共享配置文件指定 AWS Identity and Access Management（IAM）角色时，AWS CLI 将调用 AWS STS `AssumeRole` 操作来检索临时凭证。随后，这些凭证将存储起来（存储在 `~/.aws/cli/cache` 中）。后续 AWS CLI 命令将使用缓存的临时凭证，直到它们过期，这时 AWS CLI 将自动刷新这些凭证。

## 使用命名配置文件
<a name="cli-configure-files-using-profiles"></a>

如果未明确定义配置文件，则使用 `default` 配置文件。

要使用命名配置文件，请向您的命令添加 `--profile profile-name` 选项。以下示例列出了使用 `user1` 配置文件中定义的凭证和设置的所有 Amazon EC2 实例。

```
$ aws ec2 describe-instances --profile user1
```

要为多个命令使用一个命名配置文件，可以通过将 `AWS_PROFILE` 环境变量设置为默认配置文件来避免在每个命令中指定配置文件。您可以使用 `--profile` 参数来覆盖此设置。

------
#### [ Linux or macOS ]

```
$ export AWS_PROFILE=user1
```

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

```
C:\> setx AWS_PROFILE user1
```

使用 `[set](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)` 设置环境变量会更改使用的值，直到当前命令提示符会话结束，或者直到您将该变量设置为其他值。

使用 [https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx) 设置环境变量会更改运行命令后创建的所有命令 Shell 中的值。这***不会*** 影响运行命令时已在运行的任何命令 Shell。关闭并重新启动命令 Shell 可查看这一更改的效果。

设置环境变量会更改默认配置文件，直到 Shell 会话结束或直到您将该变量设置为其他值。通过将环境变量放在 shell 的启动脚本中，可使环境变量在未来的会话中继续有效。有关更多信息，请参阅 [为 AWS CLI 配置环境变量](cli-configure-envvars.md)。

------

## 使用命令设置和查看配置设置
<a name="cli-configure-files-methods"></a>

可通过多种方法使用命令来查看和设置配置设置。

**`[aws configure](https://docs.aws.amazon.com/cli/v1/reference/configure/index.html)`**  
运行此命令可快速设置和查看凭证、区域和输出格式。以下示例显示了示例值。  

```
$ 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](https://docs.aws.amazon.com/cli/v1/reference/configure/set.html)`**  
您可以使用 `aws configure set` 设置任何凭证或配置设置。使用 `--profile` 设置指定要查看或修改的配置文件。  
例如，以下命令设置名为 `region` 的配置文件中的 `integ`。  

```
$ aws configure set region us-west-2 --profile integ
```
要删除某个设置，可在文本编辑器中从 `config` 和 `credentials` 文件中手动删除该设置。

**[https://docs.aws.amazon.com/cli/v1/reference/configure/get.html](https://docs.aws.amazon.com/cli/v1/reference/configure/get.html)**  
您可以检索已使用 `aws configure get` 设置的任何凭证或配置设置。使用 `--profile` 设置指定要查看或修改的配置文件。  
例如，以下命令检索名为 `region` 的配置文件中的 `integ` 设置。  

```
$ aws configure get region --profile integ
us-west-2
```
如果输出为空，不会显式设置该设置，并将使用默认值。

**[https://docs.aws.amazon.com/cli/latest/reference/reference/configure/import.html](https://docs.aws.amazon.com/cli/latest/reference/reference/configure/import.html)**  
导入从 IAM Web 控制台生成的 `CSV` 凭证。这不适用于从 IAM Identity Center 生成的凭证；使用 IAM Identity Center 的客户应使用 aws configure sso。将导入一个配置文件名称与用户名匹配的 CSV 文件。CSV 文件必须包含以下标头。  
+ 用户名称
+ 访问密钥 ID
+ 秘密访问密钥
在创建初始密钥对期间，一旦您关闭 **Download .csv file**（下载 .csv 文件）对话框，在关闭该对话框之后就无法访问秘密访问密钥了。如果您需要 `.csv` 文件，则需要自己创建一个包含所需标头和存储的密钥对信息的文件。如果您无法访问密钥对信息，则需要创建新的密钥对。

```
$ aws configure import --csv file://credentials.csv
```

**[https://docs.aws.amazon.com/cli/v1/reference/configure/list.html](https://docs.aws.amazon.com/cli/v1/reference/configure/list.html)**  
要列出配置数据，请使用 `aws configure list` 命令。此命令列出配置文件以及用于指定的配置文件的访问密钥、密钥和区域配置信息。对于每个配置项目，它会显示值、检索配置值的位置以及配置变量名称。  
例如，如果您在环境变量中提供 AWS 区域，则此命令会显示您配置的区域的名称、该值来自环境变量以及环境变量的名称。  
对于角色和 IAM Identity Center 等临时凭证方法，此命令显示临时缓存的访问密钥并显示秘密访问密钥。  

```
$ aws configure list
NAME       : VALUE                : TYPE                    : LOCATION
profile    : <not set>            : None                    : None
access_key : ****************ABCD : shared-credentials-file : 
secret_key : ****************ABCD : shared-credentials-file : 
region     : us-west-2            : env                     : AWS_DEFAULT_REGION
```

**[https://docs.aws.amazon.com/cli/v1/reference/configure/list-profiles.html](https://docs.aws.amazon.com/cli/v1/reference/configure/list-profiles.html)**  
要列出所有配置文件名称，请使用 `aws configure list-profiles` 命令。  

```
$ aws configure list-profiles
default
test
```

**`aws configure mfa-login`**  
运行此命令以配置一个新的配置文件，以便将多重身份验证（MFA）与所指定配置文件中的 IAM 用户凭证一起使用。如果未指定任何配置文件，则 MFA 将基于 `default` 配置文件。如果未配置默认配置文件，则 `mfa-login` 命令会在询问您的 MFA 信息之前提示您输入 AWS 凭证。以下命令示例使用您的默认配置并创建一个 MFA 配置文件。  

```
$ aws configure mfa-login
MFA serial number or ARN: arn:aws:iam::123456789012:mfa/MFADeviceName
MFA token code: 123456
Profile to update [session-MFADeviceName]:
Temporary credentials written to profile 'session-MFADeviceName'
Credentials will expire at 2023-05-19 18:06:10 UTC
To use these credentials, specify --profile session-MFADeviceName when running AWS CLI commands
```
要更新现有配置文件，请使用 `--update-profile` 参数。  

```
$ aws configure mfa-login --profile myprofile --update-profile mfaprofile
MFA token code: 123456
Temporary credentials written to profile 'mfaprofile'
Credentials will expire at 2023-05-19 18:06:10 UTC
To use these credentials, specify --profile mfaprofile when running AWS CLI commands
```
此命令当前仅支持基于软硬件的一次性密码（OTP）身份验证器。此命令当前不支持使用通行密钥和 U2F 设备。  
有关将 MFA 与 IAM 结合使用的更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的 [IAM 中的 AWS 多重身份验证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)。

**`aws configure sso`**  
运行此命令可快速设置和查看 AWS IAM Identity Center 凭证、区域和输出格式。以下示例显示了示例值。  

```
$ 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
SSO registration scopes [None]: sso:account:access
```

**`aws configure sso-session`**  
运行此命令可在 `credentials` 和 `config` 文件的 `sso-session` 部分中快速设置和查看 AWS IAM Identity Center 凭证、区域和输出格式。以下示例显示了示例值。  

```
$ aws configure sso-session
SSO session name: my-sso
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

**`aws configure export-credentials`**  
运行此命令以指定的格式导出当前设置的凭证。默认情况下，该命令以 `process` 格式导出默认凭证，这是 AWS SDK 和工具凭证格式支持的 JSON 格式。  

```
$ aws configure export-credentials
{
  "Version": 1,
  "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
  "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
}
```
要导出特定的配置文件和格式，请使用 `--profile` 和 `--format` 选项。格式选项如下所示：  
+ **（默认）****`process`**：AWS SDK 和工具 `credential_process` 配置支持的 JSON 格式。
+ **`env`**：采用导出的 Shell 格式的环境变量。
+ **`env-no-export`**：采用 Shell 格式的未导出的环境变量。
+ **`powershell`**：采用 PowerShell 格式的环境变量。
+ **`windows-cmd`**：采用 Windows 命令行格式的环境变量。
以下示例将 `user1` 配置文件导出为已导出的 Shell 格式。  

```
$ aws configure export-credentials --profile user1 --format env
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

## 设置新的配置和凭证命令示例
<a name="cli-configure-files-examples"></a>

以下示例说明如何使用为不同的身份验证方法指定的凭证、区域和输出配置默认配置文件。

------
#### [ 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
```

------

## 支持的 `config` 文件设置
<a name="cli-configure-files-settings"></a>

**Topics**
+ [全局设置](#cli-configure-files-global)
+ [S3 自定义命令设置](#cli-configure-files-s3)

`config` 文件支持以下设置。将使用指定（或默认）配置文件中列出的值，除非它们被具有相同名称的环境变量或具有相同名称的命令行选项覆盖。有关哪些顺序设置优先的更多信息，请参阅[配置 AWS CLI 设置](cli-chap-configure.md)

### 全局设置
<a name="cli-configure-files-global"></a>

** `account_id_endpoint_mode` **  
指定是否使用基于 AWS 账户的端点 ID 来调用受支持的 AWS 服务。有关基于账户的端点的更多信息，请参阅[基于账户的端点](cli-configure-endpoints.md#endpoints-accountid)。  
此设置可以设为以下值：  
+ **（默认）****`preferred`**：端点应包含账户 ID（如果有）。
+ **`disabled`**：已解析的端点不包含账户 ID。
+ **`required`**：端点必须包含账户 ID。如果账户 ID 不可用，SDK 会引发错误。
可以被 `AWS\$1ACCOUNT\$1ID\$1ENDPOINT\$1MODE` 环境变量覆盖。要使用基于账户的端点，必须在 `AWS\$1ACCOUNT\$1ID` 环境变量或 `aws\$1account\$1id` 设置中设置 ID。  

```
account_id_endpoint_mode = preferred
```
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

** `aws_access_key_id` **  
指定用作凭证一部分的对命令请求进行身份验证的 AWS 访问密钥。虽然它可以存储在 `config` 文件中，但我们建议您将其存储在 `credentials` 文件中。  
可以被 `AWS_ACCESS_KEY_ID` 环境变量覆盖。您不能将访问密钥 ID 指定为命令行选项。  

```
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
```

** `aws_account_id` **  
指定要用于调用受支持的 AWS 服务的基于 AWS 账户的端点 ID。有关基于账户的端点的更多信息，请参阅[基于账户的端点](cli-configure-endpoints.md#endpoints-accountid)。  
可以被 `AWS\$1ACCOUNT\$1ID` 环境变量覆盖。`AWS\$1ACCOUNT\$1ID\$1ENDPOINT\$1MODE` 环境变量或 `account\$1id\$1endpoint\$1mode` 设置必须设置为 `preferred` 或 `required`，才能使用此设置。  

```
aws_account_id = 123456789EXAMPLE
```
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`aws_secret_access_key`**  
指定用作凭证一部分的对命令请求进行身份验证的 AWS 私有密钥。虽然它可以存储在 `config` 文件中，但我们建议您将其存储在 `credentials` 文件中。  
可以被 `AWS_SECRET_ACCESS_KEY` 环境变量覆盖。您不能将私有访问密钥指定为命令行选项。  

```
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

**`aws_session_token`**  
指定 AWS 会话令牌。只有在手动指定临时安全凭证时才需要会话令牌。虽然它可以存储在 `config` 文件中，但我们建议您将其存储在 `credentials` 文件中。  
可以被 `AWS_SESSION_TOKEN` 环境变量覆盖。您不能将会话令牌指定为命令行选项。  

```
aws_session_token = AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
```

**`ca_bundle`**  
指定用于验证 SSL 证书的 CA 证书捆绑包（具有 `.pem` 扩展名的文件）。  
可以被 `AWS\$1CA\$1BUNDLE` 环境变量或 `--ca-bundle` 命令行选项覆盖。  

```
ca_bundle = dev/apps/ca-certs/cabundle-2019mar05.pem
```

**`cli_auto_prompt`**  
为 AWS CLI 版本 2 启用自动提示。可以使用两种设置：  
+ **`on`** 每次尝试运行 `aws` 命令时都会使用完整的自动提示模式。这包括在完整或不完整的命令之后按 **ENTER** 键。

  ```
  cli_auto_prompt = on
  ```
+ **`on-partial`** 使用部分自动提示模式。如果命令不完整或由于客户端验证错误而无法运行，则使用自动提示。如果您已有现有脚本、运行手册，或者如果您希望只对于不熟悉的命令收到自动提示，而不是每个命令都收到提示，则此模式将非常有帮助。

  ```
  cli_auto_prompt = on-partial
  ```
您可以使用 `aws\$1cli\$1auto\$1prompt` 环境变量或 `--cli-auto-prompt` 和 `--no-cli-auto-prompt` 命令行参数覆盖此设置。  
有关 AWS CLI 版本 2 自动提示特征的信息，请参阅 [在 AWS CLI 中启用和使用命令提示符](cli-usage-parameters-prompting.md)。

**`cli_binary_format`**  
指定 AWS CLI 版本 2 如何解释二进制输入参数。它可能为下列值之一：  
+ **base64** – 这是默认值。作为二进制大型对象（BLOB）键入的输入参数接受 base64 编码字符串。要传递真实的二进制内容，请将内容放在文件中，并提供文件的路径和名称，将 `fileb://` 前缀作为参数值。要传递文件中包含的 base64 编码文本，请提供文件的路径和名称，并将 `file://` 前缀作为参数值。
+ **raw-in-base64-out** – AWS CLI 版本 1 的默认值。如果设置的值为 `raw-in-base64-out`，则使用 `file://` 前缀引用的文件会作为文本进行读取，然后 AWS CLI 尝试将其编码为二进制。
此条目没有等效的环境变量。您可以使用 `--cli-binary-format raw-in-base64-out` 参数在单个命令上指定此值。  

```
cli_binary_format = raw-in-base64-out
```
如果使用 `fileb://` 前缀表示法引用文件中的二进制值，AWS CLI *始终*希望文件中包含原始二进制内容，并且不会尝试转换该值。  
如果使用 `file://` 前缀表示法引用文件中的二进制值，AWS CLI 会根据当前 `cli_binary_format` 设置来处理此文件。如果该设置的值为 `base64`（未明确设置时的默认值），AWS CLI 希望该文件中包含 base64 编码文本。如果该设置的值为 `raw-in-base64-out`，AWS CLI 希望文件中包含原始二进制内容。

**`cli_help_output`**  
截至版本 `2.31.0`，`help` 命令的显示是通过 `cli_help_output` 设置来配置的，并且具有以下值：  
+  **（默认值）**`terminal`：在终端中打开手册页。
+ `browser`：在默认浏览器中以本地 HTML 文件形式打开手册页。打开默认浏览器时，会在终端上输出一条通知，如果 AWS CLI 无法打开您的浏览器，则会显示一条错误消息。
+ `url`：输出您已安装的 AWS CLI 版本的联机 AWS CLI 参考指南的 URL。采用客户端分页（例如 `AWS_PAGER` 环境变量）的设置。

```
cli_help_output = browser
```
有关 `help` 命令的更多信息，请参阅 [在 AWS CLI 中获取帮助和资源](cli-usage-help.md)。

**`cli_history`**  
默认情况下禁用。此设置启用 AWS CLI 的命令历史记录。启用此设置后，AWS CLI 记录 `aws` 命令的历史记录。  

```
cli_history = enabled
```
您可以使用 `aws history list` 命令列出您的历史记录，然后使用 `aws history show` 命令中生成的 `command_ids` 获取详细信息。有关更多信息，请参阅《AWS CLI 参考指南》**中的 [https://docs.aws.amazon.com/cli/latest/reference/history/index.html](https://docs.aws.amazon.com/cli/latest/reference/history/index.html)。

**`cli_pager`**  
指定用于处理输出的分页程序。默认情况下，AWS CLI 版本 2 会通过操作系统的默认分页程序返回所有输出。  
可以被 AWS\$1PAGER 环境变量覆盖。  

```
cli_pager=less
```

**`cli_timestamp_format`**  
指定时间戳值的输出格式。可以指定以下任一值：  
+ **iso8601** – AWS CLI 版本 2 的默认值。如果指定，AWS CLI 根据 [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) 对输出中的所有时间戳进行重新格式化。ISO 8601 格式的时间戳与以下示例类似。以下示例演示了如何通过用 `T` 分隔日期和时间，并在时间后包含 `Z` 来格式化时间。

  ```
  YYYY-MM-DDThh:mm:ssZ
  ```

  以下示例显示了使用先前格式的时间戳。

  ```
  2024-05-08T15:16:43Z
  ```
+ **wire** – AWS CLI 版本 1 的默认值。如果指定，AWS CLI 按原样显示在 HTTP 查询响应中收到的所有时间戳值。
该设置没有等效的环境变量或命令行选项。此设置不更改时间戳输入，只更改输出格式。  

```
cli_timestamp_format = iso8601
```

**`credential\$1process`**  
指定 AWS CLI 运行的外部命令，以生成或检索用于该命令的身份验证凭证。命令必须以特定格式返回凭证。有关如何使用该设置的更多信息，请参阅[在 AWS CLI 中使用外部进程获取凭证](cli-configure-sourcing-external.md)。  
该条目没有等效的环境变量或命令行选项。  

```
credential_process = /opt/bin/awscreds-retriever --username susan
```

**`credential\$1source`**  
在 Amazon EC2 实例或容器中使用，指定 AWS CLI 在何处可以找到要用于代入通过 `role_arn` 参数指定的角色的凭证。不能在同一配置文件中同时指定 `source_profile` 和 `credential_source`。  
此参数具有三个值：  
+ **Environment** – 指定 AWS CLI 从环境变量检索源凭证。
+ **Ec2InstanceMetadata** – 指定 AWS CLI 将使用附加到 [EC2 实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)的 IAM 角色以获取源凭证。
+ **EcsContainer** – 指定 AWS CLI 将附加到 ECS 容器的 IAM 角色用作源凭证。

```
credential_source = Ec2InstanceMetadata
```

**`duration_seconds`**  
指定角色会话的最大持续时间（以秒为单位）。该值的范围在 900 秒（15 分钟）到角色的最大会话持续时间设置之间。此参数为可选参数，默认情况下，该值设置为 3600 秒。

**`endpoint_url`**  
指定用于所有服务请求的端点。如果在 `config` 文件的 [`services`](#cli-configure-files-format-services) 节中使用此设置，则该端点仅用于指定的服务。有关更多信息，请参阅 [为所有 AWS 服务设置全局端点](cli-configure-endpoints.md#endpoints-global)。  
以下示例使用全局端点 `http://localhost:1234` 和用于 Amazon S3 的特定于服务的端点 `http://localhost:4567`。  

```
[profile dev]
endpoint_url = http://localhost:1234
services = s3-specific

[services s3-specific]
s3 = 
  endpoint_url = http://localhost:4567
```
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`ignore_configure_endpoint_urls`**  
如果启用，则 AWS CLI 会忽略 `config` 文件中指定的所有自定义端点配置。有效值为 `true` 和 `false`。  

```
ignore_configure_endpoint_urls = true
```
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`external\$1id`**  
指定第三方用于在其客户账户中代入角色的唯一标识符。这将映射到 `ExternalId` 操作中的 `AssumeRole` 参数。仅当角色的信任策略为 `ExternalId` 指定值时，才需要此参数。有关更多信息，请参阅《IAM 用户指南》**中的[如何在向第三方授予对 AWS 资源的访问权限时使用外部 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)。

**`max\$1attempts`**  
指定 AWS CLI 重试处理程序使用的最大重试次数值，其中初始调用计入您提供的 `max_attempts` 值。  
您可以使用 `AWS_MAX_ATTEMPTS` 环境变量覆盖此值。  

```
max_attempts = 3
```

**`mfa\$1serial`**  
代入角色时要使用的 MFA 设备的标识号。仅当代入角色的信任策略包含需要 MFA 身份验证的条件，此值才是必需的。该值可以是硬件设备（例如 `GAHT12345678`）的序列号，也可以是虚拟 MFA 设备（例如 `arn:aws:iam::123456789012:mfa/user`）的 Amazon 资源名称（ARN）。

**`output`**  
指定使用该配置文件请求的命令的默认输出格式。您可以指定以下任意值：  
+ **[`json`](cli-usage-output-format.md#json-output)** – 输出采用 [JSON](https://json.org/) 字符串的格式。
+  **[`yaml`](cli-usage-output-format.md#yaml-output)** – 输出采用 [YAML](https://yaml.org/) 字符串的格式。
+ **[`yaml-stream`](cli-usage-output-format.md#yaml-stream-output)** – 输出被流式处理并采用 [YAML](https://yaml.org/) 字符串的格式。串流支持更快地处理大型数据类型。
+ **[`text`](cli-usage-output-format.md#text-output)** – 输出采用多个制表符分隔字符串值行的格式。这对于将输出传递到文本处理器（如 `grep`、`sed` 或 `awk`）很有用。
+ **[`table`](cli-usage-output-format.md#table-output)** – 输出采用表格形式，使用字符 \$1\$1- 以形成单元格边框。它通常以“人性化”格式呈现信息，这种格式比其他格式更容易阅读，但从编程方面来讲不是那么有用。
+ **[`off`](cli-usage-output-format.md#off-output)**：此输出禁止向 stdout 输出所有命令输出。这在自动化脚本和 CI/CD 管道中很有用，在这些管道中，您只需检查命令的退出代码而不处理输出。
可以被 `AWS_DEFAULT_OUTPUT` 环境变量或 `--output` 命令行选项覆盖。  

```
output = table
```

**`parameter_validation`**  
指定 AWS CLI 客户端在将参数发送到 AWS 服务端点之前是否尝试验证参数。  
+ **true** – 这是默认值。指定后，AWS CLI 将执行命令行参数的本地验证。
+ **false** – 如果指定，AWS CLI 在将命令行参数发送到 AWS 服务端点前不对其进行验证。
该条目没有等效的环境变量或命令行选项。  

```
parameter_validation = false
```

**`region`**  
对于使用该配置文件请求的命令，指定要将请求发送到的 AWS 区域。  
+ 您可以指定可用于所选服务的任何区域代码，有关区域代码的列表，请参阅《Amazon Web Services 一般参考》**中的 [AWS 区域和端点](https://docs.aws.amazon.com/general/latest/gr/rande.html)。
+ 通过 `aws_global`，您可以为不仅支持区域端点，还支持全局端点的服务指定全局端点，例如 AWS Security Token Service（AWS STS）和 Amazon Simple Storage Service（Amazon S3）。
您可以使用 `AWS_REGION` 环境变量、`AWS_DEFAULT_REGION` 环境变量或 `--region` 命令行选项覆盖此值。  

```
region = us-west-2
```

**`request_checksum_calculation`**  
指定何时计算请求有效载荷的校验和，并提供以下选项：  
+ `when_supported` –**（默认）**当操作在其服务模型中指定校验和算法或需要请求校验和时，将计算请求有效载荷校验和。
+ `when_required` – 当操作需要请求校验和或用户提供由 AWS 服务 建模的 `requestAlgorithmMember` 时，将计算请求有效载荷校验和。

```
request_checksum_calculation = when_supported
```
环境变量 [`AWS_REQUEST_CHECKSUM_CALCULATION`](cli-configure-envvars.md#envvars-list-AWS_REQUEST_CHECKSUM_CALCULATION) 将覆盖此设置。

**`response_checksum_validation`**  
指定何时对响应有效载荷执行校验和验证，并提供以下选项：  
+ `when_supported` –**（默认）**当操作在其服务模型中指定 AWS CLI 支持的响应算法时，将执行响应有效载荷校验和验证。
+ `when_required`：当操作在其服务模型中指定 AWS CLI 支持的响应算法，并且您在操作输出中将建模的 `requestValidationModeMember` 设置为 `ENABLED` 时，将执行响应有效载荷校验和验证。

```
response_checksum_validation = when_supported
```
环境变量 [`AWS_RESPONSE_CHECKSUM_VALIDATION`](cli-configure-envvars.md#envvars-list-AWS_RESPONSE_CHECKSUM_VALIDATION) 将覆盖此设置。

**`retry\$1mode`**  
指定 AWS CLI 使用哪种重试模式。有三种重试模式可用：`standard`（默认）、`legacy`（默认）和 `adaptive`。有关重试的更多信息，请参阅[AWS CLI 中的 AWS CLI 重试次数](cli-configure-retries.md)。  
您可以使用 `AWS_RETRY_MODE` 环境变量覆盖此值。  

```
retry_mode = standard
```

**`role\$1arn`**  
指定要用于运行 AWS CLI 命令的 IAM 角色的 Amazon 资源名称（ARN）。此外，还必须指定以下参数之一以标识有权代入此角色的凭证：  
+ source\$1profile
+ credential\$1source

```
role_arn = arn:aws:iam::123456789012:role/role-name
```
环境变量 [`AWS_ROLE_ARN`](cli-configure-envvars.md#envvars-list-AWS_ROLE_ARN) 将覆盖此设置。  
有关使用 Web 身份的更多信息，请参阅 [通过 Web 身份代入角色](cli-configure-role.md#cli-configure-role-oidc)。

**`role\$1session\$1name`**  
指定要附加到角色会话的名称。此值在 `RoleSessionName` 调用 AWS CLI 操作时将提供给 `AssumeRole` 参数，并成为代入角色用户 ARN 的一部分：` arn:aws:sts::123456789012:assumed-role/role_name/role_session_name`。此参数为可选参数。如果未提供此值，则将自动生成会话名称。此名称显示在与此会话关联的条目的 AWS CloudTrail 日志中。  

```
role_session_name = maria_garcia_role
```
环境变量 [`AWS_ROLE_SESSION_NAME`](cli-configure-envvars.md#envvars-list-AWS_ROLE_SESSION_NAME) 将覆盖此设置。  
有关使用 Web 身份的更多信息，请参阅 [通过 Web 身份代入角色](cli-configure-role.md#cli-configure-role-oidc)。

**`services`**  
指定要用于您的配置文件的服务配置。  

```
[profile dev-s3-specific-and-global]
endpoint_url = http://localhost:1234
services = s3-specific

[services s3-specific]
s3 = 
  endpoint_url = http://localhost:4567
```
有关更多信息，请参阅 [节类型：`services`](#cli-configure-files-format-services) 中的 `services` 节。  
环境变量 [`AWS_ROLE_SESSION_NAME`](cli-configure-envvars.md#envvars-list-AWS_ROLE_SESSION_NAME) 将覆盖此设置。  
有关使用 Web 身份的更多信息，请参阅 [通过 Web 身份代入角色](cli-configure-role.md#cli-configure-role-oidc)。

**`sdk_ua_app_id`**  
一个 AWS 账户可以供多个客户应用程序来调用 AWS 服务。应用程序 ID 标识哪个源应用程序使用 AWS 服务 进行了一组调用。AWSSDK 和服务不会使用或解释此值，除非将其显示在客户通信中。例如，此值可以包含在操作电子邮件中，以唯一标识您的哪个应用程序与通知相关联。  
应用程序 ID 是一个字符串，最大长度为 50 个字符。允许使用字母、数字和以下特殊字符：`! $ % & * + - . , ^ _ ` | ~`。默认情况下，不分配任何值。  

```
sdk_ua_app_id = prod1
```
使用 [`AWS_SDK_UA_APP_ID`](cli-configure-envvars.md#envvars-list-AWS_SDK_UA_APP_ID) 环境变量可以覆盖此设置。您不能将此值设置为命令行参数。

**`sigv4a_signing_region_set`**  
使用逗号分隔列表指定在通过 SigV4a 进行签名时要使用的区域。如果未设置此变量，AWS CLI 会使用 AWS 服务 所使用的默认值。如果 AWS 服务 没有默认值，则请求签名将使用 `*` 作为值，在所有区域内生效。  

```
sigv4a_signing_region_set = us-west-2, us-east-1
```
有关 SigV4a 的更多信息，请参阅《IAM 用户指南》**中的[适用于 API 请求的 AWS 签名版本 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。  
使用 [`AWS_SIGV4A_SIGNING_REGION_SET`](cli-configure-envvars.md#envvars-list-AWS_SIGV4A_SIGNING_REGION_SET) 环境变量可以覆盖此设置。您不能将此值设置为命令行参数。

**`source\$1profile`**  
指定包含长期凭证的命名配置文件，AWS CLI 可使用这些凭证代入通过 `role_arn` 参数指定的角色。不能在同一配置文件中同时指定 `source_profile` 和 `credential_source`。  

```
source_profile = production-profile
```

**`sso\$1account\$1id`**  
指定 AWS 账户 ID，其中包含的 IAM 角色具有您希望授予关联 IAM Identity Center 用户的权限。  
此设置没有环境变量或命令行选项。  

```
sso_account_id = 123456789012
```

**`sso\$1region` **  
指定包含 AWS 访问门户主机的 AWS 区域。它与默认的 CLI `region` 参数是分开的，并且可以是不同的区域。  
此设置没有环境变量或命令行选项。  

```
sso_region = us_west-2
```

**`sso\$1registration\$1scopes` **  
要为 `sso-session` 授权的范围的逗号分隔列表。范围授权对 IAM Identity Center 持有者令牌授权端点的访问。有效范围是字符串，例如 `sso:account:access`。此设置不适用于遗留的不可刷新配置。  

```
sso_registration_scopes = sso:account:access
```

**`sso\$1role\$1name` **  
指定使用此配置文件时定义用户权限的 IAM 角色的友好名称。  
此设置没有环境变量或命令行选项。  

```
sso_role_name = ReadAccess
```

**`sso\$1start\$1url`**  
指定指向企业的 AWS 访问门户的 URL。AWS CLI 使用此 URL 与 IAM Identity Center 服务建立会话以验证其用户的身份。要查找 AWS 访问门户 URL，请使用下列操作之一：  
+ 打开邀请电子邮件，其中列出了 AWS 访问门户 URL。
+ 通过以下网址打开 AWS IAM Identity Center 控制台：[https://console.aws.amazon.com/singlesignon/](https://console.aws.amazon.com/singlesignon/)。您的设置中将列出 AWS 访问门户 URL。
此设置没有环境变量或命令行选项。  

```
sso_start_url = https://my-sso-portal.awsapps.com/start
```

**`use_dualstack_endpoint`**  
允许使用双堆栈端点发送 AWS 请求。要详细了解支持 IPv4 和 IPv6 流量的双堆栈端点，请参阅 *Amazon Simple Storage Service 用户指南*中的[使用 Amazon S3 双堆栈端点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/dual-stack-endpoints.html)。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 AWS 区域的双堆栈端点，则请求将失败。有效的设置为 `true` 和 `false`。默认情况下，将禁用该功能。有关更多信息，请参阅 [设置成为所有 AWS 服务使用双堆栈端点](cli-configure-endpoints.md#endpoints-dual-stack)。  
 该设置与 `use_accelerate_endpoint` 设置互斥。  
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`use_fips_endpoint`**  
在某些 AWS 区域，部分 AWS 服务提供支持[美国联邦信息处理标准 (FIPS) 140-2](https://aws.amazon.com/compliance/fips/) 的端点。当 AWS 服务支持 FIPS 时，此设置指定 AWS CLI 应使用哪个 FIPS 端点。与标准 AWS 端点不同，FIPS 端点使用符合 FIPS 140-2 的 TLS 软件库。与美国政府有业务来往的企业可能需要使用这些端点。有关更多信息，请参阅[设置成为所有 AWS 服务使用 FIPS 端点](cli-configure-endpoints.md#endpoints-fips)。  
如果启用此设置，但不存在适用于您所在 AWS 区域中的服务的 FIPS 端点，则 AWS 命令可能会失败。在这种情况下，请使用 `--endpoint-url` 选项手动指定要在命令中使用的端点，或者使用[特定于服务的端点](cli-configure-endpoints.md#endpoints-service-specific)。  
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`web\$1identity\$1token\$1file`**  
指定一个文件的路径，该文件包含由身份提供者提供的 OAuth 2.0 访问令牌或 OpenID Connect ID 令牌。AWS CLI 加载此文件的内容，并将其作为 `WebIdentityToken` 参数传递给 `AssumeRoleWithWebIdentity` 操作。  
环境变量 `AWS\$1WEB\$1IDENTITY\$1TOKEN\$1FILE` 将覆盖此设置。  
有关使用 Web 身份的更多信息，请参阅 [通过 Web 身份代入角色](cli-configure-role.md#cli-configure-role-oidc)。

**`tcp_keepalive`**  
指定 AWS CLI 客户端是否使用 TCP keep-alive 数据包。  
该条目没有等效的环境变量或命令行选项。  

```
tcp_keepalive = false
```

### S3 自定义命令设置
<a name="cli-configure-files-s3"></a>

Amazon S3 支持多项配置 AWS CLI 如何执行 Amazon S3 操作的设置。一些设置适用于 `s3api` 和 `s3` 命名空间中的所有 S3 命令。其他的则专门用于抽象常见操作的 S3“自定义”命令，而不仅仅是对 API 操作的一对一映射。`aws s3` 传输命令 `cp`、`sync`、`mv` 和 `rm` 具有可用于控制 S3 传输的其他设置。

可以通过在 `s3` 文件中指定 `config` 嵌套设置来配置所有这些选项。每个设置在其自己的行上缩进。

**注意**  
这些设置完全是可选的。即使不配置这些设置中的任何一个，您也应该能够成功使用 `aws s3` 传输命令。提供这些设置是为了让您能够调整性能或匹配运行这些 `aws s3` 命令的特定环境。

这些设置都在 `config` 文件中的顶层 `s3` 键下设置，如以下 `development` 配置文件示例所示。

```
[profile development]
s3 =
  max_concurrent_requests = 20
  max_queue_size = 10000
  multipart_threshold = 64MB
  multipart_chunksize = 16MB
  max_bandwidth = 50MB/s
  use_accelerate_endpoint = true
  addressing_style = path
```

以下设置适用于 `s3` 或 `s3api` 命名空间中的任何 S3 命令。

**`addressing_style`**  
指定要使用的寻址样式。这将控制存储桶名称是位于主机名还是 URL 中。有效值包括 `path`、`virtual` 和 `auto`。默认值为 `auto`。  
构造 Amazon S3 端点的样式有两种。第一种称为 `virtual`，它将存储桶名称包含为主机名的一部分。例如：`https://bucketname.s3.amazonaws.com`。另一种为 `path` 样式，您将存储桶名称视为 URI 中的路径，例如 `https://s3.amazonaws.com/bucketname`。CLI 中的默认值是使用 `auto`，它尝试尽可能使用 `virtual` 样式，但在需要时回退到 `path` 样式。例如，如果您的存储桶名称与 DNS 不兼容，则存储桶名称不能是主机名的一部分，而必须位于路径中。使用 `auto` 时，CLI 将检测这种情况并自动切换到 `path` 样式。如果将寻址方式设置为 `path`，您必须确保在 AWS CLI 中配置的 AWS 区域与存储桶的区域匹配。

**`payload_signing_enabled`**  
指定是否对 sigv4 负载进行 SHA256 签名。默认情况下，使用 HTTPS 时，将对流式上传（`UploadPart` 和 `PutObject`）禁用该设置。默认情况下，对于流式上传（`UploadPart` 和 `PutObject`），此设置为 `false`，但仅限存在 `ContentMD5`（默认生成）并且端点使用 HTTPS 时。  
如果设置为 true，则 S3 请求接收 SHA256 校验和形式的额外内容验证（替您计算并包含在请求签名中）。如果设置为 false，则不计算校验和。禁用该设置可减少校验和计算产生的性能开销。

**`use_accelerate_endpoint`**  
为所有 `s3` 和 `s3api` 命令使用 Amazon S3 加速端点。默认值为 False。该设置与 `use_dualstack_endpoint` 设置互斥。  
如果设置为 true，AWS CLI 会将所有 Amazon S3 请求定向到 `s3-accelerate.amazonaws.com` 的 `S3 Accelerate` 端点。要使用该端点，您必须让您的存储桶使用 `S3 Accelerate`。使用存储桶寻址的虚拟样式发送所有请求：`my-bucket.s3-accelerate.amazonaws.com`。不会将任何 `ListBuckets`、`CreateBucket` 和 `DeleteBucket ` 请求发送到 S3 加速端点，因为该端点不支持这些操作。如果将任何 `--endpoint-url` 或 `https://s3-accelerate.amazonaws.com` 命令的 `http://s3-accelerate.amazonaws.com` 参数设置为 `s3` 或 `s3api`，也可以设置该行为。

**`use_dualstack_endpoint`**  
支持使用双堆栈端点来发送 `s3` 和 `s3api` 请求。要详细了解支持 IPv4 和 IPv6 流量的双堆栈端点，请参阅 *Amazon Simple Storage Service 用户指南*中的[使用 Amazon S3 双堆栈端点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/dual-stack-endpoints.html)。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 AWS 区域的双堆栈端点，则请求将失败。有效的设置为 `true` 和 `false`。默认情况下，将禁用该功能。有关更多信息，请参阅 [设置成为所有 AWS 服务使用双堆栈端点](cli-configure-endpoints.md#endpoints-dual-stack)。  
 该设置与 `use_accelerate_endpoint` 设置互斥。

以下设置仅适用于 `s3` 命名空间命令集中的命令。

**`max_bandwidth`**  
指定向 Amazon S3 上传数据和从其下载数据可使用的最大带宽。默认为无限制。  
这限制了 S3 命令可用于向 Amazon S3 传输数据和从 Amazon S3 传输数据的最大带宽。该值仅适用于上传和下载；它不适用于复制或删除。值以每秒字节数表示。该值可以指定为：  
+ 一个整数。例如，`1048576` 将最大带宽使用率设置为每秒 1 兆字节。
+ 一个整数，后跟速率后缀。可以使用以下格式指定速率后缀：`KB/s`、`MB/s` 或 `GB/s`。例如，`300KB/s` 和 `10MB/s`。
通常，我们建议您先尝试通过降低 `max_concurrent_requests` 来降低带宽使用率。如果这样做没有充分地将带宽使用率限制到所需速率，您可以使用 `max_bandwidth` 设置进一步限制带宽使用率。这是因为 `max_concurrent_requests` 控制当前运行的线程数。如果您先降低 `max_bandwidth` 但保持较高的 `max_concurrent_requests` 设置，则可能导致线程不得不进行不必要的等待。这可能造成过多的资源消耗和连接超时。

**`max_concurrent_requests`**  
指定最大并发请求数。默认值是 10。  
`aws s3` 传输命令是多线程的。在任意给定时间，都可以运行多个 Amazon S3 请求。例如，当您使用命令 `aws s3 cp localdir s3://bucket/ --recursive` 将文件上传到 S3 存储桶时，AWS CLI 可以并行上传文件 `localdir/file1`、`localdir/file2` 和 `localdir/file3`。设置 `max_concurrent_requests` 指定可同时运行的最大传输操作数。  
您可能由于以下原因而需要更改该值：  
+ 减小该值 – 在某些环境中，默认的 10 个并发请求可能会占用过多的系统资源。这可能导致连接超时或系统响应速度变慢。减小该值可减少 S3 传输命令消耗的资源。但不利后果是 S3 传输可能需要更长时间才能完成。如果使用了限制带宽的工具，则可能需要减小该值。
+ 增大该值 – 在某些情况下，您可能希望 Amazon S3 传输根据需要使用尽可能多的网络带宽，以尽可能快地完成任务。在这种情况下，默认的并发请求数可能不足以使用所有可用的网络带宽。增大该值可缩短完成 Amazon S3 传输所需的时间。

**`max_queue_size`**  
指定作业队列中的最大任务数。默认值是 1000。  
AWS CLI 在内部使用这样一种模型：将 Amazon S3 任务排队，然后由数量受 `max_concurrent_requests` 限制的使用者执行。任务通常映射到单个 Amazon S3 操作。例如，任务可以是 `PutObjectTask`、`GetObjectTask` 或 `UploadPartTask`。任务添加到队列的速度可能比使用者完成任务的速度快得多。为避免无限制增长，作业队列大小设置了特定大小的上限。该设置用于更改该最大数量的值。  
您通常不需要更改该设置。该设置还对应于 AWS CLI 知道需要运行的任务数。这意味着，默认情况下 AWS CLI 只能查看前 1000 个任务。增大该值意味着 AWS CLI 可更快得知所需任务的总数（假设排队速度快于任务完成速度）。但不利后果是更大的 max\$1queue\$1size 需要更多的内存。

**`multipart_chunksize`**  
指定 AWS CLI 用于单个文件的分段传输的块大小。默认值为 8 MB，最少为 5 MB。  
当文件传输超出 `multipart_threshold` 时，AWS CLI 将文件分成该大小的块。可以使用与 `multipart_threshold` 相同的语法指定该值，即整数形式的字节数，或使用大小和后缀。

**`multipart_threshold`**  
指定 AWS CLI 用于单个文件的分段传输的大小阈值。默认值为 8 MB。  
上传、下载或复制文件时，如果文件超出该大小，Amazon S3 命令将切换到分段操作。您可以通过以下两种方式之一指定该值：  
+ 文件大小（以字节为单位）。例如：`1048576`。
+ 文件大小及大小后缀。您可以使用 `KB`、`MB`、`GB` 或 `TB`。例如，`10MB`、`1GB`。
**注意**  
S3 可能会对可用于分段操作的有效值施加约束。有关更多信息，请参阅 *Amazon Simple Storage Service 用户指南*中的 [S3 分段上传文档](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)。

# 为 AWS CLI 配置环境变量
<a name="cli-configure-envvars"></a>

环境变量提供了另一种指定配置选项和凭证的方法并且可用于编写脚本。

**选项的优先顺序**
+ 如果您使用本主题中描述的某个环境变量指定选项，则它将在配置文件中覆盖从配置文件加载的任何值。
+ 如果您通过在 AWS CLI 命令行上使用参数指定选项，则它将在配置文件中覆盖相应环境变量或配置文件中的任何值。

有关优先顺序以及 AWS CLI 如何确定使用哪些凭证的更多信息，请参阅[配置 AWS CLI 设置](cli-chap-configure.md)。

**Topics**
+ [如何设置环境变量](#envvars-set)
+ [AWS CLI 支持的环境变量](#envvars-list)

## 如何设置环境变量
<a name="envvars-set"></a>

下面的示例介绍您如何可以为默认用户配置环境变量。

------
#### [ Linux or macOS ]

```
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_DEFAULT_REGION=us-west-2
```

设置环境变量会更改使用的值，直到 Shell 会话结束或直到您将该变量设置为其他值。通过在 shell 的启动脚本中设置变量，可使变量在未来的会话中继续有效。

------
#### [ Windows Command Prompt ]

**为所有会话设置**

```
C:\> setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE
C:\> setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> setx AWS_DEFAULT_REGION us-west-2
```

使用 [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx) 设置环境变量会更改当前命令提示符会话和运行该命令后创建的所有命令提示符会话中使用的值。它***不*** 影响在运行该命令时已经运行的其他命令 shell。您可能需要重启终端来加载设置。

**仅为当前会话设置**

使用 `[set](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)` 设置环境变量会更改使用的值，直到当前命令提示符会话结束，或者直到您将该变量设置为其他值。

```
C:\> set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
C:\> set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> set AWS_DEFAULT_REGION=us-west-2
```

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

```
PS C:\> $Env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
PS C:\> $Env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
PS C:\> $Env:AWS_DEFAULT_REGION="us-west-2"
```

如果在 PowerShell 提示符下设置环境变量（如前面的示例所示），则仅保存当前会话持续时间的值。要在所有 PowerShell 和命令提示符会话中使环境变量设置保持不变，请使用**控制面板**中的**系统**应用程序来存储该变量。或者，您可以通过将其添加到 PowerShell 配置文件来为将来的所有 PowerShell 会话设置该变量。有关存储环境变量或跨会话保存它们的更多信息，请参阅 [PowerShell 文档](https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_environment_variables)。

------

## AWS CLI 支持的环境变量
<a name="envvars-list"></a>

AWS CLI 支持以下环境变量。

**`AWS_ACCESS_KEY_ID`**  
指定与 IAM 账户关联的 AWS 访问密钥。  
如果已定义此环境变量，它将覆盖配置文件设置 `aws_access_key_id` 的值。您不能使用命令行选项来指定访问密钥 ID。

**`AWS_ACCOUNT_ID`**  
指定要用于调用受支持的 AWS 服务的基于 AWS 账户的端点 ID。有关基于账户的端点的更多信息，请参阅[基于账户的端点](cli-configure-endpoints.md#endpoints-accountid)。  
该设置会覆盖 `aws\$1account\$1id` 设置。`AWS\$1ACCOUNT\$1ID\$1ENDPOINT\$1MODE` 环境变量或 `account\$1id\$1endpoint\$1mode` 设置必须设置为 `preferred` 或 `required`，才能使用此设置。  
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`AWS_ACCOUNT_ID_ENDPOINT_MODE`**  
指定是否使用基于 AWS 账户的端点 ID 来调用受支持的 AWS 服务。有关基于账户的端点的更多信息，请参阅[基于账户的端点](cli-configure-endpoints.md#endpoints-accountid)。  
此设置可以设为以下值：  
+ **（默认）****`preferred`**：端点应包含账户 ID（如果有）。
+ **`disabled`**：已解析的端点不包含账户 ID。
+ **`required`**：端点必须包含账户 ID。如果账户 ID 不可用，SDK 会引发错误。
该设置会覆盖 `account\$1id\$1endpoint\$1mode` 设置。要使用基于账户的端点，必须在 `AWS\$1ACCOUNT\$1ID` 环境变量或 `aws\$1account\$1id` 设置中设置 ID。  
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`AWS_CA_BUNDLE`**  
指定要用于 HTTPS 证书验证的证书捆绑包的路径。  
如果已定义此环境变量，它将覆盖配置文件设置 `ca\$1bundle` 的值。您可以使用 `--ca-bundle` 命令行参数覆盖此环境变量。

**`AWS_CLI_AUTO_PROMPT`**  
为 AWS CLI 版本 2 启用自动提示。可以使用两种设置：  
+ **`on`** 每次尝试运行 `aws` 命令时都会使用完整的自动提示模式。这包括在完整或不完整的命令之后按 **ENTER** 键。
+ **`on-partial`** 使用部分自动提示模式。如果命令不完整或由于客户端验证错误而无法运行，则使用自动提示。如果您已经拥有脚本、运行手册，或者如果您希望仅针对不熟悉的命令，而不是针对每个命令都收到自动提示，则此模式很有用。
如果已定义此环境变量，它将覆盖 `cli\$1auto\$1prompt` 配置文件设置的值。您可以使用 `--cli-auto-prompt` 和 `--no-cli-auto-prompt` 命令行参数覆盖此环境变量。  
有关 AWS CLI 版本 2 自动提示功能的信息，请参阅 [在 AWS CLI 中启用和使用命令提示符](cli-usage-parameters-prompting.md)。

**`AWS_CLI_FILE_ENCODING`**  
指定用于文本文件的编码。默认情况下，编码与您的区域设置匹配。要设置与区域设置不同的编码，请使用 `aws_cli_file_encoding` 环境变量。例如，如果您使用 Windows 以及默认编码 `CP1252`，则 `aws_cli_file_encoding=UTF-8` 设置会将 CLI 设置为使用 `UTF-8` 打开文本文件。

**`AWS_CLI_HISTORY_FILE`**  
启用 `cli_history` 功能后，覆盖用于存储命令历史记录的默认位置。默认路径为 `~/.aws/cli/history/history.db`。您可以使用此变量来指定备用存储位置。

**`AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS`**  
如果在使用 `s3 mv` 命令时源存储桶和目标存储桶相同，则可以将源文件或对象移到其自身上，这可能导致源文件或对象被意外删除。`AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS` 环境变量和 `--validate-same-s3-paths` 选项指定是验证接入点 ARN 还是验证您的 Amazon S3 源或目标 URI 中的接入点别名。  
针对 `s3 mv` 的路径验证需要额外的 API 调用。

**`AWS_CONFIG_FILE`**  
指定 AWS CLI 用于存储配置文件的文件的位置。默认路径为 `~/.aws/config`。  
您不能在命名配置文件设置中或使用命令行参数来指定此值。

**`AWS_DATA_PATH`**  
加载 AWS CLI 数据时要在 `~/.aws/models` 的内置搜索路径之外检查的其他目录的列表。设置此环境变量将指示在回滚到内置搜索路径前要先检查的其他目录。应使用 `os.pathsep` 字符（在 Linux 上为 `:`，在 Windows 上为 `;`）隔开多个条目。

**`AWS_DEFAULT_OUTPUT`**  
指定要使用的[输出格式](cli-usage-output.md)。  
如果已定义此环境变量，它将覆盖配置文件设置 `output` 的值。您可以使用 `--output` 命令行参数覆盖此环境变量。

**`AWS_DEFAULT_REGION`**  
`Default region name` 标识默认情况下您要将请求发送到的服务器所在的 AWS 区域。通常是离您最近的区域，但可以是任意区域。例如，您可以键入 `us-west-2` 以使用美国西部（俄勒冈）。除非在命令中另行指定，否则这是所有后续请求将发送到的区域。  
使用 AWS 时，必须明确指定或通过设置原定设置区域来指定 AWS CLI 区域。有关可用区域的列表，请参阅[区域和端点](https://docs.aws.amazon.com/general/latest/gr/rande.html)。AWS CLI 使用的区域指示符与您在 AWS 管理控制台 URL 和服务端点中看到的名称相同。
如果已定义此环境变量，它将覆盖 `region` 配置文件设置的值。您可以使用 `--region` 命令行参数以及与 AWS SDK 兼容的 `AWS_REGION` 环境变量来覆盖此环境变量。

**`AWS_EC2_METADATA_DISABLED`**  
禁用 Amazon EC2 实例元数据服务（IMDS）。  
如果设置为 true，则不会从 IMDS 请求用户凭证或配置（如区域）。

**`AWS_ENDPOINT_URL`**  
指定用于所有服务请求的端点。有关更多信息，请参阅 [为所有 AWS 服务设置全局端点](cli-configure-endpoints.md#endpoints-global)。  
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`AWS_ENDPOINT_URL_<SERVICE>`**  
指定用于特定服务的自定义端点，在该服务中 `<SERVICE>` 替换为 AWS 服务 标识符。例如，Amazon DynamoDB 具有 [https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/dynamodb/2012-08-10/service-2.json#L10](https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/dynamodb/2012-08-10/service-2.json#L10) 的 `serviceId`。对于此服务，端点 URL 环境变量为 `AWS_ENDPOINT_URL_DYNAMODB`。  
有关特定于服务的所有环境变量的列表，请参阅[特定于服务的标识符列表](cli-configure-endpoints.md#endpoints-service-specific-table)。  
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`AWS_IGNORE_CONFIGURED_ENDPOINT_URLS`**  
如果启用，则 AWS CLI 将忽略所有自定义端点配置。有效值为 `true` 和 `false`。有关更多信息，请参阅 [为所有 AWS 服务设置全局端点](cli-configure-endpoints.md#endpoints-global)。  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。有关端点优先级，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。  
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**[`AWS_MAX_ATTEMPTS`](cli-configure-files.md#cli-config-max_attempts)**  
指定 AWS CLI 重试处理程序使用的最大重试次数值，其中初始调用计入您提供的值。有关重试的更多信息，请参阅[AWS CLI 中的 AWS CLI 重试次数](cli-configure-retries.md)。  
如果已定义此环境变量，它将覆盖配置文件设置 `max_attempts` 的值。

**`AWS_METADATA_SERVICE_NUM_ATTEMPTS`**  
尝试在已配置 IAM 角色的 Amazon EC2 实例上检索凭证时，AWS CLI 会在停止前尝试从实例元数据服务检索一次凭证。如果您知道您的命令将在 Amazon EC2 实例上运行，则可增大此值，以使 AWS CLI 在放弃前重试多次。

**`AWS_METADATA_SERVICE_TIMEOUT`**  
与实例元数据服务的连接超时前等待的秒数。尝试在已配置 IAM 角色的 Amazon EC2 实例上检索凭证时，默认情况下，与实例元数据服务的连接将在 1 秒后超时。如果您知道您正在已配置 IAM 角色的 Amazon EC2 实例上运行，如有必要，可增大此值。

**[`AWS_PAGER`](cli-configure-files.md#cli-config-cli_pager)**  
指定用于处理输出的分页程序。预设情况下，AWS CLI 版本 2 会通过操作系统的原定设置分页程序返回所有输出。  
要完全禁用外部分页程序，请将该变量设置为空字符串。  
如果已定义此环境变量，它将覆盖配置文件设置 `cli_pager` 的值。

**[`AWS_PROFILE`](cli-configure-files.md#cli-configure-files-using-profiles)**  
指定包含要使用的凭证和选项的 AWS CLI 配置文件的名称。可以是存储在 `credentials` 或 `config` 文件中的配置文件的名称，也可以是值 `default`，后者使用默认配置文件。  
如果您定义了此环境变量，它将在配置文件中覆盖使用名为 `[default]` 的配置文件的行为。您可以使用 `--profile` 命令行参数覆盖此环境变量。

**`AWS_REGION`**  
与 AWS SDK 兼容的环境变量，它指定要将请求发送到的 AWS 区域。  
如果已定义此环境变量，它将覆盖环境变量 `AWS_DEFAULT_REGION` 和配置文件设置 `region` 中的值。您可以使用 `--region` 命令行参数覆盖此环境变量。

**`AWS_REQUEST_CHECKSUM_CALCULATION`**  
指定何时计算请求有效载荷的校验和，并提供以下选项：  
+ `when_supported` –**（默认）**当操作在其服务模型中指定校验和算法或需要请求校验和时，将计算请求有效载荷校验和。
+ `when_required` – 当操作需要请求校验和或用户提供由 AWS 服务 建模的 `requestAlgorithmMember` 时，将计算请求有效载荷校验和。
如果已定义此环境变量，它将覆盖配置文件设置 [`request_checksum_calculation`](cli-configure-files.md#cli-config-request_checksum_calculation) 的值。

**`AWS_RESPONSE_CHECKSUM_VALIDATION`**  
指定何时对响应有效载荷执行校验和验证，并提供以下选项：  
+ `when_supported` –**（默认）**当操作在其服务模型中指定 AWS CLI 支持的响应算法时，将执行响应有效载荷校验和验证。
+ `when_required`：当操作在其服务模型中指定 AWS CLI 支持的响应算法，并且您在操作输出中将建模的 `requestValidationModeMember` 设置为 `ENABLED` 时，将执行响应有效载荷校验和验证。
如果已定义此环境变量，它将覆盖配置文件设置 [`response_checksum_validation`](cli-configure-files.md#cli-config-response_checksum_validation) 的值。

**[`AWS_RETRY_MODE`](cli-configure-files.md#cli-config-retry_mode)**  
指定 AWS CLI 使用哪种重试模式。有三种重试模式可用：旧模式（默认模式）、标准模式和自适应模式。有关重试的更多信息，请参阅[AWS CLI 中的 AWS CLI 重试次数](cli-configure-retries.md)。  
如果已定义此环境变量，它将覆盖配置文件设置 `retry_mode` 的值。

**`AWS_ROLE_ARN`**  
指定要用于运行 AWS CLI 命令的 IAM 角色的 Amazon Resource Name（ARN）以及 Web 身份提供者。  
结合使用 `AWS_WEB_IDENTITY_TOKEN_FILE` 和 `AWS_ROLE_SESSION_NAME` 环境变量。  
如果已定义此环境变量，它将覆盖配置文件设置 [`role_arn`](cli-configure-files.md#cli-config-role_arn) 的值。不能将角色会话名称指定为命令行参数。  
此环境变量仅适用于使用 Web 身份提供者的代入角色，而不适用于常规代入角色提供商配置。
有关使用 Web 身份的更多信息，请参阅 [通过 Web 身份代入角色](cli-configure-role.md#cli-configure-role-oidc)。

**`AWS_ROLE_SESSION_NAME`**  
指定要附加到角色会话的名称。此值在 `RoleSessionName` 调用 AWS CLI 操作时将提供给 `AssumeRole` 参数，并成为代入角色用户 ARN 的一部分：` arn:aws:sts::123456789012:assumed-role/role_name/role_session_name`。此参数为可选参数。如果未提供此值，则将自动生成会话名称。此名称显示在与此会话关联的条目的 AWS CloudTrail 日志中。  
如果已定义此环境变量，它将覆盖配置文件设置 [`role_session_name`](cli-configure-files.md#cli-config-role_session_name) 的值。  
结合使用 `AWS_ROLE_ARN` 和 `AWS_WEB_IDENTITY_TOKEN_FILE` 环境变量。  
有关使用 Web 身份的更多信息，请参阅 [通过 Web 身份代入角色](cli-configure-role.md#cli-configure-role-oidc)。  
此环境变量仅适用于使用 Web 身份提供者的代入角色，而不适用于常规代入角色提供商配置。

**`AWS_SDK_UA_APP_ID`**  
一个 AWS 账户可以供多个客户应用程序来调用 AWS 服务。应用程序 ID 标识哪个源应用程序使用 AWS 服务 进行了一组调用。AWSSDK 和服务不会使用或解释此值，除非将其显示在客户通信中。例如，此值可以包含在操作电子邮件中，以唯一标识您的哪个应用程序与通知相关联。  
默认情况下，没有值。  
应用程序 ID 是一个字符串，最大长度为 50 个字符。允许使用字母、数字和以下特殊字符：  

```
! $ % & * + - . , ^ _ ` | ~
```
如果已定义此环境变量，它将覆盖配置文件设置 [`sdk_ua_app_id`](cli-configure-files.md#cli-config-sdk_ua_app_id) 的值。您不能将应用程序 ID 指定为命令行选项。

**`AWS_SECRET_ACCESS_KEY`**  
指定与访问密钥关联的私有密钥。这基本上是访问密钥的“密码”。  
如果已定义此环境变量，它将覆盖配置文件设置 `aws_secret_access_key` 的值。您不能将秘密访问密钥 ID 指定为命令行选项。

**`AWS_SESSION_TOKEN`**  
指定在使用您直接从 AWS STS 操作中检索的临时安全凭证时需要的会话令牌值。有关更多信息，请参阅 *AWS CLI 命令引用*中的[代入角色命令的输出部分](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html#output)。  
如果已定义此环境变量，它将覆盖配置文件设置 `aws_session_token` 的值。

**`AWS_SHARED_CREDENTIALS_FILE`**  
指定 AWS CLI 用于存储访问密钥的文件的位置。默认路径为 `~/.aws/credentials`。  
您不能在命名配置文件设置中或使用命令行参数来指定此值。

**`AWS_SIGV4A_SIGNING_REGION_SET`**  
使用逗号分隔列表指定在通过 SigV4a 进行签名时要使用的区域。如果未设置此变量，AWS CLI 会使用 AWS 服务 所使用的默认值。如果 AWS 服务 没有默认值，则请求签名将使用 `*` 作为值，在所有区域内生效。  
有关 SigV4a 的更多信息，请参阅《IAM 用户指南》**中的[适用于 API 请求的 AWS 签名版本 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。  
如果已定义此环境变量，它将覆盖配置文件设置 [`sigv4a_signing_region_set`](cli-configure-files.md#cli-config-sigv4a_signing_region_set) 的值。

**`AWS_USE_DUALSTACK_ENDPOINT`**  
允许使用双堆栈端点发送 AWS 请求。要详细了解支持 IPv4 和 IPv6 流量的双堆栈端点，请参阅 *Amazon Simple Storage Service 用户指南*中的[使用 Amazon S3 双堆栈端点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/dual-stack-endpoints.html)。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 AWS 区域的双堆栈端点，则请求将失败。默认情况下，将禁用该功能。有关更多信息，请参阅 [设置成为所有 AWS 服务使用双堆栈端点](cli-configure-endpoints.md#endpoints-dual-stack)。  
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**`AWS_USE_FIPS_ENDPOINT`**  
在某些 AWS 区域，部分 AWS 服务提供支持[美国联邦信息处理标准 (FIPS) 140-2](https://aws.amazon.com/compliance/fips/) 的端点。当 AWS 服务支持 FIPS 时，此设置指定 AWS CLI 应使用哪个 FIPS 端点。与标准 AWS 端点不同，FIPS 端点使用符合 FIPS 140-2 的 TLS 软件库。与美国政府有业务来往的企业可能需要使用这些端点。有关更多信息，请参阅[设置成为所有 AWS 服务使用 FIPS 端点](cli-configure-endpoints.md#endpoints-fips)。  
如果启用此设置，但不存在适用于您所在 AWS 区域中的服务的 FIPS 端点，则 AWS 命令可能会失败。在这种情况下，请使用 `--endpoint-url` 选项手动指定要在命令中使用的端点，或者使用[特定于服务的端点](cli-configure-endpoints.md#endpoints-service-specific)。  
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**[`AWS_WEB_IDENTITY_TOKEN_FILE`](#cli-configure-envvars)**  
指定一个文件的路径，该文件包含由身份提供者提供的 OAuth 2.0 访问令牌或 OpenID Connect ID 令牌。AWS CLI 加载此文件的内容，并将其作为 `WebIdentityToken` 参数传递给 `AssumeRoleWithWebIdentity` 操作。  
结合使用 `AWS_ROLE_ARN` 和 `AWS_ROLE_SESSION_NAME` 环境变量。  
如果已定义此环境变量，它将覆盖配置文件设置 `web_identity_token_file` 的值。  
有关使用 Web 身份的更多信息，请参阅 [通过 Web 身份代入角色](cli-configure-role.md#cli-configure-role-oidc)。  
此环境变量仅适用于使用 Web 身份提供者的代入角色，而不适用于常规代入角色提供商配置。

# AWS CLI 中的命令行选项
<a name="cli-configure-options"></a>

在 AWS CLI 中，命令行选项是您可用来覆盖该单个命令的默认设置配置设置、任何相应的配置文件设置或环境变量设置的全局参数。虽然您可以指定要使用的配置文件，但无法使用命令行选项直接指定凭证。

**Topics**
+ [如何使用命令行选项](#cli-configure-options-how)
+ [AWS CLI 支持的全局命令行选项](#cli-configure-options-list)
+ [命令行选项的常见用法](#cli-configure-options-common)

## 如何使用命令行选项
<a name="cli-configure-options-how"></a>

大多数命令行选项都是简单的字符串，例如，以下示例中的配置文件名 `profile1`：

```
$ aws s3 ls --profile profile1
amzn-s3-demo-bucket1
amzn-s3-demo-bucket2
...
```

每个带参数的选项都需要一个空格或等号 (=) 将参数与选项名称分开。如果参数值为包含空格的字符串，则必须使用引号将参数引起来。有关参数类型和参数格式的详细信息，请参阅 [在 AWS CLI 中指定参数值](cli-usage-parameters.md)。

## AWS CLI 支持的全局命令行选项
<a name="cli-configure-options-list"></a>

在 AWS CLI 中，您可以使用以下命令行选项来覆盖该单个命令的原定设置配置设置、任何相应的配置文件设置或环境变量设置。

**--ca-bundle *<string>***  
指定验证 SSL 证书时要使用的证书颁发机构 (CA) 证书捆绑包。  
如果已定义，此选项将覆盖配置文件设置 `ca\$1bundle` 和 `AWS\$1CA\$1BUNDLE` 环境变量的值。

**--cli-auto-prompt**  
为单个命令启用自动提示模式。如以下示例所示，您可以随时指定它。  

```
$ aws --cli-auto-prompt
$ aws dynamodb --cli-auto-prompt
$ aws dynamodb describe-table --cli-auto-prompt
```
此选项将覆盖 `aws\$1cli\$1auto\$1prompt` 环境变量和 `cli\$1auto\$1prompt` 配置文件设置。  
有关 AWS CLI 版本 2 自动提示功能的信息，请参阅 [在 AWS CLI 中启用和使用命令提示符](cli-usage-parameters-prompting.md)。

**--cli-binary-format**  
指定 AWS CLI 版本 2 如何解释二进制输入参数。它可能为下列值之一：  
+ **base64** – 这是默认值。作为二进制大型对象（BLOB）键入的输入参数接受 base64 编码字符串。要传递真实的二进制内容，请将内容放在文件中，并提供文件的路径和名称，将 `fileb://` 前缀作为参数值。要传递文件中包含的 base64 编码文本，请提供文件的路径和名称，并将 `file://` 前缀作为参数值。
+ **raw-in-base64-out** – AWS CLI 版本 1 的默认值。如果设置的值为 `raw-in-base64-out`，则使用 `file://` 前缀引用的文件会作为文本进行读取，然后 AWS CLI 尝试将其编码为二进制。
这将覆盖 `cli\$1binary\$1format` 文件配置设置。  

```
$ aws lambda invoke \
    --cli-binary-format raw-in-base64-out \
    --function-name my-function \
    --invocation-type Event \
    --payload '{ "name": "Bob" }' \
    response.json
```
如果使用 `fileb://` 前缀表示法引用文件中的二进制值，AWS CLI *始终* 希望文件中包含原始二进制内容，并且不会尝试转换该值。  
如果使用 `file://` 前缀表示法引用文件中的二进制值，AWS CLI 会根据当前 `cli_binary_format` 设置来处理此文件。如果该设置的值为 `base64`（未明确设置时的默认值），AWS CLI 希望该文件中包含 base64 编码文本。如果该设置的值为 `raw-in-base64-out`，AWS CLI 希望文件中包含原始二进制内容。

**--cli-connect-timeout *<integer>***  
指定最大套接字连接时间（以秒为单位）。如果该值设置为零 (0)，则套接字连接将无限等待（阻塞），不会超时。默认值为 60 秒。

**--cli-read-timeout *<integer>***  
指定最大套接字读取时间（以秒为单位）。如果该值设置为零 (0)，则套接字读取将无限等待（阻塞），不会超时。默认值为 60 秒。

**--color *<string>***  
指定对彩色输出的支持。有效值包括 `on`、`off` 和 `auto`。原设定值为 `auto`。

**--debug**  
启用调试日志记录的布尔开关。默认情况下，AWS CLI 提供有关命令输出中命令结果的任何成功或失败的清理信息。`--debug` 选项提供完整的 Python 日志。这包括有关命令操作的额外 `stderr` 诊断信息，这些信息在排查命令提供意外结果的原因时非常有用。为了轻松查看调试日志，我们建议将日志发送到文件，这样可以更轻松地搜索信息。您可以使用以下方法之一实现这一点。  
要**仅**发送 `stderr` 诊断信息，请附加 `2> debug.txt`，其中 `debug.txt` 是您要用于调试文件的名称：  

```
$ aws servicename commandname options --debug 2> debug.txt
```
要**同时**发送输出信息和 `stderr` 诊断信息，请附加 `&> debug.txt`，其中 `debug.txt` 是您要用于调试文件的名称：  

```
$ aws servicename commandname options --debug &> debug.txt
```

**--endpoint-url *<string>***  
指定要将请求发送到的 URL。对于大多数命令，AWS CLI 会根据所选服务和指定的 AWS 区域自动确定 URL。但是，某些命令需要您指定账户专用 URL。您还可以配置一些 AWS 服务[直接在您的私有 VPC 中托管端点](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html#what-is-privatelink)（然后可能需要指定该端点）。  
以下命令示例使用自定义 Amazon S3 端点 URL。  

```
$ aws s3 ls --endpoint-url http://localhost:4567
```
**端点优先级**  
端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置，并使用优先级最高的端点设置。有关端点优先级列表，请参阅[端点配置和设置优先级](cli-configure-endpoints.md#endpoints-precedence)。

**--no-cli-auto-prompt**  
禁用单个命令的自动提示模式。  

```
$ aws dynamodb describe-table --table-name Table1 --no-cli-auto-prompt
```
此选项将覆盖 `aws\$1cli\$1auto\$1prompt` 环境变量和 `cli\$1auto\$1prompt` 配置文件设置。  
有关 AWS CLI 版本 2 自动提示功能的信息，请参阅 [在 AWS CLI 中启用和使用命令提示符](cli-usage-parameters-prompting.md)。

**--no-cli-pager**  
一个布尔开关，它对命令输出禁用分页程序。

**--no-paginate**  
一个布尔开关，它禁用多次调用，AWS CLI 自动发出这些调用来接收创建输出分页的所有命令结果。这意味着只显示您的输出的第一页。

**--no-sign-request**  
对 AWS 服务端点的 HTTP 请求禁用签名的布尔开关。这可避免加载凭证。

**--no-verify-ssl**  
默认情况下，AWS CLI 在与 AWS 服务通信时使用 SSL。对于每个 SSL 连接和调用，AWS CLI 都会验证 SSL 证书。使用此选项会覆盖验证 SSL 证书的默认行为。  
此选项**不是** 最佳做法。如果您使用 `--no-verify-ssl`，则您的客户端和 AWS 服务之间的流量将不再受到保护。这意味着您的流量存在安全风险，容易受到中间人攻击。如果您遇到证书问题，最好解决这些问题。有关证书故障排除步骤，请参阅 [SSL 证书错误](cli-chap-troubleshooting.md#tshoot-certificate-verify-failed)。

**--output *<string>***  
指定用于该命令的输出格式。您可以指定以下任意值：  
+ **[`json`](cli-usage-output-format.md#json-output)** – 输出采用 [JSON](https://json.org/) 字符串的格式。
+  **[`yaml`](cli-usage-output-format.md#yaml-output)** – 输出采用 [YAML](https://yaml.org/) 字符串的格式。
+ **[`yaml-stream`](cli-usage-output-format.md#yaml-stream-output)** – 输出被流式处理并采用 [YAML](https://yaml.org/) 字符串的格式。串流支持更快地处理大型数据类型。
+ **[`text`](cli-usage-output-format.md#text-output)** – 输出采用多个制表符分隔字符串值行的格式。这对于将输出传递到文本处理器（如 `grep`、`sed` 或 `awk`）很有用。
+ **[`table`](cli-usage-output-format.md#table-output)** – 输出采用表格形式，使用字符 \$1\$1- 以形成单元格边框。它通常以“人性化”格式呈现信息，这种格式比其他格式更容易阅读，但从编程方面来讲不是那么有用。
+ **[`off`](cli-usage-output-format.md#off-output)**：此输出禁止向 stdout 输出所有命令输出。这在自动化脚本和 CI/CD 管道中很有用，在这些管道中，您只需检查命令的退出代码而不处理输出。

**--profile *<string>***  
指定用于该命令的[命名配置文件](cli-configure-files.md#cli-configure-files-using-profiles)。要设置其他命名配置文件，可以在 `aws configure` 命令中使用 `--profile` 选项。  

```
$ aws configure --profile <profilename>
```

**--query *<string>***  
指定用于筛选响应数据的 [JMESPath 查询](https://jmespath.org/)。有关更多信息，请参阅 [在 AWS CLI 中筛选输出](cli-usage-filter.md)。

**--region *<string>***  
指定要将该命令的 AWS 请求发送到的 AWS 区域。有关您可以指定的所有区域的列表，请参阅《Amazon Web Services 一般参考》**中的 [AWS 区域和端点](https://docs.aws.amazon.com/general/latest/gr/rande.html)。

**--version**  
显示正在运行的 AWS CLI 程序的当前版本的布尔开关。

## 命令行选项的常见用法
<a name="cli-configure-options-common"></a>

常见的命令行选项用法包括在编写脚本时检查多个 AWS 区域中的资源，以及更改输出格式使其易于阅读或使用。在以下示例中，我们对每个区域运行 **describe-instances** 命令，直到我们找到实例所在的区域。

```
$ aws ec2 describe-instances --output table --region us-west-1
-------------------
|DescribeInstances|
+-----------------+
$ aws ec2 describe-instances --output table --region us-west-2
------------------------------------------------------------------------------
|                              DescribeInstances                             |
+----------------------------------------------------------------------------+
||                               Reservations                               ||
|+-------------------------------------+------------------------------------+|
||  OwnerId                            |  012345678901                      ||
||  ReservationId                      |  r-abcdefgh                        ||
|+-------------------------------------+------------------------------------+|
|||                                Instances                               |||
||+------------------------+-----------------------------------------------+||
|||  AmiLaunchIndex        |  0                                            |||
|||  Architecture          |  x86_64                                       |||
...
```

# 在 AWS CLI 中配置命令完成
<a name="cli-configure-completion"></a>

AWS Command Line Interface（AWS CLI）包含一个与 Bash 兼容的命令完成功能，让您可以使用 **Tab** 键完成部分输入的命令。在大多数系统上，您需要手动配置此功能。

有关 AWS CLI 版本 2 自动提示功能的信息，请改为参阅 [在 AWS CLI 中启用和使用命令提示符](cli-usage-parameters-prompting.md)。

**Topics**
+ [工作原理](#cli-command-completion-about)
+ [在 Linux 或 macOS 上配置命令完成](#cli-command-completion-linux)
+ [在 Windows 上配置命令完成](#cli-command-completion-windows)

## 工作原理
<a name="cli-command-completion-about"></a>

当您部分输入命令、参数或选项时，命令完成功能会自动完成您的命令或显示建议的命令列表。要提示命令完成，请输入命令的一部分并按完成键（在大多数 Shell 中，它通常为 *Tab* 键）。

以下示例显示了可以使用命令完成的不同方法：
+ 部分输入命令，然后按 *Tab* 键以显示建议的命令列表。

  ```
  $ aws dynamodb dTAB
  delete-backup                        describe-global-table
  delete-item                          describe-global-table-settings
  delete-table                         describe-limits
  describe-backup                      describe-table
  describe-continuous-backups          describe-table-replica-auto-scaling
  describe-contributor-insights        describe-time-to-live
  describe-endpoints
  ```
+ 部分输入参数，然后按 *Tab* 键显示建议的参数列表。

  ```
  $ aws dynamodb delete-table --TAB
  --ca-bundle              --endpoint-url           --profile              
  --cli-connect-timeout    --generate-cli-skeleton  --query                
  --cli-input-json         --no-paginate            --region               
  --cli-read-timeout       --no-sign-request        --table-name           
  --color                  --no-verify-ssl          --version              
  --debug                  --output
  ```
+ 输入参数并按 *Tab* 键以显示建议的资源值列表。此功能仅在 AWS CLI 版本 2 中可用。

  ```
  $ aws dynamodb delete-table --table-name TAB
  Table 1                  Table 2                  Table 3
  ```

## 在 Linux 或 macOS 上配置命令完成
<a name="cli-command-completion-linux"></a>

要在 Linux 或 macOS 上配置命令完成，您必须知道所使用的 Shell 的名称和 `aws_completer` 脚本的位置。

**注意**  
默认情况下，在运行 Amazon Linux 的 Amazon EC2 实例上自动配置和启用命令完成。

**Topics**
+ [确认完成标签的文件夹在您的路径中](#cli-command-completion-path)
+ [启用命令完成](#cli-command-completion-enable)
+ [验证命令完成](#cli-command-completion-test)

### 确认完成标签的文件夹在您的路径中
<a name="cli-command-completion-path"></a>

要让AWS完成标签成功运行，`aws_completer` 必须在您的 Shell 路径中。`which` 命令可以检查完成标签是否在您的路径中。

```
$ which aws_completer
/usr/local/bin/aws_completer
```

如果 which 命令找不到完成标签，则按照以下步骤将完成标签的文件夹添加到您的路径中。

#### 步骤 1：定位AWS完成标签
<a name="cli-command-completion-locate"></a>

 AWS 完成标签的位置可能随所用安装方法而异。
+ **程序包管理器** – `pip`、`yum`、`brew` 和 `apt-get` 等程序通常在标准路径位置安装AWS完成标签（或其符号链接）。
  + 如果您使用**没有** `pip` 参数的`--user`，则默认路径为 `/usr/local/bin/aws_completer`。
  + 如果您使用**包含** `pip` 参数的`--user`，则默认路径为 `/home/username/.local/bin/aws_completer`。
+ **捆绑安装程序** – 如果您使用捆绑安装程序，则默认路径为 `/usr/local/bin/aws_completer`。

如果所有其他操作都失败，您可以使用 `find` 命令在您的文件系统中搜索AWS完成标签。

```
$ find / -name aws_completer
/usr/local/bin/aws_completer
```

#### 步骤 2：识别 Shell
<a name="cli-command-completion-shell"></a>

要识别您正在使用的 Shell，可以使用以下命令之一。
+ **echo \$1SHELL** – 显示 Shell 的程序文件名称。这通常会与所使用的 Shell 的名称匹配，除非您在登录后启动了不同的 Shell。

  ```
  $ echo $SHELL
  /bin/bash
  ```
+ **ps** – 显示为当前用户运行的进程。其中之一是 Shell。

  ```
  $ ps
    PID TTY          TIME CMD
   2148 pts/1    00:00:00 bash
   8756 pts/1    00:00:00 ps
  ```

#### 步骤 3：将完成标签添加到您的路径中
<a name="cli-command-completion-path-add"></a>

1. 在您的用户文件夹中查找 Shell 的配置文件脚本。

   ```
   $ ls -a ~/
   .  ..  .bash_logout  .bash_profile  .bashrc  Desktop  Documents  Downloads
   ```
   + **Bash**– `.bash_profile`、`.profile` 或 `.bash_login`
   + **Zsh**– `.zshrc`
   + **Tcsh**：`.tcshrc`、`.cshrc` 或 `.login`

1. 在配置文件脚本末尾添加与以下示例类似的导出命令。将 `/usr/local/bin/` 替换为您在上一部分中找到的文件夹。

   ```
   export PATH=/usr/local/bin/:$PATH
   ```

1. 将配置文件重新加载到当前会话中，以使更改生效。将 `.bash_profile` 替换为您在第一部分中找到的 shell 脚本的名称。

   ```
   $ source ~/.bash_profile
   ```

### 启用命令完成
<a name="cli-command-completion-enable"></a>

确认完成标签在您的路径中后，通过运行正在使用的 Shell 的相应命令来启用命令完成。您可以将命令添加到 Shell 的配置文件中，以便在每次打开一个新 Shell 时运行它。在每个命令中，将 */usr/local/bin/* 路径替换为 [确认完成标签的文件夹在您的路径中](#cli-command-completion-path) 中在您的系统上找到的那个。
+ **`bash`** – 使用内置命令 `complete`。

  ```
  $ complete -C '/usr/local/bin/aws_completer' aws
  ```

  将之前的命令添加到 `~/.bashrc` 中，以便在每次打开一个新外壳程序时运行它。您的 `~/.bash_profile` 应指定源 `~/.bashrc`，以确保该命令也在登录 Shell 中运行。
+  **`zsh`** – 要运行命令完成功能，您需要在 `~/.zshrc` 配置文件脚本的末尾添加以下自动加载行来运行 `bashcompinit`。

  ```
  $ autoload bashcompinit && bashcompinit
  $ autoload -Uz compinit && compinit
  ```

  要启用命令完成，请使用内置命令 `complete`。

  ```
  $ complete -C '/usr/local/bin/aws_completer' aws
  ```

  将之前的命令添加到 `~/.zshrc` 中，以便在每次打开一个新外壳程序时运行它。
+  **`tcsh`** – `tcsh` 的完成采用字类型和样式来定义完成行为。

  ```
  > complete aws 'p/*/`aws_completer`/'
  ```

  将之前的命令添加到 `~/.tcshrc` 中，以便在每次打开一个新外壳程序时运行它。

启用命令完成后，[验证命令完成](#cli-command-completion-test) 正在工作。

### 验证命令完成
<a name="cli-command-completion-test"></a>

启用命令完成后，重新加载 Shell，输入部分命令并按 **Tab** 查看可用命令。

```
$ aws sTAB
s3              ses             sqs             sts             swf
s3api           sns             storagegateway  support
```

## 在 Windows 上配置命令完成
<a name="cli-command-completion-windows"></a>

**注意**  
有关 PowerShell 如何处理其完成情况（包括各种完成密钥）的信息，请参阅 *Microsoft PowerShell Docs* 中的 [about\$1Tab\$1Expansion](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_tab_expansion)。

要在 Windows 上启用 PowerShell 的命令完成，请在 PowerShell 中完成以下步骤。

1. 使用以下命令打开你的 `$PROFILE`。

   ```
   PS C:\> Notepad $PROFILE
   ```

   如果没有 `$PROFILE`，请使用以下命令创建用户配置文件。

   ```
   PS C:\> if (!(Test-Path -Path $PROFILE ))
   { New-Item -Type File -Path $PROFILE -Force }
   ```

   有关 PowerShell 配置文件的详细信息，请参阅 *Microsoft Docs* 网站上的[如何在 Windows PowerShell ISE 中使用配置文件](https://docs.microsoft.com/en-us/powershell/scripting/windows-powershell/ise/how-to-use-profiles-in-windows-powershell-ise)。

1. 要启用命令完成，请将以下代码块添加到您的配置文件中，保存，然后关闭文件。

   ```
   Register-ArgumentCompleter -Native -CommandName aws -ScriptBlock {
       param($commandName, $wordToComplete, $cursorPosition)
           $env:COMP_LINE=$wordToComplete
           if ($env:COMP_LINE.Length -lt $cursorPosition){
               $env:COMP_LINE=$env:COMP_LINE + " "
           }
           $env:COMP_POINT=$cursorPosition
           aws_completer.exe | ForEach-Object {
               [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
           }
           Remove-Item Env:\COMP_LINE     
           Remove-Item Env:\COMP_POINT  
   }
   ```

1. 启用命令完成功能后，重新加载 Shell，输入命令的一部分并按 **Tab** 可循环浏览可用命令。

   ```
   $ aws sTab
   ```

   ```
   $ aws s3
   ```

   要查看完成后可用的所有命令，请输入命令的一部分并按 **Ctrl** \$1 **空格键**。

   ```
   $ aws sCtrl + Space
   s3              ses             sqs             sts             swf
   s3api           sns             storagegateway  support
   ```

# AWS CLI 中的 AWS CLI 重试次数
<a name="cli-configure-retries"></a>

本主题介绍在 AWS CLI 中，可能由于意外问题而导致 AWS 服务调用失败。这些调用可能发生在服务器端，也可能是由于您尝试调用的 AWS 服务存在速率限制而失败。这些类型的故障通常不需要特殊处理，并且通常在短暂的等待时间段后会自动重新发出调用。AWS CLI 提供了许多功能，在出现这些类型的错误或异常的情况下，帮助重试对 AWS 服务进行的客户端调用。

**Topics**
+ [可用重试模式](#cli-usage-retries-modes)
+ [配置重试模式](#cli-usage-retries-configure)
+ [查看重试日志](#cli-usage-retries-validate)

## 可用重试模式
<a name="cli-usage-retries-modes"></a>

**Topics**
+ [标准重试模式（默认）](#cli-usage-retries-modes-standard.title)
+ [传统重试模式](#cli-usage-retries-legacy)
+ [自适应重试模式](#cli-usage-retries-modes-adaptive)

### 标准重试模式（默认）
<a name="cli-usage-retries-modes-standard.title"></a>

`Standard` 模式是一组跨 AWS SDK 的标准重试规则，其功能比传统模式更多，并且是 AWS CLI 的默认模式。标准模式为 AWS CLI 版本 2 而创建，并已反向移植到 AWS CLI 版本 1。标准模式的功能包括：
+ 最大重试次数的默认值为 2，总共可发出 3 次调用尝试。此值可通过 `max_attempts` 配置参数覆盖。
+ 对以下更加广泛的错误/异常列表重试操作：
  + 瞬时错误/异常
    + `RequestTimeout` 
    + `RequestTimeoutException` 
    + `PriorRequestNotComplete` 
    + `ConnectionError`
    + `HTTPClientError` 
  + 服务端限制错误和异常：
    + `Throttling`
    + `ThrottlingException`
    + `ThrottledException`
    + `RequestThrottledException`
    + `TooManyRequestsException`
    + `ProvisionedThroughputExceededException`
    + `TransactionInProgressException` 
    + `RequestLimitExceeded` 
    + `BandwidthLimitExceeded`
    + `LimitExceededException`
    + `RequestThrottled`
    + `SlowDown`
    + `EC2ThrottledException` 
+ 对非描述性的瞬时错误代码进行重试。具体来说，这些 HTTP 状态代码包括：500、502、503、504。
+ 任何重试都将包含基准因子为 2 的指数回退，最长回退时间为 20 秒。

### 传统重试模式
<a name="cli-usage-retries-legacy"></a>

`Legacy` 模式使用旧的重试处理程序，其功能有限，其中包括：
+ 最大重试次数的默认值为 4，总共可发出 5 次调用尝试。此值可通过 `max_attempts` 配置参数覆盖。
+ DynamoDB 的最大重试次数的原定设置值为 9，总共可发出 10 次调用尝试。此值可通过 `max_attempts` 配置参数覆盖。
+ 重试以下有限数量的错误/异常：
  + 常规套接字/连接错误：
    + `ConnectionError`
    + `ConnectionClosedError`
    + `ReadTimeoutError`
    + `EndpointConnectionError`
  + 服务端限制错误和异常：
    + `Throttling`
    + `ThrottlingException`
    + `ThrottledException`
    + `RequestThrottledException`
    + `ProvisionedThroughputExceededException`
+ 对多个 HTTP 状态代码执行重试操作，包括 429、500、502、503、504 和 509。
+ 任何重试都将包含基准因子为 2 的指数回退。

### 自适应重试模式
<a name="cli-usage-retries-modes-adaptive"></a>

**警告**  
自适应模式是一种试验模式，在特征和行为方面可能会发生变化。

`Adaptive` 重试模式是一种试验性重试模式，包括标准模式的所有功能。除了标准模式功能外，自适应模式还通过使用令牌存储桶和速率限制变量引入了客户端速率限制，这些变量会随着每次重试而动态更新。此模式为客户端重试提供了灵活性，能够适应AWS服务的错误/异常状态响应。

对于每个新的重试，自适应模式都会根据 AWS 服务响应中显示的错误、异常或 HTTP 状态代码修改速率限制变量。然后，使用这些速率限制变量来计算客户端的新调用速率。对于AWS服务的每个异常/错误或不成功 HTTP 响应（在上面的列表中提供），都会在重试时更新速率限制变量，直到达到成功、令牌存储桶用尽或达到配置的最大尝试次数值。

## 配置重试模式
<a name="cli-usage-retries-configure"></a>

AWS CLI 包括各种重试配置，以及创建客户端对象时要考虑的配置方法。

### 可用配置方法
<a name="cli-usage-retries-configure-options"></a>

在 AWS CLI 中，用户可以通过以下方式配置重试：
+ 环境变量
+ AWS CLI 配置文件

用户可以自定义以下重试选项：
+ 重试模式 - 指定 AWS CLI 使用的重试模式。如上所述，有三种重试模式可用：传统模式、标准模式和自适应模式。AWS CLI 版本 2 的默认值为标准模式。
+ 最大尝试次数 - 指定 AWS CLI 重试处理程序使用的最大重试次数值，其中初始调用会计入您提供的值。默认值基于您的重试模式。

### 在环境变量中定义重试配置
<a name="cli-usage-retries-configure-envvar"></a>

要为 AWS CLI 定义您的重试配置，请更新操作系统的环境变量。

重试环境变量包括：
+ `AWS_RETRY_MODE`
+ `AWS_MAX_ATTEMPTS`

有关环境变量的更多信息，请参阅[为 AWS CLI 配置环境变量](cli-configure-envvars.md)。

### 在 AWS 配置文件中定义重试配置
<a name="cli-usage-retries-configure-file"></a>

要更改重试配置，请更新您的全局 AWS 配置文件。您的AWS配置文件的默认位置为 \$1/.aws/config。

下面是AWS配置文件的示例：

```
[default]
retry_mode = standard
max_attempts = 6
```

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

## 查看重试日志
<a name="cli-usage-retries-validate"></a>

AWS CLI 使用 Boto3 的重试方法和日志记录。您可以对任何命令使用 `--debug` 选项来接收调试日志。有关如何使用 `--debug` 选项的更多信息，请参阅[AWS CLI 中的命令行选项](cli-configure-options.md)。

如果您在调试日志中搜索“retry”，将会找到所需的重试信息。重试操作的客户端日志条目取决于您启用的重试模式。

**传统模式：**

 重试消息是由 botocore.retryhandler 生成的。您将看到以下三个消息之一：
+ `No retry needed`
+ `Retry needed, action of: <action_name>`
+ `Reached the maximum number of retry attempts: <attempt_number>`

**标准模式或自适应模式：**

 重试消息是由 botocore.retries.standard 生成的。您将看到以下三个消息之一：
+ `No retrying request` 
+ `Retry needed, retrying request after delay of: <delay_value>`
+ `Retry needed but retry quota reached, not retrying request`

有关 botocore 重试的完整定义文件，请参阅 *botocore GitHub 存储库* 上的 [\$1retry.json](https://github.com/boto/botocore/blob/develop/botocore/data/_retry.json)。

# 在 AWS CLI 中使用 HTTP 代理
<a name="cli-configure-proxy"></a>

要通过代理服务器访问 AWS，您可以使用代理服务器使用的 DNS 域名或 IP 地址和端口号配置 `HTTP_PROXY` 和 `HTTPS_PROXY` 环境变量。

**Topics**
+ [使用示例](#cli-configure-proxy-using)
+ [向代理进行身份验证](#cli-configure-proxy-auth)
+ [对 Amazon EC2 实例使用代理](#cli-configure-proxy-ec2)
+ [故障排除](#cli-configure-proxy-tshoot)

## 使用示例
<a name="cli-configure-proxy-using"></a>

**注意**  
以下示例显示了全部使用大写字母的环境变量名称。但是，如果使用不同的大小写指定一个变量两次，则优先使用小写字母。建议您只定义每个变量一次，以避免系统混淆和意外行为。

以下示例显示如何使用代理的显式 IP 地址或解析为代理 IP 地址的 DNS 名称。两种情况都可以后跟冒号和应将查询发送到的端口号。

------
#### [ Linux or macOS ]

```
$ export HTTP_PROXY=http://10.15.20.25:1234
$ export HTTP_PROXY=http://proxy.example.com:1234
$ export HTTPS_PROXY=http://10.15.20.25:5678
$ export HTTPS_PROXY=http://proxy.example.com:5678
```

------
#### [ Windows Command Prompt ]

**为所有会话设置**

```
C:\> setx HTTP_PROXY http://10.15.20.25:1234
C:\> setx HTTP_PROXY http://proxy.example.com:1234
C:\> setx HTTPS_PROXY http://10.15.20.25:5678
C:\> setx HTTPS_PROXY http://proxy.example.com:5678
```

使用 [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx) 设置环境变量会更改当前命令提示符会话和运行该命令后创建的所有命令提示符会话中使用的值。它***不*** 影响在运行该命令时已经运行的其他命令 shell。

**仅为当前会话设置**

使用 `[set](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)` 设置环境变量会更改使用的值，直到当前命令提示符会话结束，或者直到您将该变量设置为其他值。

```
C:\> set HTTP_PROXY=http://10.15.20.25:1234
C:\> set HTTP_PROXY=http://proxy.example.com:1234
C:\> set HTTPS_PROXY=http://10.15.20.25:5678
C:\> set HTTPS_PROXY=http://proxy.example.com:5678
```

------

## 向代理进行身份验证
<a name="cli-configure-proxy-auth"></a>

**注意**  
AWS CLI 不支持 NTLM 代理。如果使用 NTLM 或 Kerberos 协议代理，则可以通过身份验证代理（如 [Cntlm](http://cntlm.sourceforge.net)）进行连接。

AWS CLI 支持 HTTP 基本身份验证。在代理 URL 中指定用户名和密码，如下所示。

------
#### [ Linux or macOS ]

```
$ export HTTP_PROXY=http://username:password@proxy.example.com:1234
$ export HTTPS_PROXY=http://username:password@proxy.example.com:5678
```

------
#### [ Windows Command Prompt ]

**为所有会话设置**

```
C:\> setx HTTP_PROXY http://username:password@proxy.example.com:1234
C:\> setx HTTPS_PROXY http://username:password@proxy.example.com:5678
```

**仅为当前会话设置**

```
C:\> set HTTP_PROXY=http://username:password@proxy.example.com:1234
C:\> set HTTPS_PROXY=http://username:password@proxy.example.com:5678
```

------

## 对 Amazon EC2 实例使用代理
<a name="cli-configure-proxy-ec2"></a>

如果是在使用附加 IAM 角色启动的 Amazon EC2 实例上配置代理，请确保排除用于访问[实例元数据](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)的地址。为此，请将 `NO_PROXY` 环境变量设置为实例元数据服务的 IP 地址 169.254.169.254。该地址保持不变。

------
#### [ Linux or macOS ]

```
$ export NO_PROXY=169.254.169.254
```

------
#### [ Windows Command Prompt ]

**为所有会话设置**

```
C:\> setx NO_PROXY 169.254.169.254
```

**仅为当前会话设置**

```
C:\> set NO_PROXY=169.254.169.254
```

------

## 故障排除
<a name="cli-configure-proxy-tshoot"></a>

如果您遇到有关 AWS CLI 的问题，请参阅[排查 AWS CLI 错误](cli-chap-troubleshooting.md)以了解故障排除步骤。有关相关性最高的故障排除步骤，请参阅[SSL 证书错误](cli-chap-troubleshooting.md#tshoot-certificate-verify-failed)。

# 在 AWS CLI 中使用端点
<a name="cli-configure-endpoints"></a>

要通过编程方式连接到某个 AWS 服务，您需要使用端点。*端点*是作为 AWS Web 服务的入口点的 URL。AWS Command Line Interface (AWS CLI) 会自动为 AWS 区域中的每项服务使用默认端点，但您可以应 API 请求指定备用端点。

**Contents**
+ [为单个命令设置端点](#endpoints-command)
+ [为所有 AWS 服务设置全局端点](#endpoints-global)
+ [设置成为所有 AWS 服务使用 FIPS 端点](#endpoints-fips)
+ [设置成为所有 AWS 服务使用双堆栈端点](#endpoints-dual-stack)
+ [设置特定于服务的端点](#endpoints-service-specific)
  + [环境变量](#endpoints-service-specific-envvars)
  + [共享 `config` 文件](#endpoints-service-specific-config)
  + [特定于服务的标识符列表](#endpoints-service-specific-table)
+ [基于账户的端点](#endpoints-accountid)
+ [端点配置和设置优先级](#endpoints-precedence)

## 为单个命令设置端点
<a name="endpoints-command"></a>

要覆盖单个命令的任何端点设置或环境变量，请使用 `--endpoint-url` 命令行选项。以下命令示例使用自定义 Amazon S3 端点 URL。

```
$ aws s3 ls --endpoint-url http://localhost:4567
```

## 为所有 AWS 服务设置全局端点
<a name="endpoints-global"></a>

要将所有服务的请求路由到自定义端点 URL，请使用以下设置之一：
+ 环境变量：
  + `AWS\$1IGNORE\$1CONFIGURED\$1ENDPOINT\$1URLS` – 忽略已配置的端点 URL。

------
#### [ Linux or macOS ]

    ```
    $ export AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true
    ```

------
#### [ Windows Command Prompt ]

    **为所有会话设置**

    ```
    C:\> setx AWS_IGNORE_CONFIGURED_ENDPOINT_URLS true
    ```

    **仅为当前会话设置**

    ```
    C:\> set AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true
    ```

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

    ```
    PS C:\> $Env:AWS_IGNORE_CONFIGURED_ENDPOINT_URLS="true"
    ```

------
  + `AWS\$1ENDPOINT\$1URL` – 设置全局端点 URL。

------
#### [ Linux or macOS ]

    ```
    $ export AWS_ENDPOINT_URL=http://localhost:4567
    ```

------
#### [ Windows Command Prompt ]

    **为所有会话设置**

    ```
    C:\> setx AWS_ENDPOINT_URL http://localhost:4567
    ```

    **仅为当前会话设置**

    ```
    C:\> set AWS_ENDPOINT_URL=http://localhost:4567
    ```

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

    ```
    PS C:\> $Env:AWS_ENDPOINT_URL="http://localhost:4567"
    ```

------
+ `config` 文件：
  + `ignore\$1configure\$1endpoint\$1urls` – 忽略已配置的端点 URL。

    ```
    ignore_configure_endpoint_urls = true
    ```
  + `endpoint\$1url` – 设置全局端点 URL。

    ```
    endpoint_url = http://localhost:4567
    ```

特定于服务的端点和 `--endpoint-url` 命令行选项会覆盖所有全局端点。

## 设置成为所有 AWS 服务使用 FIPS 端点
<a name="endpoints-fips"></a>

要路由所有服务的请求以使用 FIPS 端点，请使用以下设置之一：
+ `AWS\$1USE\$1FIPS\$1ENDPOINT` 环境变量。

------
#### [ Linux or macOS ]

  ```
  $ export AWS_USE_FIPS_ENDPOINT=true
  ```

------
#### [ Windows Command Prompt ]

  **为所有会话设置**

  ```
  C:\> setx AWS_USE_FIPS_ENDPOINT true
  ```

  **仅为当前会话设置**

  ```
  C:\> set AWS_USE_FIPS_ENDPOINT=true
  ```

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

  ```
  PS C:\> $Env:AWS_USE_FIPS_ENDPOINT="true"
  ```

------
+ `use\$1fips\$1endpoint` 文件设置。

  ```
  use_fips_endpoint = true
  ```

在某些 AWS 区域，部分 AWS 服务提供支持[美国联邦信息处理标准 (FIPS) 140-2](https://aws.amazon.com/compliance/fips/) 的端点。当 AWS 服务支持 FIPS 时，此设置指定 AWS CLI 应使用哪个 FIPS 端点。与标准 AWS 端点不同，FIPS 端点使用符合 FIPS 140-2 的 TLS 软件库。与美国政府有业务来往的企业可能需要使用这些端点。

如果启用此设置，但不存在适用于您所在 AWS 区域中的服务的 FIPS 端点，则 AWS 命令可能会失败。在这种情况下，请使用 `--endpoint-url` 选项手动指定要在命令中使用的端点，或者使用[特定于服务的端点](#endpoints-service-specific)。

有关按 AWS 区域指定 FIPS 端点的更多信息，请参阅[按服务列出的 FIPS 端点](https://aws.amazon.com/compliance/fips/)。

## 设置成为所有 AWS 服务使用双堆栈端点
<a name="endpoints-dual-stack"></a>

要路由所有服务的请求以在可用时使用双堆栈端点，请使用以下设置之一：
+ `AWS\$1USE\$1DUALSTACK\$1ENDPOINT` 环境变量。

------
#### [ Linux or macOS ]

  ```
  $ export AWS_USE_DUALSTACK_ENDPOINT=true
  ```

------
#### [ Windows Command Prompt ]

  **为所有会话设置**

  ```
  C:\> setx AWS_USE_DUALSTACK_ENDPOINT true
  ```

  **仅为当前会话设置**

  ```
  C:\> set AWS_USE_DUALSTACK_ENDPOINT=true
  ```

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

  ```
  PS C:\> $Env:AWS_USE_DUALSTACK_ENDPOINT="true"
  ```

------
+ `use\$1dualstack\$1endpoint` 文件设置。

  ```
  use_dualstack_endpoint = true
  ```

允许使用双堆栈端点发送 AWS 请求。要详细了解支持 IPv4 和 IPv6 流量的双堆栈端点，请参阅 *Amazon Simple Storage Service 用户指南*中的[使用 Amazon S3 双堆栈端点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/dual-stack-endpoints.html)。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 AWS 区域的双堆栈端点，则请求将失败。默认情况下，将禁用该功能。

## 设置特定于服务的端点
<a name="endpoints-service-specific"></a>

特定于服务的端点配置提供了一个选项，可使用您应 AWS CLI 请求选择的永久端点。这些设置可以灵活地支持本地端点、VPC 端点和第三方本地 AWS 开发环境。不同的端点可分别用于测试环境和生产环境。您可以为个别 AWS 服务指定端点 URL。

可通过以下方式指定特定于服务的端点：
+ 单个命令的命令行选项 `--endpoint-url`。
+ 环境变量：
  + `AWS\$1IGNORE\$1CONFIGURED\$1ENDPOINT\$1URLS` – 忽略所有已配置的端点 URL，除非在命令行中指定。
  + `AWS\$1ENDPOINT\$1URL\$1<SERVICE>` – 指定用于特定服务的自定义端点，在该服务中 `<SERVICE>` 替换为 AWS 服务标识符。有关所有特定于服务的变量，请参阅[特定于服务的端点：特定于服务的标识符列表](#endpoints-service-specific-table)。
+ `config` 文件：
  + `ignore\$1configure\$1endpoint\$1urls` – 忽略所有已配置的端点 URL，除非使用环境变量或在命令行中指定。
  + `config` 文件的 [`services`](cli-configure-files.md#cli-configure-files-format-services) 节与 `endpoint\$1url` 文件设置相结合。

**Topics**
+ [环境变量](#endpoints-service-specific-envvars)
+ [共享 `config` 文件](#endpoints-service-specific-config)
+ [特定于服务的标识符列表](#endpoints-service-specific-table)

### 特定于服务的端点：环境变量
<a name="endpoints-service-specific-envvars"></a>

环境变量会覆盖配置文件中的设置，但不会覆盖命令行上指定的选项。如果您希望所有配置文件在设备上使用相同的端点，请使用环境变量。

以下是特定于服务的环境变量：
+ `AWS\$1IGNORE\$1CONFIGURED\$1ENDPOINT\$1URLS` – 忽略所有已配置的端点 URL，除非在命令行中指定。

------
#### [ Linux or macOS ]

  ```
  $ export AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true
  ```

------
#### [ Windows Command Prompt ]

  **为所有会话设置**

  ```
  C:\> setx AWS_IGNORE_CONFIGURED_ENDPOINT_URLS true
  ```

  **仅为当前会话设置**

  ```
  C:\> set AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true
  ```

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

  ```
  PS C:\> $Env:AWS_IGNORE_CONFIGURED_ENDPOINT_URLS="true"
  ```

------
+ `AWS\$1ENDPOINT\$1URL\$1<SERVICE>` – 指定用于特定服务的自定义端点，在该服务中 `<SERVICE>` 替换为 AWS 服务标识符。有关所有特定于服务的变量，请参阅[特定于服务的端点：特定于服务的标识符列表](#endpoints-service-specific-table)。

  以下环境变量示例设置 AWS Elastic Beanstalk 的端点。

------
#### [ Linux or macOS ]

  ```
  $ export AWS_ENDPOINT_URL_ELASTIC_BEANSTALK=http://localhost:4567
  ```

------
#### [ Windows Command Prompt ]

  **为所有会话设置**

  ```
  C:\> setx AWS_ENDPOINT_URL_ELASTIC_BEANSTALK http://localhost:4567
  ```

  **仅为当前会话设置**

  ```
  C:\> set AWS_ENDPOINT_URL_ELASTIC_BEANSTALK=http://localhost:4567
  ```

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

  ```
  PS C:\> $Env:AWS_ENDPOINT_URL_ELASTIC_BEANSTALK="http://localhost:4567"
  ```

------

有关设置环境变量的更多信息，请参阅[为 AWS CLI 配置环境变量](cli-configure-envvars.md)。

### 特定于服务的端点：共享 `config` 文件
<a name="endpoints-service-specific-config"></a>

在共享 `config` 文件中，`endpoint_url` 用在多个节中。要设置特定于服务的端点，请使用嵌套在 `services` 节内服务标识符密钥下的 `endpoint_url` 设置。有关在共享 `config` 文件中定义 `services` 节的详细信息，请参阅 [节类型：`services`](cli-configure-files.md#cli-configure-files-format-services)。

以下示例使用 `services` 节为 Amazon S3 配置服务特定的端点 URL 和用于其他所有服务的自定义全局端点：

```
[profile dev1]
endpoint_url = http://localhost:1234
services = s3-specific

[services testing-s3]
s3 = 
  endpoint_url = http://localhost:4567
```

单个配置文件可以为多个服务配置端点。以下示例在同一配置文件中为 Amazon S3 和 AWS Elastic Beanstalk 设置服务特定的端点 URL。

有关 `services` 节中要使用的所有服务标识符密钥的列表，请参阅[特定于服务的标识符列表](#endpoints-service-specific-table)。

```
[profile dev1]
services = testing-s3-and-eb

[services testing-s3-and-eb]
s3 = 
  endpoint_url = http://localhost:4567
elastic_beanstalk = 
  endpoint_url = http://localhost:8000
```

“服务配置”节可以在多个配置文件中使用。以下示例有两个配置文件使用相同的 `services` 定义：

```
[profile dev1]
output = json
services = testing-s3

[profile dev2]
output = text
services = testing-s3

[services testing-s3]
s3 = 
  endpoint_url = https://localhost:4567
```

### 特定于服务的端点：特定于服务的标识符列表
<a name="endpoints-service-specific-table"></a>

AWS 服务标识符基于 API 模型的 `serviceId`，不过需要将所有空格替换为下划线，并将所有字母小写。

下表列出了所有特定于服务的标识符、`config` 文件密钥和环境变量。

## 基于账户的端点
<a name="endpoints-accountid"></a>

可以通过以下方式指定基于账户的端点：
+ 环境变量
  + `AWS\$1ACCOUNT\$1ID`：指定要用于调用受支持的 AWS 服务的基于 AWS 账户的端点 ID。

------
#### [ Linux or macOS ]

    ```
    $ export AWS_ACCOUNT_ID=<account-id>
    ```

------
#### [ Windows Command Prompt ]

    **为所有会话设置**

    ```
    C:\> setx AWS_ACCOUNT_ID <account-id>
    ```

    **仅为当前会话设置**

    ```
    C:\> set AWS_ACCOUNT_ID=<account-id>
    ```

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

    ```
    PS C:\> $Env:AWS_ACCOUNT_ID="<account-id>"
    ```

------
  + `AWS\$1ACCOUNT\$1ID\$1ENDPOINT\$1MODE`：指定是否使用基于 AWS 账户的端点 ID 来调用受支持的 AWS 服务。可以设置为 `preferred`、`disabled` 或 `required`。默认值为 `preferred`。

------
#### [ Linux or macOS ]

    ```
    $ export AWS_ACCOUNT_ID_ENDPOINT_MODE=preferred
    ```

------
#### [ Windows Command Prompt ]

    **为所有会话设置**

    ```
    C:\> setx AWS_ACCOUNT_ID_ENDPOINT_MODE preferred
    ```

    **仅为当前会话设置**

    ```
    C:\> set AWS_ACCOUNT_ID_ENDPOINT_MODE=preferred
    ```

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

    ```
    PS C:\> $Env:AWS_ACCOUNT_ID_ENDPOINT_MODE="preferred"
    ```

------
+ `config` 文件：
  + `aws\$1account\$1id`：指定要用于调用受支持的 AWS 服务的基于 AWS 账户的端点 ID。

    ```
    aws_account_id = <account-id>
    ```
  + `account\$1id\$1endpoint\$1mode`：指定是否使用基于 AWS 账户的端点 ID 来调用受支持的 AWS 服务。可以设置为 `preferred`、`disabled` 或 `required`。首选默认值。

    ```
    account_id_endpoint_mode = preferred
    ```

基于账户的端点通过使用 AWS 账户 ID 来简化对支持此功能的服务发出的 AWS 服务请求的路由，有助于确保高性能和可扩展性。当您使用凭证提供商和支持基于账户的端点的服务时，AWS CLI 会自动构造和使用基于账户的端点，而不是区域端点。

基于账户的端点使用以下格式，其中 `<account-id>` 替换为您的 AWS 账户 ID，而 `<region>` 替换为您的 AWS 区域：

```
https://<account-id>.myservice.<region>.amazonaws.com
```

默认情况下，在 AWS CLI 中，基于账户的端点模式设置为 `preferred`。

## 端点配置和设置优先级
<a name="endpoints-precedence"></a>

端点配置设置位于多个位置（例如，系统变量或用户环境变量、本地 AWS 配置文件），或者在命令行上显式声明为参数。AWS CLI 端点配置设置的优先顺序如下：

1. `--endpoint-url` 命令行选项。

1. 如果启用，则 `AWS\$1IGNORE\$1CONFIGURED\$1ENDPOINT\$1URLS` 全局端点环境变量或配置文件设置 `ignore\$1configure\$1endpoint\$1urls` 将忽略自定义端点。

1. 由特定于服务的环境变量 `AWS\$1ENDPOINT\$1URL\$1<SERVICE>` 提供的值，例如 `AWS_ENDPOINT_URL_DYNAMODB`。

1. `AWS\$1USE\$1DUALSTACK\$1ENDPOINT`、`AWS\$1USE\$1FIPS\$1ENDPOINT` 和 `AWS\$1ENDPOINT\$1URL` 环境变量提供的值。

1. `AWS\$1ACCOUNT\$1ID\$1ENDPOINT\$1MODE` 环境变量使用 `AWS\$1ACCOUNT\$1ID` 环境变量或 `aws\$1account\$1id` 设置中的账户 ID 设置为 `preferred` 或 `required`。

1. 共享 `config` 文件 `services` 节中的 `endpoint\$1url` 设置提供的特定于服务的端点值。

1. 共享 `config` 文件的 `profile` 中的 `endpoint\$1url` 设置提供的值。

1. `use\$1dualstack\$1endpoint`、`use\$1fips\$1endpoint` 和 `endpoint\$1url` 设置。

1. `account\$1id\$1endpoint\$1mode` 设置使用 `AWS\$1ACCOUNT\$1ID` 环境变量或 `aws\$1account\$1id` 设置中的账户 ID 设置为 `preferred` 或 `required`。

1. 最后使用相应的 AWS 服务 的任何默认端点 URL。有关每个区域可用的标准服务端点的列表，请参阅《Amazon Web Services 一般参考》**中的 [AWS 区域和端点](https://docs.aws.amazon.com/general/latest/gr/rande.html)。