本文档仅适用于 AWS CLI 版本 1。 有关 AWS CLI 版本 2 的相关文档,请参阅 版本 2 用户指南 。
AWS CLI 中的配置和凭证文件设置
您可以将常用的配置设置和凭证保存在由 AWS CLI 维护的文件中。
这些文件将分成
profiles
。默认情况下,AWS CLI 将使用在名为
default
的配置文件中找到的设置。要使用备用设置,您可以创建和引用其他配置文件。
您可以通过设置某个支持的环境变量或使用命令行参数来覆盖个别设置。有关配置设置优先顺序的更多信息,请参阅 配置 AWS CLI 设置 。
注意
有关如何设置凭证的信息,请参阅 AWS CLI 身份验证和访问凭证 。
配置和凭证文件的格式
config
和
credentials
文件将归入各个节中。节包括
profiles
和
services
。节是一个命名的设置集合,它一直持续到遇到另一个节定义行为止。可将多个配置文件和节存储在
config
和
credentials
文件中。
这些文件是使用以下格式的纯文本文件:
节名称用方括号 [] 括起来,例如
[default]
、
[profile
和
user1
]
[sso-session]
。
节中的所有条目均采用
setting_name=value
的一般形式。
可以通过以井号字符(
#
)开头来注释掉行。
节类型:
profile
配置文件节名称使用以下格式,具体取决于文件:
在
credentials
文件中创建条目时,
请勿
使用单词
profile
。
每个配置文件都可以指定不同的凭证,还可以指定不同的 AWS 区域和输出格式。在
config
文件中命名配置文件时,请包括前缀词“
profile
”,但不要将它包括在
credentials
文件中。
以下示例显示指定了两个配置文件、区域和输出的
credentials
和
config
文件。第一个
[default]
配置文件在运行未指定配置文件的 AWS CLI 命令时使用。第二个在运行有
--profile user1
参数的 AWS CLI 命令时使用。
此示例介绍来自 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 角色。使用 IAM 角色的配置文件从另一个配置文件提取凭证,然后应用 IAM 角色权限。在以下示例中,
default
是凭证的源配置文件,
user1
将借用相同的凭证,然后代入新角色。有关更多信息,请参阅
在 AWS CLI 中使用 IAM 角色
。
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 实例元数据中获得的凭证。有关更多信息,请参阅 在 AWS CLI 中将 Amazon EC2 实例元数据用作凭证 。
该
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
警告
为了避免安全风险,在开发专用软件或处理真实数据时,请勿使用 IAM 用户进行身份验证,而是使用与身份提供者的联合身份验证,例如 AWS IAM Identity Center 。
此示例介绍来自 AWS Identity and Access Management 的长期凭证。有关更多信息,请参阅 在 AWS CLI 中使用 IAM 用户凭证进行身份验证 。
[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 用户凭证进行身份验证 。
节类型:
services
services
节是一组为 AWS 服务 请求配置自定义端点的设置。然后,配置文件将链接到
services
节。
[profile
dev
] services =my-services
services
节按
<SERVICE> =
行分成多个小节,其中
<SERVICE>
是 AWS 服务 标识键。AWS 服务 标识符基于 API 模型的
serviceId
,不过需要将所有空格替换为下划线,并将所有字母小写。有关
services
节中要使用的所有服务标识符密钥的列表,请参阅
在 AWS CLI 中使用端点
。服务标识符密钥后面是嵌套的设置,每个设置单独成行,缩进两个空格。
以下示例会配置端点,用于在
dev
配置文件中使用的
my-services
节中向服务发出的请求。后面紧跟的任何缩进行都包含在该小节中,并适用于该服务。
[profile
dev
] services =my-services
[servicesmy-services
] dynamodb = endpoint_url =http://localhost:8000
有关特定于服务的端点的更多信息,请参阅 在 AWS CLI 中使用端点 。
如果您的配置文件具有基于角色的凭证,而这些凭证是通过 IAM 代入角色功能的
source_profile
参数配置的,则开发工具包仅使用所指定配置文件的服务配置。它不使用关联有角色的配置文件。例如,使用以下共享
config
文件:
[profile
A
] credential_source =Ec2InstanceMetadata
endpoint_url =https://profile-a-endpoint.aws/
[profileB
] source_profile =A
role_arn =arn:aws:iam::123456789012:role/roleB
services =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
。
配置设置存储在何处?
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 配置环境变量
。
当您使用共享配置文件指定 AWS Identity and Access Management(IAM)角色时,AWS CLI 将调用 AWS STS
AssumeRole
操作来检索临时凭证。随后,这些凭证将存储起来(存储在
中)。后续 AWS CLI 命令将使用缓存的临时凭证,直到它们过期,这时 AWS CLI 将自动刷新这些凭证。
~/.aws/cli/cache
使用命名配置文件
如果未明确定义配置文件,则使用
default
配置文件。
要使用命名配置文件,请向您的命令添加
--profile
选项。以下示例列出了使用
profile-name
user1
配置文件中定义的凭证和设置的所有 Amazon EC2 实例。
$
aws ec2 describe-instances --profile user1
要为多个命令使用一个命名配置文件,可以通过将
AWS_PROFILE
环境变量设置为默认配置文件来避免在每个命令中指定配置文件。您可以使用
--profile
参数来覆盖此设置。
$
export AWS_PROFILE=user1
C:\>
setx AWS_PROFILE user1
使用
set
设置环境变量会更改使用的值,直到当前命令提示符会话结束,或者直到您将该变量设置为其他值。
使用
setx
设置环境变量会更改默认配置文件,直到 Shell 会话结束或直到您将该变量设置为其他值。通过将环境变量放在 shell 的启动脚本中,可使环境变量在未来的会话中继续有效。有关更多信息,请参阅 为 AWS CLI 配置环境变量 。
使用命令设置和查看配置设置
可通过多种方法使用命令来查看和设置配置设置。
运行此命令可快速设置和查看 凭证、区域和输出格式。以下示例显示了示例值。
$
aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
AKIAIOSFODNN7EXAMPLE
Default region name [None]:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default output format [None]:
us-west-2
json
aws configure
您可以使用
aws
configure set
设置任何凭证或配置设置。使用
--profile
设置指定要查看或修改的配置文件。
例如,以下命令设置名为
region
的配置文件中的
integ
。
$
aws configure set region us-west-2
--profile integ
要删除某个设置,可在文本编辑器中从
config
和
credentials
文件中手动删除该设置。
aws configure
您可以检索已使用
aws configure get
设置的任何凭证或配置设置。使用
--profile
设置指定要查看或修改的配置文件。
例如,以下命令检索名为
region
的配置文件中的
integ
设置。
$
aws configure get region
--profile integ
us-west-2
如果输出为空,不会显式设置该设置,并将使用默认值。
aws configure
要列出配置数据,请使用
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
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
命令设置每个值。有关更多信息,请参阅 在 AWS CLI 中使用 IAM 角色。
$
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 实例元数据用作凭证。
$
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 的长期凭证。有关更多信息,请参阅 在 AWS CLI 中使用 IAM 用户凭证进行身份验证。
$
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 设置
required
:端点必须包含账户 ID。如果账户 ID 不可用,SDK 会引发错误。
可以被 AWS_ACCOUNT_ID_ENDPOINT_MODE
环境变量覆盖。要使用基于账户的端点,必须在 AWS_ACCOUNT_ID
环境变量或 aws_account_id
设置中设置 ID。
account_id_endpoint_mode = preferred
端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
某些 AWS 服务维护多个 API 版本以支持向后兼容性。默认情况下,AWS CLI 命令使用最新的可用 API 版本。您可以通过在 config
文件中包含 api_versions
设置来指定要用于配置文件的 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_account_id
指定要用于调用受支持的 AWS 服务的基于 AWS 账户的端点 ID。有关基于账户的端点的更多信息,请参阅基于账户的端点。
可以被 AWS_ACCOUNT_ID
环境变量覆盖。AWS_ACCOUNT_ID_ENDPOINT_MODE
环境变量或 account_id_endpoint_mode
设置必须设置为 preferred
或 required
,才能使用此设置。
aws_account_id = 123456789EXAMPLE
端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
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://
或 https://
开头的 URL 链接。启用后,将检索到的内容而不是 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 – AWS CLI 版本 2 的默认值。如果指定,AWS CLI 根据 ISO 8601 对输出中的所有时间戳进行重新格式化。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
指定 AWS CLI 运行的外部命令,以生成或检索用于该命令的身份验证凭证。命令必须以特定格式返回凭证。有关如何使用该设置的更多信息,请参阅在 AWS CLI 中使用外部进程获取凭证。
该条目没有等效的环境变量或命令行选项。
credential_process = /opt/bin/awscreds-retriever --username susan
在 Amazon EC2 实例或容器中使用,指定 AWS CLI 在何处可以找到要用于代入通过 role_arn
参数指定的角色的凭证。不能在同一配置文件中同时指定 source_profile
和 credential_source
。
此参数具有三个值:
Environment – 指定 AWS CLI 从环境变量检索源凭证。
Ec2InstanceMetadata – 指定 AWS CLI 将使用附加到 EC2 实例配置文件的 IAM 角色以获取源凭证。
EcsContainer – 指定 AWS CLI 将附加到 ECS 容器的 IAM 角色用作源凭证。
credential_source = Ec2InstanceMetadata
duration_seconds
指定角色会话的最大持续时间(以秒为单位)。该值的范围在 900 秒(15 分钟)到角色的最大会话持续时间设置之间。此参数为可选参数,默认情况下,该值设置为 3600 秒。
endpoint_url
指定用于所有服务请求的端点。如果在 config
文件的 services 节中使用此设置,则该端点仅用于指定的服务。有关更多信息,请参阅 为所有 AWS 服务设置全局端点。
以下示例使用全局端点 http://localhost:1234
和用于 Amazon S3 的特定于服务的端点 http://localhost:4567
。
[profile dev]
endpoint_url = http://localhost:1234
services = s3-specific
[services s3-specific]
endpoint_url = http://localhost:4567
端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
ignore_configure_endpoint_urls
如果启用,则 AWS CLI 会忽略 config
文件中指定的所有自定义端点配置。有效值为 true
和 false
。
ignore_configure_endpoint_urls = true
端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
指定第三方用于在其客户账户中代入角色的唯一标识符。这将映射到 AssumeRole
操作中的 ExternalId
参数。仅当角色的信任策略为 ExternalId
指定值时,才需要此参数。有关更多信息,请参阅《IAM 用户指南》中的如何在向第三方授予对 AWS 资源的访问权限时使用外部 ID。
指定 AWS CLI 重试处理程序使用的最大重试次数值,其中初始调用计入您提供的 max_attempts
值。
您可以使用 AWS_MAX_ATTEMPTS
环境变量覆盖此值。
max_attempts = 3
代入角色时要使用的 MFA 设备的标识号。仅当代入角色的信任策略包含需要 MFA 身份验证的条件,此值才是必需的。该值可以是硬件设备(例如 GAHT12345678
)的序列号,也可以是虚拟 MFA 设备(例如 arn:aws:iam::123456789012:mfa/user
)的 Amazon 资源名称(ARN)。
output
指定使用该配置文件请求的命令的默认输出格式。您可以指定以下任意值:
text – 输出采用多个制表符分隔字符串值行的格式。这对于将输出传递到文本处理器(如 grep
、sed
或 awk
)很有用。
table – 输出采用表格形式,使用字符 +|- 以形成单元格边框。它通常以“人性化”格式呈现信息,这种格式比其他格式更容易阅读,但从编程方面来讲不是那么有用。
可以被 AWS_DEFAULT_OUTPUT
环境变量或 --output
命令行选项覆盖。
output = table
parameter_validation
指定 AWS CLI 客户端在将参数发送到 AWS 服务端点之前是否尝试验证参数。
您可以指定可用于所选服务的任何区域代码,有关区域代码的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点。
通过 aws_global
,您可以为不仅支持区域端点,还支持全局端点的服务指定全局端点,例如 AWS Security Token Service(AWS STS)和 Amazon Simple Storage Service(Amazon S3)。
您可以使用 、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 将覆盖此设置。
response_checksum_validation
指定何时对响应有效载荷执行校验和验证,并提供以下选项:
when_supported
–(默认)当操作在其服务模型中指定 AWS CLI 支持的响应算法时,将执行响应有效载荷校验和验证。
when_required
:当操作在其服务模型中指定 AWS CLI 支持的响应算法,并且您在操作输出中将建模的 requestValidationModeMember
设置为 ENABLED
时,将执行响应有效载荷校验和验证。
response_checksum_validation = when_supported
环境变量 AWS_RESPONSE_CHECKSUM_VALIDATION 将覆盖此设置。
指定 AWS CLI 使用哪种重试模式。有三种重试模式可用:standard
、legacy
(默认)和 adaptive
。有关重试的更多信息,请参阅AWS CLI 中的 AWS CLI 重试次数 。
您可以使用 AWS_RETRY_MODE
环境变量覆盖此值。
retry_mode = standard
指定要用于运行 AWS CLI 命令的 IAM 角色的 Amazon 资源名称(ARN)。此外,还必须指定以下参数之一以标识有权代入此角色的凭证:
role_arn = arn:aws:iam::123456789012
:role/role-name
环境变量 AWS_ROLE_ARN 将覆盖此设置。
有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
指定要附加到角色会话的名称。此值在 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 将覆盖此设置。
有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
指定要用于您的配置文件的服务配置。
[profile dev-s3-specific-and-global
]
endpoint_url = http://localhost:1234
services = s3-specific
[services s3-specific
]
endpoint_url = http://localhost:4567
有关更多信息,请参阅 节类型:services 中的 services
节。
环境变量 AWS_ROLE_SESSION_NAME 将覆盖此设置。
有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
sdk_ua_app_id
一个 AWS 账户可以供多个客户应用程序来调用 AWS 服务。应用程序 ID 标识哪个源应用程序使用 AWS 服务 进行了一组调用。AWSSDK 和服务不会使用或解释此值,除非将其显示在客户通信中。例如,此值可以包含在操作电子邮件中,以唯一标识您的哪个应用程序与通知相关联。
应用程序 ID 是一个字符串,最大长度为 50 个字符。允许使用字母、数字和以下特殊字符:! $ % & * + - . , ^ _ ` | ~
。默认情况下,不分配任何值。
sdk_ua_app_id = prod1
使用 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。
使用 AWS_SIGV4A_SIGNING_REGION_SET 环境变量可以覆盖此设置。您不能将此值设置为命令行参数。
指定包含长期凭证的命名配置文件,AWS CLI 可使用这些凭证代入通过 role_arn
参数指定的角色。不能在同一配置文件中同时指定 source_profile
和 credential_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 端点 sts.amazonaws.com
:ap-northeast-1
、ap-south-1
、ap-southeast-1
、ap-southeast-2
、aws-global
、ca-central-1
、eu-central-1
、eu-north-1
、eu-west-1
、eu-west-2
、eu-west-3
、sa-east-1
、us-east-1
、us-east-2
、us-west-1
和 us-west-2
。所有其他区域自动使用其各自的区域端点。
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 请求。要详细了解支持 IPv4 和 IPv6 流量的双堆栈端点,请参阅 Amazon Simple Storage Service 用户指南中的使用 Amazon S3 双堆栈端点。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 AWS 区域的双堆栈端点,则请求将失败。有效的设置为 true
和 false
。默认情况下,将禁用该功能。有关更多信息,请参阅 设置成为所有 AWS 服务使用双堆栈端点。
该设置与 use_accelerate_endpoint
设置互斥。
端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
use_fips_endpoint
在某些 AWS 区域,部分 AWS 服务提供支持美国联邦信息处理标准 (FIPS) 140-2 的端点。当 AWS 服务支持 FIPS 时,此设置指定 AWS CLI 应使用哪个 FIPS 端点。与标准 AWS 端点不同,FIPS 端点使用符合 FIPS 140-2 的 TLS 软件库。与美国政府有业务来往的企业可能需要使用这些端点。有关更多信息,请参阅设置成为所有 AWS 服务使用 FIPS 端点。
如果启用此设置,但不存在适用于您所在 AWS 区域中的服务的 FIPS 端点,则 AWS 命令可能会失败。在这种情况下,请使用 --endpoint-url
选项手动指定要在命令中使用的端点,或者使用特定于服务的端点。
端点优先级
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 按特定顺序检查这些端点设置,并使用优先级最高的端点设置。有关端点优先级列表,请参阅端点配置和设置优先级。
指定一个文件的路径,该文件包含由身份提供者提供的 OAuth 2.0 访问令牌或 OpenID Connect ID 令牌。AWS CLI 加载此文件的内容,并将其作为 WebIdentityToken
参数传递给 AssumeRoleWithWebIdentity
操作。
环境变量 AWS_WEB_IDENTITY_TOKEN_FILE
将覆盖此设置。
有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
tcp_keepalive
指定 AWS CLI 客户端是否使用 TCP keep-alive 数据包。
该条目没有等效的环境变量或命令行选项。
tcp_keepalive = false
S3 自定义命令设置
Amazon S3 支持多项配置 AWS 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]
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 双堆栈端点。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 AWS 区域的双堆栈端点,则请求将失败。有效的设置为 true
和 false
。默认情况下,将禁用该功能。有关更多信息,请参阅 设置成为所有 AWS 服务使用双堆栈端点。
该设置与 use_accelerate_endpoint
设置互斥。
以下设置仅适用于 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_queue_size 需要更多的内存。
multipart_chunksize
指定 AWS CLI 用于单个文件的分段传输的块大小。默认值为 8 MB,最少为 5 MB。
当文件传输超出 multipart_threshold
时,AWS CLI 将文件分成该大小的块。可以使用与 multipart_threshold
相同的语法指定该值,即整数形式的字节数,或使用大小和后缀。
multipart_threshold
指定 AWS CLI 用于单个文件的分段传输的大小阈值。默认值为 8 MB。
上传、下载或复制文件时,如果文件超出该大小,Amazon S3 命令将切换到分段操作。您可以通过以下两种方式之一指定该值: