Amazon CLI 中的配置和凭证文件设置
您可以将常用的配置设置和凭证保存在由 Amazon CLI 维护的文件中。
这些文件将分成 profiles。默认情况下,Amazon CLI 将使用在名为 default 的配置文件中找到的设置。要使用备用设置,您可以创建和引用其他配置文件。
您可以通过设置某个支持的环境变量或使用命令行参数来覆盖个别设置。有关配置设置优先顺序的更多信息,请参阅配置 Amazon CLI 设置。
注意
有关如何设置凭证的信息,请参阅 Amazon CLI 身份验证和访问凭证。
配置和凭证文件的格式
config 和 credentials 文件将归入各个节中。节包括 profiles、sso-sessions 和 services。节是一个命名的设置集合,它一直持续到遇到另一个节定义行为止。可将多个配置文件和节存储在 config 和 credentials 文件中。
这些文件是使用以下格式的纯文本文件:
-
节名称用方括号 [] 括起来,例如
[default]、[profile和user1][sso-session]。 -
节中的所有条目均采用
setting_name=value的一般形式。 -
可以通过以井号字符(
#)开头来注释掉行。
config 和 credentials 文件包含以下节类型:
节类型:profile
配置文件节名称使用以下格式,具体取决于文件:
-
Config 文件:
[default][profileuser1] -
凭证文件:
[default][user1]在
credentials文件中创建条目时,请勿 使用单词profile。
每个配置文件都可以指定不同的凭证,还可以指定不同的 Amazon 区域和输出格式。在 config 文件中命名配置文件时,请包括前缀词“profile”,但不要将它包括在 credentials 文件中。
以下示例显示指定了两个配置文件、区域和输出的 credentials 和 config 文件。第一个 [default] 配置文件在运行未指定配置文件的 Amazon CLI 命令时使用。第二个在运行有 --profile user1 参数的 Amazon CLI 命令时使用。
有关更多信息以及其他授权和凭证方法,请参阅 在 Amazon CLI 中使用 IAM 用户凭证进行身份验证。
节类型:sso-session
config 文件的 sso-session 部分用于对获取 SSO 访问令牌的配置变量进行分组,然后可以用来获取 Amazon 凭证。使用了以下设置:
您定义一个 sso-session 部分并将其关联到配置文件。必须在 sso-session 部分内设置 sso_region 和 sso_start_url。通常,sso_account_id 和 sso_role_name 必须在 profile 部分进行设置,以便 SDK 可以请求 SSO 凭证。
以下示例将 SDK 配置为请求 SSO 凭证并支持自动令牌刷新:
[profiledev] sso_session =my-ssosso_account_id =111122223333sso_role_name =SampleRole[sso-sessionmy-sso] sso_region =us-east-1sso_start_url =https://my-sso-portal.awsapps.com/start
这也允许在多个配置文件中重复使用 sso-session 配置:
[profiledev] sso_session =my-ssosso_account_id =111122223333sso_role_name =SampleRole[profileprod] sso_session =my-ssosso_account_id =111122223333sso_role_name =SampleRole2[sso-sessionmy-sso] sso_region =us-east-1sso_start_url =https://my-sso-portal.awsapps.com/start
但是,并不是所有 SSO 令牌配置场景都需要 sso_account_id 和 sso_role_name。如果您的应用程序仅使用支持持有者身份验证的 Amazon 服务,则不需要传统 Amazon 凭证。持有者身份验证是一种 HTTP 身份验证方案,它使用称为持有者令牌的安全令牌。在这种情况下,不需要 sso_account_id 和 sso_role_name。请参阅 Amazon 服务的单独指南,以确定其是否支持持有者令牌授权。
此外,可以作为 sso-session 的一部分配置注册范围。范围是 OAuth 2.0 中的一种机制,用于限制应用程序对用户账户的访问。应用程序可以请求一个或多个范围,向应用程序签发的访问令牌将仅限于授予的范围。这些范围定义了为已注册的 OIDC 客户端请求授权的权限和客户端检索的访问令牌。以下示例将 sso_registration_scopes 设置为提供已列出账户/角色的访问权限:
[sso-sessionmy-sso] sso_region =us-east-1sso_start_url =https://my-sso-portal.awsapps.com/startsso_registration_scopes =sso:account:access
身份验证令牌缓存到 ~/.aws/sso/cache 目录下的磁盘上,文件名基于会话名称。
有关此配置类型的更多信息,请参阅 使用 Amazon CLI 配置 IAM Identity Center 身份验证。
节类型:services
services 节是一组为 Amazon Web Services 服务 请求配置自定义端点的设置。然后,配置文件将链接到 services 节。
[profiledev] services =my-services
services 节按 <SERVICE> = 行分成多个小节,其中 <SERVICE> 是 Amazon Web Services 服务 标识键。Amazon Web Services 服务 标识符基于 API 模型的 serviceId,不过需要将所有空格替换为下划线,并将所有字母小写。有关 services 节中要使用的所有服务标识符密钥的列表,请参阅在 Amazon CLI 中使用端点。服务标识符密钥后面是嵌套的设置,每个设置单独成行,缩进两个空格。
以下示例会配置端点,用于在 dev 配置文件中使用的 my-services 节中向服务发出的请求。后面紧跟的任何缩进行都包含在该小节中,并适用于该服务。
[profiledev] services =my-services[servicesmy-services] dynamodb = endpoint_url =http://localhost:8000
有关特定于服务的端点的更多信息,请参阅 在 Amazon CLI 中使用端点。
如果您的配置文件具有基于角色的凭证,而这些凭证是通过 IAM 代入角色功能的 source_profile 参数配置的,则开发工具包仅使用所指定配置文件的服务配置。它不使用关联有角色的配置文件。例如,使用以下共享 config 文件:
[profileA] credential_source =Ec2InstanceMetadataendpoint_url =https://profile-a-endpoint.aws/[profileB] source_profile =Arole_arn =arn:aws:iam::123456789012:role/roleBservices =profileB[servicesprofileB] ec2 = endpoint_url =https://profile-b-ec2-endpoint.aws
如果您使用配置文件 B 并在代码中调用 Amazon EC2,则端点将解析为 https://profile-b-ec2-endpoint.aws。如果您的代码向其他任何服务发出请求,则端点解析将不遵循任何自定义逻辑。该端点不会解析到配置文件 A 中定义的全局端点。要使全局端点对配置文件 B 生效,您需要直接在配置文件 B 中设置 endpoint_url。
配置设置存储在何处?
Amazon CLI 将使用 aws
configure 指定的敏感凭证信息存储在主目录中名为 credentials 的文件夹中名为 的本地文件中。使用 .awsaws configure 指定的较不敏感的配置选项存储在名为 config 的本地文件中,该文件也存储在主目录的 文件夹中。.aws
在 config 文件中存储凭证
您可以将所有配置文件设置保留在一个文件中,因为 Amazon CLI 可以从 config 文件中读取凭证。如果两个文件中都有共享相同名称的配置文件的凭证,则凭证文件中的密钥优先。我们建议将凭证保存在 credentials 文件中。这些文件也被各种语言软件开发工具包(SDK)使用。如果除了 Amazon CLI 之外,您还使用某个开发工具包,请确认凭证是否应存储在其自己的文件中。
主目录位置因操作系统而异,但在 Windows 中使用环境变量 %UserProfile% 引用,在基于 Unix 的系统中使用 $HOME 或 ~(波形符)引用。通过将 AWS_CONFIG_FILE 和 AWS_SHARED_CREDENTIALS_FILE 环境变量设置为另一个本地路径,可以为文件指定非默认位置。有关详细信息,请参阅为 Amazon CLI 配置环境变量。
当您使用共享配置文件指定 Amazon Identity and Access Management(IAM)角色时,Amazon CLI 将调用 Amazon STS AssumeRole 操作来检索临时凭证。随后,这些凭证将存储起来(存储在 中)。后续 Amazon CLI 命令将使用缓存的临时凭证,直到它们过期,这时 Amazon CLI 将自动刷新这些凭证。~/.aws/cli/cache
使用命名配置文件
如果未明确定义配置文件,则使用 default 配置文件。
要使用命名配置文件,请向您的命令添加 --profile
选项。以下示例列出了使用 profile-nameuser1 配置文件中定义的凭证和设置的所有 Amazon EC2 实例。
$aws ec2 describe-instances --profile user1
要为多个命令使用一个命名配置文件,可以通过将 AWS_PROFILE 环境变量设置为默认配置文件来避免在每个命令中指定配置文件。您可以使用 --profile 参数来覆盖此设置。
使用命令设置和查看配置设置
可通过多种方法使用命令来查看和设置配置设置。
aws configure-
运行此命令可快速设置和查看 凭证、区域和输出格式。以下示例显示了示例值。
$aws configureAWS Access Key ID [None]:AWS Secret Access Key [None]:AKIAIOSFODNN7EXAMPLEDefault region name [None]:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYDefault output format [None]:us-west-2json aws configure set-
您可以使用
aws configure set设置任何凭证或配置设置。使用--profile设置指定要查看或修改的配置文件。例如,以下命令设置名为
region的配置文件中的integ。$aws configure set regionus-west-2--profileinteg要删除某个设置,可在文本编辑器中从
config和credentials文件中手动删除该设置。 aws configure get-
您可以检索已使用
aws configure get设置的任何凭证或配置设置。使用--profile设置指定要查看或修改的配置文件。例如,以下命令检索名为
region的配置文件中的integ设置。$aws configure getregion--profileintegus-west-2如果输出为空,不会显式设置该设置,并将使用默认值。
aws configure import-
导入从 IAM Web 控制台生成的
CSV凭证。这不适用于从 IAM Identity Center 生成的凭证;使用 IAM Identity Center 的客户应使用 aws configure sso。将导入一个配置文件名称与用户名匹配的 CSV 文件。CSV 文件必须包含以下标头。-
用户名称
-
访问密钥 ID
-
秘密访问密钥
注意
在创建初始密钥对期间,一旦您关闭 Download .csv file(下载 .csv 文件)对话框,在关闭该对话框之后就无法访问秘密访问密钥了。如果您需要
.csv文件,则需要自己创建一个包含所需标头和存储的密钥对信息的文件。如果您无法访问密钥对信息,则需要创建新的密钥对。$aws configure import --csvfile://credentials.csv -
aws configure list-
要列出配置数据,请使用
aws configure list命令。此命令列出配置文件以及用于指定的配置文件的访问密钥、密钥和区域配置信息。对于每个配置项目,它会显示值、检索配置值的位置以及配置变量名称。例如,如果您在环境变量中提供 Amazon Web Services 区域,则此命令会显示您配置的区域的名称、该值来自环境变量以及环境变量的名称。
对于角色和 IAM Identity Center 等临时凭证方法,此命令显示临时缓存的访问密钥并显示秘密访问密钥。
$aws configure listName 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 aws configure list-profiles-
要列出所有配置文件名称,请使用
aws configure list-profiles命令。$aws configure list-profilesdefault test aws configure sso-
运行此命令可快速设置和查看 Amazon IAM Identity Center 凭证、区域和输出格式。以下示例显示了示例值。
$aws configure ssoSSO session name (Recommended):my-ssoSSO start URL [None]:https://my-sso-portal.awsapps.com/startSSO region [None]:us-east-1SSO registration scopes [None]:sso:account:access aws configure sso-session-
运行此命令可在
credentials和config文件的 sso-session 部分中快速设置和查看 Amazon IAM Identity Center 凭证、区域和输出格式。以下示例显示了示例值。$aws configure sso-sessionSSO session name:my-ssoSSO start URL [None]:https://my-sso-portal.awsapps.com/startSSO region [None]:us-east-1SSO registration scopes [None]:sso:account:access aws configure export-credentials-
运行此命令以指定的格式导出当前设置的凭证。默认情况下,该命令以
process格式导出默认凭证,这是 Amazon SDK 和工具凭证格式支持的 JSON 格式。$aws configure export-credentials{ "Version": 1, "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" }要导出特定的配置文件和格式,请使用
--profile和--format选项。格式选项如下所示:-
(默认)
process:Amazon SDK 和工具credential_process配置支持的 JSON 格式。 -
env:采用导出的 Shell 格式的环境变量。 -
env-no-export:采用 Shell 格式的未导出的环境变量。 -
powershell:采用 PowerShell 格式的环境变量。 -
windows-cmd:采用 Windows 命令行格式的环境变量。
以下示例将
user1配置文件导出为已导出的 Shell 格式。$aws configure export-credentials--profile user1 --format envexport AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -
设置新的配置和凭证命令示例
以下示例说明如何使用为不同的身份验证方法指定的凭证、区域和输出配置默认配置文件。
支持的 config 文件设置
config 文件支持以下设置。将使用指定(或默认)配置文件中列出的值,除非它们被具有相同名称的环境变量或具有相同名称的命令行选项覆盖。有关哪些顺序设置优先的更多信息,请参阅配置 Amazon CLI 设置
全局设置
-
account_id_endpoint_mode -
指定是否使用基于 Amazon 账户的端点 ID 来调用受支持的 Amazon Web Services 服务。有关基于账户的端点的更多信息,请参阅基于账户的端点。
此设置可以设为以下值:
-
(默认)
preferred:端点应包含账户 ID(如果有)。 -
disabled:已解析的端点不包含账户 ID。 -
required:端点必须包含账户 ID。如果账户 ID 不可用,SDK 会引发错误。
可以被
AWS_ACCOUNT_ID_ENDPOINT_MODE环境变量覆盖。要使用基于账户的端点,必须在AWS_ACCOUNT_ID环境变量或aws_account_id设置中设置 ID。account_id_endpoint_mode =preferred端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 Amazon 配置文件),或者在命令行上显式声明为参数。Amazon CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
-
-
aws_access_key_id -
指定用作凭证一部分的对命令请求进行身份验证的 Amazon 访问密钥。虽然它可以存储在
config文件中,但我们建议您将其存储在credentials文件中。可以被
AWS_ACCESS_KEY_ID环境变量覆盖。您不能将访问密钥 ID 指定为命令行选项。aws_access_key_id =AKIAIOSFODNN7EXAMPLE -
aws_account_id -
指定要用于调用受支持的 Amazon Web Services 服务的基于 Amazon 账户的端点 ID。有关基于账户的端点的更多信息,请参阅基于账户的端点。
可以被
AWS_ACCOUNT_ID环境变量覆盖。AWS_ACCOUNT_ID_ENDPOINT_MODE环境变量或account_id_endpoint_mode设置必须设置为preferred或required,才能使用此设置。aws_account_id =123456789EXAMPLE端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 Amazon 配置文件),或者在命令行上显式声明为参数。Amazon CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
aws_secret_access_key-
指定用作凭证一部分的对命令请求进行身份验证的 Amazon 私有密钥。虽然它可以存储在
config文件中,但我们建议您将其存储在credentials文件中。可以被
AWS_SECRET_ACCESS_KEY环境变量覆盖。您不能将私有访问密钥指定为命令行选项。aws_secret_access_key =wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY aws_session_token-
指定 Amazon 会话令牌。只有在手动指定临时安全凭证时才需要会话令牌。虽然它可以存储在
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_auto_prompt-
为 Amazon CLI 版本 2 启用自动提示。可以使用两种设置:
-
on每次尝试运行aws命令时都会使用完整的自动提示模式。这包括在完整或不完整的命令之后按 ENTER 键。cli_auto_prompt = on -
on-partial使用部分自动提示模式。如果命令不完整或由于客户端验证错误而无法运行,则使用自动提示。如果您已有现有脚本、运行手册,或者如果您希望只对于不熟悉的命令收到自动提示,而不是每个命令都收到提示,则此模式将非常有帮助。cli_auto_prompt = on-partial
您可以使用
aws_cli_auto_prompt环境变量或--cli-auto-prompt和--no-cli-auto-prompt命令行参数覆盖此设置。有关 Amazon CLI 版本 2 自动提示特征的信息,请参阅 在 Amazon CLI 中启用和使用命令提示符。
-
cli_binary_format-
指定 Amazon CLI 版本 2 如何解释二进制输入参数。它可能为下列值之一:
-
base64 – 这是默认值。作为二进制大型对象(BLOB)键入的输入参数接受 base64 编码字符串。要传递真实的二进制内容,请将内容放在文件中,并提供文件的路径和名称,将
fileb://前缀作为参数值。要传递文件中包含的 base64 编码文本,请提供文件的路径和名称,并将file://前缀作为参数值。 -
raw-in-base64-out – Amazon CLI 版本 1 的默认值。如果设置的值为
raw-in-base64-out,则使用file://前缀引用的文件会作为文本进行读取,然后 Amazon CLI 尝试将其编码为二进制。
此条目没有等效的环境变量。您可以使用
--cli-binary-format raw-in-base64-out参数在单个命令上指定此值。cli_binary_format = raw-in-base64-out如果使用
fileb://前缀表示法引用文件中的二进制值,Amazon CLI 始终希望文件中包含原始二进制内容,并且不会尝试转换该值。如果使用
file://前缀表示法引用文件中的二进制值,Amazon CLI 会根据当前cli_binary_format设置来处理此文件。如果该设置的值为base64(未明确设置时的默认值),Amazon CLI 希望该文件中包含 base64 编码文本。如果该设置的值为raw-in-base64-out,Amazon CLI 希望文件中包含原始二进制内容。 -
cli_history-
默认情况下禁用。此设置启用 Amazon CLI 的命令历史记录。启用此设置后,Amazon CLI 记录
aws命令的历史记录。cli_history = enabled您可以使用
aws history list命令列出您的历史记录,然后使用aws history show命令中生成的command_ids获取详细信息。有关更多信息,请参阅《Amazon CLI 参考指南》中的aws history。 cli_pager-
指定用于处理输出的分页程序。默认情况下,Amazon CLI 版本 2 会通过操作系统的默认分页程序返回所有输出。
可以被 AWS_PAGER 环境变量覆盖。
cli_pager=less cli_timestamp_format-
指定时间戳值的输出格式。可以指定以下任一值:
-
iso8601 – Amazon CLI 版本 2 的默认值。如果指定,Amazon CLI 根据 ISO 8601
对输出中的所有时间戳进行重新格式化。ISO 8601 格式的时间戳与以下示例类似。以下示例演示了如何通过用 T分隔日期和时间,并在时间后包含Z来格式化时间。YYYY-MM-DDThh:mm:ssZ以下示例显示了使用先前格式的时间戳。
2024-05-08T15:16:43Z -
wire – Amazon CLI 版本 1 的默认值。如果指定,Amazon CLI 按原样显示在 HTTP 查询响应中收到的所有时间戳值。
该设置没有等效的环境变量或命令行选项。此设置不更改时间戳输入,只更改输出格式。
cli_timestamp_format = iso8601 -
credential_process-
指定 Amazon CLI 运行的外部命令,以生成或检索用于该命令的身份验证凭证。命令必须以特定格式返回凭证。有关如何使用该设置的更多信息,请参阅在 Amazon CLI 中使用外部进程获取凭证。
该条目没有等效的环境变量或命令行选项。
credential_process =/opt/bin/awscreds-retriever --username susan credential_source-
在 Amazon EC2 实例或容器中使用,指定 Amazon CLI 在何处可以找到要用于代入通过
role_arn参数指定的角色的凭证。不能在同一配置文件中同时指定source_profile和credential_source。此参数具有三个值:
-
Environment – 指定 Amazon CLI 从环境变量检索源凭证。
-
Ec2InstanceMetadata – 指定 Amazon CLI 将使用附加到 EC2 实例配置文件的 IAM 角色以获取源凭证。
-
EcsContainer – 指定 Amazon CLI 将附加到 ECS 容器的 IAM 角色用作源凭证。
credential_source = Ec2InstanceMetadata -
duration_seconds-
指定角色会话的最大持续时间(以秒为单位)。该值的范围在 900 秒(15 分钟)到角色的最大会话持续时间设置之间。此参数为可选参数,默认情况下,该值设置为 3600 秒。
endpoint_url-
指定用于所有服务请求的端点。如果在
config文件的 services 节中使用此设置,则该端点仅用于指定的服务。有关更多信息,请参阅 为所有 Amazon Web 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端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 Amazon 配置文件),或者在命令行上显式声明为参数。Amazon CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
ignore_configure_endpoint_urls-
如果启用,则 Amazon CLI 会忽略
config文件中指定的所有自定义端点配置。有效值为true和false。ignore_configure_endpoint_urls = true端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 Amazon 配置文件),或者在命令行上显式声明为参数。Amazon CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
external_id-
指定第三方用于在其客户账户中代入角色的唯一标识符。这将映射到
AssumeRole操作中的ExternalId参数。仅当角色的信任策略为ExternalId指定值时,才需要此参数。有关更多信息,请参阅《IAM 用户指南》中的如何在向第三方授予对 Amazon 资源的访问权限时使用外部 ID。 max_attempts-
指定 Amazon CLI 重试处理程序使用的最大重试次数值,其中初始调用计入您提供的
max_attempts值。您可以使用
AWS_MAX_ATTEMPTS环境变量覆盖此值。max_attempts =3 mfa_serial-
代入角色时要使用的 MFA 设备的标识号。仅当代入角色的信任策略包含需要 MFA 身份验证的条件,此值才是必需的。该值可以是硬件设备(例如
GAHT12345678)的序列号,也可以是虚拟 MFA 设备(例如arn:aws:iam::123456789012:mfa/)的 Amazon 资源名称(ARN)。user output-
指定使用该配置文件请求的命令的默认输出格式。您可以指定以下任意值:
可以被
AWS_DEFAULT_OUTPUT环境变量或--output命令行选项覆盖。output =table parameter_validation-
指定 Amazon CLI 客户端在将参数发送到 Amazon 服务端点之前是否尝试验证参数。
-
true – 这是默认值。指定后,Amazon CLI 将执行命令行参数的本地验证。
-
false – 如果指定,Amazon CLI 在将命令行参数发送到 Amazon 服务端点前不对其进行验证。
该条目没有等效的环境变量或命令行选项。
parameter_validation = false -
region-
对于使用该配置文件请求的命令,指定要将请求发送到的 Amazon Web Services 区域。
-
您可以指定可用于所选服务的任何区域代码,有关区域代码的列表,请参阅《Amazon Web Services 一般参考》中的 Amazon 区域和端点。
-
通过
aws_global,您可以为不仅支持区域端点,还支持全局端点的服务指定全局端点,例如 Amazon Security Token Service(Amazon STS)和 Amazon Simple Storage Service(Amazon S3)。
您可以使用
AWS_REGION环境变量、AWS_DEFAULT_REGION环境变量或--region命令行选项覆盖此值。region =us-west-2 -
request_checksum_calculation-
指定何时计算请求有效载荷的校验和,并提供以下选项:
-
when_supported–(默认)当操作在其服务模型中指定校验和算法或需要请求校验和时,将计算请求有效载荷校验和。 -
when_required– 当操作需要请求校验和或用户提供由 Amazon Web Services 服务 建模的requestAlgorithmMember时,将计算请求有效载荷校验和。
request_checksum_calculation =when_supported环境变量 AWS_REQUEST_CHECKSUM_CALCULATION 将覆盖此设置。
-
response_checksum_validation-
指定何时对响应有效载荷执行校验和验证,并提供以下选项:
-
when_supported–(默认)当操作在其服务模型中指定 Amazon CLI 支持的响应算法时,将执行响应有效载荷校验和验证。 -
when_required:当操作在其服务模型中指定 Amazon CLI 支持的响应算法,并且您在操作输出中将建模的requestValidationModeMember设置为ENABLED时,将执行响应有效载荷校验和验证。
response_checksum_validation =when_supported环境变量 AWS_RESPONSE_CHECKSUM_VALIDATION 将覆盖此设置。
-
retry_mode-
指定 Amazon CLI 使用哪种重试模式。有三种重试模式可用:
standard(默认)、legacy(默认)和adaptive。有关重试的更多信息,请参阅Amazon CLI 中的 Amazon CLI 重试次数 。您可以使用
AWS_RETRY_MODE环境变量覆盖此值。retry_mode =standard role_arn-
指定要用于运行 Amazon 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-
指定要附加到角色会话的名称。此值在
RoleSessionName调用 Amazon CLI 操作时将提供给AssumeRole参数,并成为代入角色用户 ARN 的一部分:arn:aws:sts::。此参数为可选参数。如果未提供此值,则将自动生成会话名称。此名称显示在与此会话关联的条目的 Amazon CloudTrail 日志中。123456789012:assumed-role/role_name/role_session_namerole_session_name =maria_garcia_role环境变量 AWS_ROLE_SESSION_NAME 将覆盖此设置。
有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
services-
指定要用于您的配置文件的服务配置。
[profiledev-s3-specific-and-global] endpoint_url =http://localhost:1234services =s3-specific[servicess3-specific] s3 = endpoint_url =http://localhost:4567有关更多信息,请参阅 节类型:services 中的
services节。环境变量 AWS_ROLE_SESSION_NAME 将覆盖此设置。
有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
sdk_ua_app_id-
一个 Amazon Web Services 账户可以供多个客户应用程序来调用 Amazon Web Services 服务。应用程序 ID 标识哪个源应用程序使用 Amazon Web Services 服务 进行了一组调用。AmazonSDK 和服务不会使用或解释此值,除非将其显示在客户通信中。例如,此值可以包含在操作电子邮件中,以唯一标识您的哪个应用程序与通知相关联。
应用程序 ID 是一个字符串,最大长度为 50 个字符。允许使用字母、数字和以下特殊字符:
! $ % & * + - . , ^ _ ` | ~。默认情况下,不分配任何值。sdk_ua_app_id =prod1使用 AWS_SDK_UA_APP_ID 环境变量可以覆盖此设置。您不能将此值设置为命令行参数。
sigv4a_signing_region_set-
使用逗号分隔列表指定在通过 SigV4a 进行签名时要使用的区域。如果未设置此变量,Amazon CLI 会使用 Amazon Web Services 服务 所使用的默认值。如果 Amazon Web Services 服务 没有默认值,则请求签名将使用
*作为值,在所有区域内生效。sigv4a_signing_region_set =us-west-2, us-east-1有关 SigV4a 的更多信息,请参阅《IAM 用户指南》中的适用于 API 请求的 Amazon 签名版本 4。
使用 AWS_SIGV4A_SIGNING_REGION_SET 环境变量可以覆盖此设置。您不能将此值设置为命令行参数。
source_profile-
指定包含长期凭证的命名配置文件,Amazon CLI 可使用这些凭证代入通过
role_arn参数指定的角色。不能在同一配置文件中同时指定source_profile和credential_source。source_profile =production-profile sso_account_id-
指定 Amazon 账户 ID,其中包含的 IAM 角色具有您希望授予关联 IAM Identity Center 用户的权限。
此设置没有环境变量或命令行选项。
sso_account_id = 123456789012 sso_region-
指定包含 Amazon 访问门户主机的 Amazon 区域。它与默认的 CLI
region参数是分开的,并且可以是不同的区域。此设置没有环境变量或命令行选项。
sso_region = us_west-2 sso_registration_scopes-
要为
sso-session授权的范围的逗号分隔列表。范围授权对 IAM Identity Center 持有者令牌授权端点的访问。有效范围是字符串,例如sso:account:access。此设置不适用于遗留的不可刷新配置。sso_registration_scopes = sso:account:access sso_role_name-
指定使用此配置文件时定义用户权限的 IAM 角色的友好名称。
此设置没有环境变量或命令行选项。
sso_role_name = ReadAccess sso_start_url-
指定指向企业的 Amazon 访问门户的 URL。Amazon CLI 使用此 URL 与 IAM Identity Center 服务建立会话以验证其用户的身份。要查找 Amazon 访问门户 URL,请使用下列操作之一:
-
打开邀请电子邮件,其中列出了 Amazon 访问门户 URL。
-
通过以下网址打开 Amazon IAM Identity Center 控制台:https://console.aws.amazon.com/singlesignon/
。您的设置中将列出 Amazon 访问门户 URL。
此设置没有环境变量或命令行选项。
sso_start_url =https://my-sso-portal.awsapps.com/start -
use_dualstack_endpoint-
允许使用双堆栈端点发送 Amazon 请求。要详细了解支持 IPv4 和 IPv6 流量的双堆栈端点,请参阅 Amazon Simple Storage Service 用户指南中的使用 Amazon S3 双堆栈端点。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 Amazon Web Services 区域的双堆栈端点,则请求将失败。有效的设置为
true和false。默认情况下,将禁用该功能。有关更多信息,请参阅 设置成为所有 Amazon Web Services 服务使用双堆栈端点。该设置与
use_accelerate_endpoint设置互斥。端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 Amazon 配置文件),或者在命令行上显式声明为参数。Amazon CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
use_fips_endpoint-
在某些 Amazon Web Services 区域,部分 Amazon 服务提供支持美国联邦信息处理标准 (FIPS) 140-2
的端点。当 Amazon 服务支持 FIPS 时,此设置指定 Amazon CLI 应使用哪个 FIPS 端点。与标准 Amazon 端点不同,FIPS 端点使用符合 FIPS 140-2 的 TLS 软件库。与美国政府有业务来往的企业可能需要使用这些端点。有关更多信息,请参阅设置成为所有 Amazon Web Services 服务使用 FIPS 端点。 如果启用此设置,但不存在适用于您所在 Amazon Web Services 区域中的服务的 FIPS 端点,则 Amazon 命令可能会失败。在这种情况下,请使用
--endpoint-url选项手动指定要在命令中使用的端点,或者使用特定于服务的端点。端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 Amazon 配置文件),或者在命令行上显式声明为参数。Amazon CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
web_identity_token_file-
指定一个文件的路径,该文件包含由身份提供者提供的 OAuth 2.0 访问令牌或 OpenID Connect ID 令牌。Amazon CLI 加载此文件的内容,并将其作为
WebIdentityToken参数传递给AssumeRoleWithWebIdentity操作。环境变量
AWS_WEB_IDENTITY_TOKEN_FILE将覆盖此设置。有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
tcp_keepalive-
指定 Amazon CLI 客户端是否使用 TCP keep-alive 数据包。
该条目没有等效的环境变量或命令行选项。
tcp_keepalive = false
S3 自定义命令设置
Amazon S3 支持多项配置 Amazon CLI 如何执行 Amazon S3 操作的设置。一些设置适用于 s3api 和 s3 命名空间中的所有 S3 命令。其他的则专门用于抽象常见操作的 S3“自定义”命令,而不仅仅是对 API 操作的一对一映射。aws s3 传输命令 cp、sync、mv 和 rm 具有可用于控制 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
以下设置适用于 s3 或 s3api 命名空间中的任何 S3 命令。
addressing_style-
指定要使用的寻址样式。这将控制存储桶名称是位于主机名还是 URL 中。有效值包括
path、virtual和auto。默认值为auto。构造 Amazon S3 端点的样式有两种。第一种称为
virtual,它将存储桶名称包含为主机名的一部分。例如:https://。另一种为bucketname.s3.amazonaws.compath样式,您将存储桶名称视为 URI 中的路径,例如https://s3.amazonaws.com/。CLI 中的默认值是使用bucketnameauto,它尝试尽可能使用virtual样式,但在需要时回退到path样式。例如,如果您的存储桶名称与 DNS 不兼容,则存储桶名称不能是主机名的一部分,而必须位于路径中。使用auto时,CLI 将检测这种情况并自动切换到path样式。如果将寻址方式设置为path,您必须确保在 Amazon CLI 中配置的 Amazon 区域与存储桶的区域匹配。 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,Amazon CLI 会将所有 Amazon S3 请求定向到
s3-accelerate.amazonaws.com的S3 Accelerate端点。要使用该端点,您必须让您的存储桶使用S3 Accelerate。使用存储桶寻址的虚拟样式发送所有请求:。不会将任何my-bucket.s3-accelerate.amazonaws.comListBuckets、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 双堆栈端点。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 Amazon Web Services 区域的双堆栈端点,则请求将失败。有效的设置为true和false。默认情况下,将禁用该功能。有关更多信息,请参阅 设置成为所有 Amazon Web Services 服务使用双堆栈端点。该设置与
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 存储桶时,Amazon CLI 可以并行上传文件localdir/file1、localdir/file2和localdir/file3。设置max_concurrent_requests指定可同时运行的最大传输操作数。您可能由于以下原因而需要更改该值:
-
减小该值 – 在某些环境中,默认的 10 个并发请求可能会占用过多的系统资源。这可能导致连接超时或系统响应速度变慢。减小该值可减少 S3 传输命令消耗的资源。但不利后果是 S3 传输可能需要更长时间才能完成。如果使用了限制带宽的工具,则可能需要减小该值。
-
增大该值 – 在某些情况下,您可能希望 Amazon S3 传输根据需要使用尽可能多的网络带宽,以尽可能快地完成任务。在这种情况下,默认的并发请求数可能不足以使用所有可用的网络带宽。增大该值可缩短完成 Amazon S3 传输所需的时间。
-
max_queue_size-
指定作业队列中的最大任务数。默认值是 1000。
Amazon CLI 在内部使用这样一种模型:将 Amazon S3 任务排队,然后由数量受
max_concurrent_requests限制的使用者执行。任务通常映射到单个 Amazon S3 操作。例如,任务可以是PutObjectTask、GetObjectTask或UploadPartTask。任务添加到队列的速度可能比使用者完成任务的速度快得多。为避免无限制增长,作业队列大小设置了特定大小的上限。该设置用于更改该最大数量的值。您通常不需要更改该设置。该设置还对应于 Amazon CLI 知道需要运行的任务数。这意味着,默认情况下 Amazon CLI 只能查看前 1000 个任务。增大该值意味着 Amazon CLI 可更快得知所需任务的总数(假设排队速度快于任务完成速度)。但不利后果是更大的 max_queue_size 需要更多的内存。
multipart_chunksize-
指定 Amazon CLI 用于单个文件的分段传输的块大小。默认值为 8 MB,最少为 5 MB。
当文件传输超出
multipart_threshold时,Amazon CLI 将文件分成该大小的块。可以使用与multipart_threshold相同的语法指定该值,即整数形式的字节数,或使用大小和后缀。 multipart_threshold-
指定 Amazon CLI 用于单个文件的分段传输的大小阈值。默认值为 8 MB。
上传、下载或复制文件时,如果文件超出该大小,Amazon S3 命令将切换到分段操作。您可以通过以下两种方式之一指定该值:
-
文件大小(以字节为单位)。例如
1048576。 -
文件大小及大小后缀。您可以使用
KB、MB、GB或TB。例如:10MB、1GB。注意
S3 可能会对可用于分段操作的有效值施加约束。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的 S3 分段上传文档。
-