命令行选项 - AWS Command Line Interface

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

命令行选项

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

如何使用命令行选项

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

$ aws s3 ls --profile profile1 example-bucket-1 example-bucket-2 ...

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

AWS CLI 支持的全局命令行选项

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

--ca-bundle <string>

指定验证 SSL 证书时要使用的证书颁发机构 (CA) 证书捆绑包。

如果已定义,此选项将覆盖配置文件设置 ca_bundleAWS_CA_BUNDLE 环境变量的值。

--cli-auto-prompt

为单个命令启用自动提示模式。如以下示例所示,您可以随时指定它。

$ aws --cli-auto-prompt $ aws dynamodb --cli-auto-prompt $ aws dynamodb describe-table --cli-auto-prompt

此选项将覆盖 aws_cli_auto_prompt 环境变量和 cli_auto_prompt 配置文件设置。

有关 AWS CLI 版本 2 自动提示特征的信息,请参阅 让 AWS CLI 提示您输入命令

--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 文件配置设置。

$ 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),则套接字连接将无限等待(阻塞),不会超时。

--cli-read-timeout <integer>

指定最大套接字读取时间(以秒为单位)。如果该值设置为零 (0),则套接字读取将无限等待(阻塞),不会超时。

--color <string>

指定对彩色输出的支持。有效值包括 onoffauto。原设定值为 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 中托管终端节点(然后可能需要指定该终端节点)。

以下命令示例使用自定义 Amazon S3 端点 URL。

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

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

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

  2. 如果启用,则 AWS_IGNORE_CONFIGURED_ENDPOINT_URLS 全局端点环境变量或配置文件设置 ignore_configure_endpoint_urls 将忽略自定义端点。

  3. 由特定于服务的环境变量 AWS_ENDPOINT_URL_<SERVICE> 提供的值,例如 AWS_ENDPOINT_URL_DYNAMODB

  4. AWS_USE_DUALSTACK_ENDPOINTAWS_USE_FIPS_ENDPOINTAWS_ENDPOINT_URL 环境变量提供的值。

  5. 共享 config 文件 services 节中的 endpoint_url 设置提供的特定于服务的端点值。

  6. 共享 config 文件的 profile 中的 endpoint_url 设置提供的值。

  7. use_dualstack_endpointuse_fips_endpointendpoint_url 设置。

  8. 最后使用相应的 AWS 服务的任何默认端点 URL。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点

--no-cli-auto-prompt

禁用单个命令的自动提示模式。

$ aws dynamodb describe-table --table-name Table1 --no-cli-auto-prompt

此选项将覆盖 aws_cli_auto_prompt 环境变量和 cli_auto_prompt 配置文件设置。

有关 AWS CLI 版本 2 自动提示特征的信息,请参阅 让 AWS CLI 提示您输入命令

--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 证书错误

--output <string>

指定用于该命令的输出格式。您可以指定以下任意值:

  • json – 输出采用 JSON 字符串的格式。

  • yaml – 输出采用 YAML 字符串的格式。

  • yaml-stream – 输出被流式处理并采用 YAML 字符串的格式。串流支持更快地处理大型数据类型。

  • text – 输出采用多个制表符分隔字符串值行的格式。这对于将输出传递到文本处理器(如 grepsedawk)很有用。

  • table – 输出采用表格形式,使用字符 +|- 以形成单元格边框。它通常以“人性化”格式呈现信息,这种格式比其他格式更容易阅读,但从编程方面来讲不是那么有用。

--profile <string>

指定用于该命令的命名配置文件。要设置其他命名配置文件,可以在 aws configure 命令中使用 --profile 选项。

$ aws configure --profile <profilename>
--query <string>

指定用于筛选响应数据的 JMESPath 查询。有关更多信息,请参阅过滤器 AWS CLI 输出

--region <string>

指定要将该命令的 AWS 请求发送到的 AWS 区域。有关您可以指定的所有区域的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点

--version

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

命令行选项的常见用法

常见的命令行选项用法包括在编写脚本时检查多个 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 ||| ...