中的配置和凭据文件设置 AWS CLI - AWS Command Line Interface

本文档 AWS CLI 仅适用于版本 1。有关版本 2 的文档 AWS CLI,请参阅版本 2 用户指南

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

中的配置和凭据文件设置 AWS CLI

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

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

您可以通过设置某个支持的环境变量或使用命令行参数来覆盖个别设置。有关配置设置优先顺序的更多信息,请参阅为配置设置 AWS CLI

注意

有关如何设置凭证的信息,请参阅 的身份验证和访问凭证 AWS CLI

配置和凭证文件的格式

configcredentials 文件将归入各个节中。节包括 profilesservices。节是一个命名的设置集合,它一直持续到遇到另一个节定义行为止。可将多个配置文件和节存储在 configcredentials 文件中。

这些文件是使用以下格式的纯文本文件:

  • 节名称用方括号 [] 括起来,例如 [default][profile user1][sso-session]

  • 节中的所有条目均采用 setting_name=value 的一般形式。

  • 可以通过以井号字符 (#) 开头来注释掉行。

config 和 credentials 文件包含以下节类型:

节类型:profile

这些 AWS CLI 商店

配置文件节名称使用以下格式,具体取决于文件:

  • Config 文件: [default] [profile user1]

  • 凭证文件: [default] [user1]

    credentials 文件中创建条目时,请勿 使用单词 profile

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

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

Short-term credentials

此示例介绍来自 AWS Identity and Access Management的短期凭证。有关更多信息,请参阅 使用短期凭证进行身份验证 AWS CLI

凭证文件

[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 将借用相同的凭证,然后代入新角色。有关更多信息,请参阅 在中使用IAM角色 AWS CLI

凭证文件

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 实例元数据中获取的证书。有关更多信息,请参阅 使用 Amazon EC2 实例元数据作为凭证 AWS CLI

凭证文件

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

此示例介绍来自 AWS Identity and Access Management的长期凭证。有关更多信息,请参阅 使用IAM用户凭据进行身份验证 AWS CLI

凭证文件

[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

有关更多信息以及其他授权和凭证方法,请参阅 使用IAM用户凭据进行身份验证 AWS CLI

节类型:services

services部分是一组设置,用于为 AWS 服务 请求配置自定义终端节点。然后,配置文件将链接到 services 节。

[profile dev] services = my-services

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

以下示例将终端节点配置为用于向 Amazon DynamoDB 服务发出的请求 my-services 中使用的部分 dev 个人资料。后面紧跟的任何缩进行都包含在该小节中,并适用于该服务。

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

有关特定于服务的端点的更多信息,请参阅 ‬在中使用终端节点 AWS CLI

如果您的配置文件具有通过用于IAM代入角色功能的source_profile参数配置的基于角色的凭证,则SDK仅使用指定配置文件的服务配置。它不使用关联有角色的配置文件。例如,使用以下共享 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并在代码中调用 AmazonEC2,则终端节点将解析为https://profile-b-ec2-endpoint.aws。如果您的代码向其他任何服务发出请求,则端点解析将不遵循任何自定义逻辑。该端点不会解析到配置文件 A 中定义的全局端点。要使全局端点对配置文件 B 生效,您需要直接在配置文件 B 中设置 endpoint_url

配置设置存储在何处?

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

在 config 文件中存储凭证

您可以将所有配置文件设置保存在一个文件中,因为他们 AWS CLI 可以从config文件中读取凭据。如果两个文件中都有共享相同名称的配置文件的凭证,则凭证文件中的密钥优先。我们建议将凭证保存在 credentials 文件中。各种语言软件开发套件 (SDKs) 也使用这些文件。如果您使用除之外的SDKs其中一个 AWS CLI,请确认证书是否应存储在自己的文件中。

主目录位置因操作系统而异,但在 Windows 中使用环境变量 %UserProfile% 引用,在基于 Unix 的系统中使用 $HOME~(波形符)引用。通过将 AWS_CONFIG_FILEAWS_SHARED_CREDENTIALS_FILE 环境变量设置为另一个本地路径,可以为文件指定非默认位置。有关详细信息,请参阅 为配置环境变量 AWS CLI

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

使用命名配置文件

如果未明确定义配置文件,则使用 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 设置环境变量会更改使用的值,直到当前命令提示符会话结束,或者直到您将该变量设置为其他值。

使用 setx 设置环境变量会更改运行命令后创建的所有命令 Shell 中的值。这不会 影响运行命令时已在运行的任何命令 Shell。关闭并重新启动命令 Shell 可查看这一更改的效果。

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

使用命令设置和查看配置设置

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

aws configure

运行此命令可快速设置和查看 凭证、区域和输出格式。以下示例显示了示例值。

$ 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 configure set 设置任何凭证或配置设置。使用 --profile 设置指定要查看或修改的配置文件。

例如,以下命令设置名为 region 的配置文件中的 integ

$ aws configure set region us-west-2 --profile integ

要移除设置,请在文本编辑器中手动删除configcredentials文件中的设置。

aws configure get

您可以检索已使用 aws configure get 设置的任何凭证或配置设置。使用 --profile 设置指定要查看或修改的配置文件。

例如,以下命令检索名为 region 的配置文件中的 integ 设置。

$ aws configure get region --profile integ us-west-2

如果输出为空,不会显式设置该设置,并将使用默认值。

aws configure list

要列出配置数据,请使用 aws configure list 命令。此命令列出配置文件以及用于指定的配置文件的访问密钥、密钥和区域配置信息。对于每个配置项目,它会显示值、检索配置值的位置以及配置变量名称。

例如,如果您在环境变量 AWS 区域 中提供,则此命令会显示您配置的区域的名称、该值来自环境变量以及环境变量的名称。

对于角色和 Identity Center 等临时凭IAM证方法,此命令显示临时缓存的访问密钥并显示私有访问密钥。

$ 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

设置新的配置和凭证命令示例

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

Short-term credentials

此示例介绍来自 AWS Identity and Access Management的短期凭证。aws 配置向导用于设置初始值,然后 aws configure set 命令分配所需的最后一个值。有关更多信息,请参阅 使用短期凭证进行身份验证 AWS CLI

$ 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 命令设置每个值。有关更多信息,请参阅 在中使用IAM角色 AWS CLI

$ 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 命令设置每个值。有关更多信息,请参阅 使用 Amazon EC2 实例元数据作为凭证 AWS CLI

$ 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

此示例介绍来自 AWS Identity and Access Management的长期凭证。有关更多信息,请参阅 使用IAM用户凭据进行身份验证 AWS CLI

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

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

全局设置

api_versions

有些 AWS 服务维护多个API版本以支持向后兼容。默认情况下, AWS CLI 命令使用最新的可用API版本。您可以通过在文件中添加api_versions设置来指定要用于配置config文件的API版本。

这是一个 “嵌套” 设置,后面有一行或多行缩进,每行标识一项 AWS 服务和要使用的API版本。要了解哪些API版本可用,请参阅每项服务的文档。

以下示例说明如何为两个 AWS 服务指定API版本。这些API版本仅用于在包含这些设置的配置文件下运行的命令。

api_versions = ec2 = 2015-03-01 cloudfront = 2015-09-017

此设置没有等效的环境变量或命令行参数。

aws_access_key_id

指定用作证书一部分的 AWS 访问密钥,用于对命令请求进行身份验证。虽然它可以存储在 config 文件中,但我们建议您将其存储在 credentials 文件中。

可以被 AWS_ACCESS_KEY_ID 环境变量覆盖。您不能将访问密钥 ID 指定为命令行选项。

aws_access_key_id = AKIAIOSFODNN7EXAMPLE
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_CA_BUNDLE 环境变量或 --ca-bundle 命令行选项覆盖。

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

指定是否 AWS CLI 尝试访问命令行参数中以http://或开头的URL链接https://。启用后,检索到的内容将用作参数值,而不是URL。

  • true – 这是默认值。指定后,将抓取任何以 http://https:// 开头的字符串参数,并将任何下载的内容用作该命令的参数值。

  • false — 如果指定,则 AWS CLI 不处理以其他字符串开头http://https://不同于其他字符串的参数字符串值。

该条目没有等效的环境变量或命令行选项。

cli_follow_urlparam = false
cli_history

默认情况下禁用。此设置启用 AWS CLI的命令历史记录。启用此设置后,会 AWS CLI 记录aws命令的历史记录。

cli_history = enabled

您可以使用 aws history list 命令列出您的历史记录,然后使用 aws history show 命令中生成的 command_ids 获取详细信息。有关更多信息,请参阅《AWS CLI 参考指南》中的 aws history

cli_timestamp_format

指定输出中包含的时间戳值的格式。可以指定以下任一值:

  • iso8601 — 版本 2 的 AWS CLI 默认值。如果指定,则会根据 AWS CLI 8601 重新格式化所有时间戳。ISO

    ISO8601 格式化的时间戳类似于以下示例。第一个示例显示了协调世界时 (UTC) 中的时间,方法是在时间Z之后加上 a。日期和时间由 T 分隔。

    2019-10-31T22:21:41Z

    要指定不同的时区,不是Z,请指定+-以及所需时区领先或落后的小时数UTC,作为两位数的值。以下示例显示的时间与上一个示例相同,但调整为太平洋标准时间,后者落后了八个小时UTC。

    2019-10-31T14:21:41-08
  • wir e — AWS CLI 版本 1 的默认值。如果指定,则 AWS CLI 会显示与HTTP查询响应中收到的所有时间戳值完全相同。

该条目没有等效的环境变量或命令行选项。

cli_timestamp_format = iso8601
credential_process

指定一个外部命令, AWS CLI 运行该命令以生成或检索用于此命令的身份验证凭据。命令必须以特定格式返回凭证。有关如何使用该设置的更多信息,请参阅使用外部流程采购凭证 AWS CLI

该条目没有等效的环境变量或命令行选项。

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

在 Amazon EC2 实例或容器中使用,用于指定在哪里 AWS CLI 可以找到用于代入您通过role_arn参数指定的角色的证书。不能在同一配置文件中同时指定 source_profilecredential_source

此参数具有三个值:

  • 环境-指定要从环境变量中检索源凭证。 AWS CLI

  • Ec@@ 2 InstanceMetadata — 指定使用附加到EC2实例配置文件的IAM角色来获取源证书。 AWS CLI

  • EcsContainer— 指定使用附加到ECS容器的IAM角色作为源凭证。 AWS CLI

credential_source = Ec2InstanceMetadata
duration_seconds

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

endpoint_url

指定用于所有服务请求的端点。如果在 config 文件的 services 节中使用此设置,则该端点仅用于指定的服务。

以下示例使用全局端点 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 端点配置设置的优先顺序如下:

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

ignore_configure_endpoint_urls

如果启用,则 AWS CLI 会忽略config文件中指定的所有自定义终端节点配置。有效值为 truefalse

ignore_configure_endpoint_urls = true

端点配置设置位于多个位置,例如系统或用户环境变量、本地 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. 最后使用相应URL AWS 服务 端点的任何默认端点。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点

external_id

指定第三方用于在其客户账户中代入角色的唯一标识符。这将映射到 AssumeRole 操作中的 ExternalId 参数。仅当角色的信任策略为 ExternalId 指定值时,才需要此参数。有关更多信息,请参阅《IAM用户指南》中的如何在向第三方授予对 AWS 资源的访问权限时使用外部 ID

max_attempts

指定重试处理程序使用的最大 AWS CLI 重试次数值,其中初始调用计入您max_attempts提供的值。

您可以使用 AWS_MAX_ATTEMPTS 环境变量覆盖此值。

max_attempts = 3
mfa_serial

担任角色时要使用的MFA设备的标识号。只有当所担任角色的信任策略包含需要MFA身份验证的条件时,这才是强制性的。该值可以是硬件设备的序列号(例如GAHT12345678),也可以是虚拟MFA设备(例如ARN)的 Amazon 资源名称 (arn:aws:iam::123456789012:mfa/user)。

output

指定使用该配置文件请求的命令的默认输出格式。您可以指定以下任意值:

  • json— 输出格式化为字符JSON串。

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

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

可以被 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 区域和端点

  • aws_global允许您为除区域终端节点之外还支持全局终端节点的服务指定全局终端节点,例如 AWS Security Token Service (AWS STS) 和亚马逊简单存储服务 (Amazon S3) Simple Service Amazon S3A。

您可以使用 、AWS_DEFAULT_REGION 环境变量或 --region 命令行选项覆盖此值。

region = us-west-2
retry_mode

指定 AWS CLI 使用哪种重试模式。有三种重试模式可用:旧模式(默认模式)、标准模式和自适应模式。有关重试的更多信息,请参阅AWS CLI 在中重试 AWS CLI

您可以使用 AWS_RETRY_MODE 环境变量覆盖此值。

retry_mode = standard
role_arn

指定要用于运行 AWS CLI 命令的IAM角色的 Amazon 资源名称 (ARN)。此外,还必须指定以下参数之一以标识有权代入此角色的凭证:

  • source_profile

  • credential_source

role_arn = arn:aws:iam::123456789012:role/role-name

环境变量 AWS_ROLE_ARN 将覆盖此设置。

有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色

role_session_name

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

role_session_name = maria_garcia_role

环境变量 AWS_ROLE_SESSION_NAME 将覆盖此设置。

有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色

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 中的 services 节。

环境变量 AWS_ROLE_SESSION_NAME 将覆盖此设置。

有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色

sdk_ua_app_id

一个 AWS 账户 可以被多个客户应用程序用来拨打电话 AWS 服务。应用程序 ID 标识哪个源应用程序使用进行了一组调用 AWS 服务。 AWS SDKs而且,服务不会使用或解释此值,除非将其显示在客户通信中。例如,此值可以包含在操作电子邮件中,以唯一标识您的哪些应用程序与通知相关联。

应用程序 ID 是一个字符串,最大长度为 50 个字符。允许使用字母、数字和以下特殊字符:! $ % & * + - . , ^ _ ` | ~默认情况下,不分配任何值。

sdk_ua_app_id = prod1

使用 AWS_SDK_UA_APP_ID 环境变量可以覆盖此设置。您不能将此值设置为命令行参数。

source_profile

指定包含长期凭证的命名配置文件, AWS CLI 可使用这些凭证代入通过 role_arn 参数指定的角色。不能在同一配置文件中同时指定 source_profilecredential_source

source_profile = production-profile
sts_regional_endpoints

指定如何 AWS CLI 确定 AWS CLI 客户端用来与 AWS Security Token Service (AWS STS) 通信的 AWS 服务端点。 AWS CLI 版本 1 的默认值为legacy

您可以指定以下两个值之一:

  • legacy— 对以下 AWS 区域使用全局STS终端节点:ap-northeast-1、、ap-south-1、、ap-southeast-1ap-southeast-2aws-globalca-central-1eu-central-1eu-north-1eu-west-1eu-west-2eu-west-3sa-east-1、、us-east-1us-east-2us-west-1、和us-west-2sts.amazonaws.com所有其他区域自动使用其各自的区域端点。

  • regional— AWS CLI 始终使用当前配置区域的 AWS STS 终端节点。例如,如果将客户端配置为使用us-west-2,则对的所有调用 AWS STS 都将发送到区域终端节点,sts.us-west-2.amazonaws.com而不是全球sts.amazonaws.com终端节点。要在启用此设置时向全局终端节点发送请求,您可以将区域设置为 aws-global

使用 AWS_STS_REGIONAL_ENDPOINTS 环境变量可以覆盖此设置。您不能将此值设置为命令行参数。

use_dualstack_endpoint

允许使用双堆栈端点发送 AWS 请求。要了解有关双堆栈终端节点的更多信息,请参阅《亚马逊简单存储服务用户指南》中的 “使用 Amazon S3 双栈终端节点”。IPv4 IPv6双堆栈端点适用于某些区域。如果服务不存在双栈端点或 AWS 区域,则请求将失败。默认情况下,将禁用该功能。

该设置与 use_accelerate_endpoint 设置互斥。

端点配置设置位于多个位置,例如系统或用户环境变量、本地 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. 最后使用相应URL AWS 服务 端点的任何默认端点。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点

use_fips_endpoint

有些 AWS 服务提供的端点支持联邦信息处理标准 (FIPS) 140-2。 AWS 区域当 AWS 服务支持时FIPS,此设置会指定 AWS CLI 应使用哪个FIPS端点。与标准 AWS 端点不同,FIPS端点使用符合 FIPS 140-2 的TLS软件库。与美国政府有业务来往的企业可能需要使用这些端点。

如果启用了此设置,但您的服务中不存在FIPS终端节点 AWS 区域,则 AWS 命令可能会失败。在这种情况下,请使用 --endpoint-url 选项手动指定要在命令中使用的端点,或者使用特定于服务的端点

有关通过指定FIPS终端节点的更多信息 AWS 区域,请参阅按服务划分的FIPS终端节点

端点配置设置位于多个位置,例如系统或用户环境变量、本地 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. 最后使用相应URL AWS 服务 端点的任何默认端点。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点

web_identity_token_file

指定包含身份提供商提供的 OAuth 2.0 访问令牌或 OpenID Connect ID 令牌的文件路径。 AWS CLI 加载此文件的内容,并将其作为 WebIdentityToken 参数传递给 AssumeRoleWithWebIdentity 操作。

环境变量 AWS_WEB_IDENTITY_TOKEN_FILE 将覆盖此设置。

有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色

tcp_keepalive

指定 AWS CLI 客户端是否使用TCP保持活动状态的数据包。

该条目没有等效的环境变量或命令行选项。

tcp_keepalive = false

S3 自定义命令设置

Amazon S3 支持多种用于配置如何 AWS CLI 执行 Amazon S3 操作的设置。一些设置适用于 s3apis3 命名空间中的所有 S3 命令。其他命令专门用于 S3 的 “自定义” 命令,这些命令抽象了常见的操作,其作用不仅仅是 one-to-one映射到API操作。aws s3 传输命令 cpsyncmvrm 具有可用于控制 S3 传输的其他设置。

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

注意

这些设置完全是可选的。即使不配置这些设置中的任何一个,您也应该能够成功使用 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

以下设置适用于 s3s3api 命名空间中的任何 S3 命令。

addressing_style

指定要使用的寻址样式。这可以控制存储桶名称是在主机名中还是属于主机名的一部分URL。有效值包括 pathvirtualauto。默认值为 auto

构造 Amazon S3 终端节点的样式有两种。第一种称为 virtual,它将存储桶名称包含为主机名的一部分。例如:https://bucketname.s3.amazonaws.com。或者,对于path样式,您可以将存储桶名称当作路径对待URI;例如,https://s3.amazonaws.com/bucketname。中的默认值CLI是 to useauto,它会尝试尽可能使用该virtual样式,但在需要时会回退到path样式。例如,如果您的存储桶名称不DNS兼容,则存储桶名称不能是主机名的一部分,必须位于路径中。使用后auto,CLI将检测到这种情况并自动为您切换到path样式。如果您将寻址方式设置为path,则必须确保您在中配置的 AWS 区域与存储桶的区域 AWS CLI 相匹配。

payload_signing_enabled

指定是否对 sigv4 SHA256 负载进行签名。默认情况下,在使用时,流式上传(UploadPartPutObject)处于禁用HTTPS状态。默认情况下,false对于流式上传(UploadPartPutObject),该值设置为,但前提ContentMD5是存在(默认情况下会生成)并且终端节点使用HTTPS。

如果设置为 true,S3 请求将以校验和的形式收到额外的内容验证,SHA256校验和将为您计算并包含在请求签名中。如果设置为 false,则不计算校验和。禁用该设置可减少校验和计算产生的性能开销。

use_accelerate_endpoint

为所有 s3s3api 命令使用 Amazon S3 加速终端节点。默认值为 False。该设置与 use_dualstack_endpoint 设置互斥。

如果设置为 true,则 AWS CLI 会将所有 Amazon S3 请求定向到的S3 Accelerate终端节点s3-accelerate.amazonaws.com。要使用该终端节点,您必须让您的存储桶使用 S3 Accelerate。使用存储桶寻址的虚拟样式发送所有请求:my-bucket.s3-accelerate.amazonaws.com。不会将任何 ListBucketsCreateBucketDeleteBucket 请求发送到 S3 加速终端节点,因为该终端节点不支持这些操作。如果将任何 --endpoint-urlhttps://s3-accelerate.amazonaws.com 命令的 http://s3-accelerate.amazonaws.com 参数设置为 s3s3api,也可以设置该行为。

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

max_bandwidth

指定向 Amazon S3 上传数据和从其下载数据可使用的最大带宽。默认为无限制。

这限制了 S3 命令可用于向 Amazon S3 传输数据和从 Amazon S3 传输数据的最大带宽。该值仅适用于上传和下载;它不适用于复制或删除。值以每秒字节数表示。该值可以指定为:

  • 一个整数。例如,1048576 将最大带宽使用率设置为每秒 1 兆字节。

  • 一个整数,后跟速率后缀。可以使用以下格式指定速率后缀:KB/sMB/sGB/s。例如,300KB/s10MB/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/file1localdir/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 操作。例如,任务可以是 PutObjectTaskGetObjectTaskUploadPartTask。任务添加到队列的速度可能比使用者完成任务的速度快得多。为避免无限制增长,任务队列大小设置了特定大小的上限。该设置用于更改该最大数量的值。

您通常不需要更改该设置。此设置还与他们知道需要运行的任务数量相对应。 AWS CLI 这意味着默认情况下,他们 AWS CLI 只能看到前面的 1000 个任务。假设排队速度快于任务完成率,则增加此值意味着 AWS CLI 可以更快地知道所需的任务总数。但不利后果是更大的 max_queue_size 需要更多的内存。

multipart_chunksize

指定用于单个文件的分段传输的区块大小。 AWS CLI 默认值为 8 MB,最少为 5 MB。

当文件传输超出 multipart_threshold 时, AWS CLI 将文件分成该大小的块。可以使用与 multipart_threshold 相同的语法指定该值,即整数形式的字节数,或使用大小和后缀。

multipart_threshold

指定用于单个文件分段传输的大小阈值。 AWS CLI 默认值为 8 MB。

上传、下载或复制文件时,如果文件超出该大小,Amazon S3 命令将切换到分段操作。您可以通过以下两种方式之一指定该值:

  • 文件大小(以字节为单位)。例如,1048576

  • 文件大小及大小后缀。您可以使用 KBMBGBTB。例如,10MB1GB

    注意

    S3 可能会对可用于分段操作的有效值施加约束。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的 S3 分段上传文档