

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