本文档仅适用于 AWS CLI 版本 1。有关 AWS CLI 版本 2 的相关文档,请参阅版本 2 用户指南。
为 AWS CLI 配置环境变量
环境变量提供了另一种指定配置选项和凭证的方法并且可用于编写脚本。
选项的优先顺序
-
如果您使用本主题中描述的某个环境变量指定选项,则它将在配置文件中覆盖从配置文件加载的任何值。
-
如果您通过在 AWS CLI 命令行上使用参数指定选项,则它将在配置文件中覆盖相应环境变量或配置文件中的任何值。
有关优先顺序以及 AWS CLI 如何确定使用哪些凭证的更多信息,请参阅配置 AWS CLI 设置。
如何设置环境变量
下面的示例介绍您如何可以为默认用户配置环境变量。
AWS CLI 支持的环境变量
AWS CLI 支持以下环境变量。
AWS_ACCESS_KEY_ID
-
指定与 IAM 账户关联的 AWS 访问密钥。
如果已定义此环境变量,它将覆盖配置文件设置
aws_access_key_id
的值。您不能使用命令行选项来指定访问密钥 ID。 AWS_CA_BUNDLE
-
指定要用于 HTTPS 证书验证的证书捆绑包的路径。
如果已定义此环境变量,它将覆盖配置文件设置
ca_bundle
的值。您可以使用--ca-bundle
命令行参数覆盖此环境变量。 AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS
-
如果在使用自定义
s3 mv
命令时源和目标存储桶相同,则可以将源文件或对象移到其自身上,这可能导致源文件或对象被意外删除。AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS
环境变量和--validate-same-s3-paths
选项指定是验证接入点 ARN 还是验证您的 Amazon S3 源或目标 URI 中的接入点别名。注意
针对
s3 mv
的路径验证需要额外的 API 调用。 AWS_CONFIG_FILE
-
指定 AWS CLI 用于存储配置文件的文件的位置。默认路径为
~/.aws/config
。您不能在命名配置文件设置中或使用命令行参数来指定此值。
AWS_DATA_PATH
-
加载 AWS CLI 数据时要在
~/.aws/models
的内置搜索路径之外检查的其他目录的列表。设置此环境变量将指示在回滚到内置搜索路径前要先检查的其他目录。应使用os.pathsep
字符(在 Linux 上为:
,在 Windows 上为;
)隔开多个条目。 AWS_DEFAULT_OUTPUT
-
指定要使用的输出格式。
如果已定义此环境变量,它将覆盖配置文件设置
output
的值。您可以使用--output
命令行参数覆盖此环境变量。 AWS_DEFAULT_REGION
-
Default region name
标识默认情况下您要将请求发送到的服务器所在的 AWS 区域。通常是离您最近的区域,但可以是任意区域。例如,您可以键入us-west-2
以使用美国西部(俄勒冈)。除非在命令中另行指定,否则这是所有后续请求将发送到的区域。注意
使用 AWS 时,必须明确指定或通过设置原定设置区域来指定 AWS CLI 区域。有关可用区域的列表,请参阅区域和端点。AWS CLI 使用的区域指示符与您在 AWS Management Console URL 和服务端点中看到的名称相同。
如果已定义此环境变量,它将覆盖配置文件设置
region
的值。您可以使用--region
命令行参数来覆盖此环境变量。 AWS_EC2_METADATA_DISABLED
-
禁用 Amazon EC2 实例元数据服务(IMDS)。
如果设置为 true,则不会从 IMDS 请求用户凭证或配置(如区域)。
AWS_ENDPOINT_URL
-
指定用于所有服务请求的端点。
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 端点配置设置的优先顺序如下:
-
--endpoint-url
命令行选项。 -
如果启用,则
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS
全局端点环境变量或配置文件设置ignore_configure_endpoint_urls
将忽略自定义端点。 -
由特定于服务的环境变量
AWS_ENDPOINT_URL_<SERVICE>
提供的值,例如AWS_ENDPOINT_URL_DYNAMODB
。 -
AWS_USE_DUALSTACK_ENDPOINT
、AWS_USE_FIPS_ENDPOINT
和AWS_ENDPOINT_URL
环境变量提供的值。 -
共享
config
文件services
节中的endpoint_url
设置提供的特定于服务的端点值。 -
共享
config
文件的profile
中的endpoint_url
设置提供的值。 -
最后使用相应的 AWS 服务的任何默认端点 URL。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点。
-
AWS_ENDPOINT_URL_<SERVICE>
-
指定用于特定服务的自定义端点,在该服务中
<SERVICE>
替换为 AWS 服务标识符。例如,Amazon DynamoDB 具有DynamoDB
的 serviceId
。对于此服务,端点 URL 环境变量为AWS_ENDPOINT_URL_DYNAMODB
。有关特定于服务的所有环境变量的列表,请参阅特定于服务的标识符列表。
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 端点配置设置的优先顺序如下:
-
--endpoint-url
命令行选项。 -
如果启用,则
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS
全局端点环境变量或配置文件设置ignore_configure_endpoint_urls
将忽略自定义端点。 -
由特定于服务的环境变量
AWS_ENDPOINT_URL_<SERVICE>
提供的值,例如AWS_ENDPOINT_URL_DYNAMODB
。 -
AWS_USE_DUALSTACK_ENDPOINT
、AWS_USE_FIPS_ENDPOINT
和AWS_ENDPOINT_URL
环境变量提供的值。 -
共享
config
文件services
节中的endpoint_url
设置提供的特定于服务的端点值。 -
共享
config
文件的profile
中的endpoint_url
设置提供的值。 -
最后使用相应的 AWS 服务的任何默认端点 URL。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点。
-
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS
-
如果启用,则 AWS CLI 将忽略所有自定义端点配置。有效值为
true
和false
。端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 端点配置设置的优先顺序如下:
-
--endpoint-url
命令行选项。 -
如果启用,则
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS
全局端点环境变量或配置文件设置ignore_configure_endpoint_urls
将忽略自定义端点。 -
由特定于服务的环境变量
AWS_ENDPOINT_URL_<SERVICE>
提供的值,例如AWS_ENDPOINT_URL_DYNAMODB
。 -
AWS_USE_DUALSTACK_ENDPOINT
、AWS_USE_FIPS_ENDPOINT
和AWS_ENDPOINT_URL
环境变量提供的值。 -
共享
config
文件services
节中的endpoint_url
设置提供的特定于服务的端点值。 -
共享
config
文件的profile
中的endpoint_url
设置提供的值。 -
最后使用相应的 AWS 服务的任何默认端点 URL。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点。
-
- AWS_MAX_ATTEMPTS
-
指定 AWS CLI 重试处理程序使用的最大重试次数值,其中初始调用计入您提供的值。有关重试的更多信息,请参阅AWS CLI 中的 AWS CLI 重试次数 。
如果已定义此环境变量,它将覆盖配置文件设置
max_attempts
的值。 AWS_METADATA_SERVICE_NUM_ATTEMPTS
-
尝试在已配置 IAM 角色的 Amazon EC2 实例上检索凭证时,AWS CLI 会在停止前尝试从实例元数据服务检索一次凭证。如果您知道您的命令将在 Amazon EC2 实例上运行,则可增大此值,以使 AWS CLI 在放弃前重试多次。
AWS_METADATA_SERVICE_TIMEOUT
-
与实例元数据服务的连接超时前等待的秒数。尝试在已配置 IAM 角色的 Amazon EC2 实例上检索凭证时,默认情况下,与实例元数据服务的连接将在 1 秒后超时。如果您知道您正在已配置 IAM 角色的 Amazon EC2 实例上运行,如有必要,可增大此值。
- AWS_PROFILE
-
指定包含要使用的凭证和选项的 AWS CLI 配置文件的名称。可以是存储在
credentials
或config
文件中的配置文件的名称,也可以是值default
,后者使用默认配置文件。如果您定义了此环境变量,它将在配置文件中覆盖使用名为
[default]
的配置文件的行为。您可以使用--profile
命令行参数覆盖此环境变量。 AWS_REQUEST_CHECKSUM_CALCULATION
-
指定何时计算请求有效载荷的校验和,并提供以下选项:
-
when_supported
–(默认)当操作在其服务模型中指定校验和算法或需要请求校验和时,将计算请求有效载荷校验和。 -
when_required
– 当操作需要请求校验和或用户提供由 AWS 服务建模的requestAlgorithmMember
时,将计算请求有效载荷校验和。
如果已定义此环境变量,它将覆盖配置文件设置 request_checksum_calculation 的值。
-
AWS_RESPONSE_CHECKSUM_VALIDATION
-
指定何时对响应有效载荷执行校验和验证,并提供以下选项:
-
when_supported
–(默认)当操作在其服务模型中指定 AWS CLI 支持的响应算法时,将执行响应有效载荷校验和验证。 -
when_required
– 当操作在其服务模型中指定 AWS CLI 支持的响应算法,并且您在操作输出中将建模的requestValidationModeMember
设置为ENABLED
时,将执行响应有效载荷校验和验证。
如果已定义此环境变量,它将覆盖配置文件设置 response_checksum_validation 的值。
-
- AWS_RETRY_MODE
-
指定 AWS CLI 使用哪种重试模式。有三种重试模式可用:旧模式(默认模式)、标准模式和自适应模式。有关重试的更多信息,请参阅AWS CLI 中的 AWS CLI 重试次数 。
如果已定义此环境变量,它将覆盖配置文件设置
retry_mode
的值。 AWS_ROLE_ARN
-
指定要用于运行 AWS CLI 命令的 IAM 角色的 Amazon Resource Name(ARN)以及 Web 身份提供者。
结合使用
AWS_WEB_IDENTITY_TOKEN_FILE
和AWS_ROLE_SESSION_NAME
环境变量。如果已定义此环境变量,它将覆盖配置文件设置 role_arn 的值。不能将角色会话名称指定为命令行参数。
注意
此环境变量仅适用于使用 Web 身份提供者的代入角色,而不适用于常规代入角色提供商配置。
有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
AWS_ROLE_SESSION_NAME
-
指定要附加到角色会话的名称。此值在
RoleSessionName
调用 AWS CLI 操作时将提供给AssumeRole
参数,并成为代入角色用户 ARN 的一部分:arn:aws:sts::
。此参数为可选参数。如果未提供此值,则将自动生成会话名称。此名称显示在与此会话关联的条目的 AWS CloudTrail 日志中。123456789012
:assumed-role/role_name
/role_session_name
如果已定义此环境变量,它将覆盖配置文件设置 role_session_name 的值。
结合使用
AWS_ROLE_ARN
和AWS_WEB_IDENTITY_TOKEN_FILE
环境变量。有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
注意
此环境变量仅适用于使用 Web 身份提供者的代入角色,而不适用于常规代入角色提供商配置。
AWS_SDK_UA_APP_ID
-
一个 AWS 账户可以供多个客户应用程序来调用 AWS 服务。应用程序 ID 标识哪个源应用程序使用 AWS 服务进行了一组调用。AWSSDK 和服务不会使用或解释此值,除非将其显示在客户通信中。例如,此值可以包含在操作电子邮件中,以唯一标识您的哪个应用程序与通知相关联。
默认情况下,没有值。
应用程序 ID 是一个字符串,最大长度为 50 个字符。允许使用字母、数字和以下特殊字符:
! $ % & * + - . , ^ _ ` | ~
如果已定义此环境变量,它将覆盖配置文件设置 sdk_ua_app_id 的值。您不能将应用程序 ID 指定为命令行选项。
AWS_SECRET_ACCESS_KEY
-
指定与访问密钥关联的私有密钥。这基本上是访问密钥的“密码”。
如果已定义此环境变量,它将覆盖配置文件设置
aws_secret_access_key
的值。您不能将秘密访问密钥 ID 指定为命令行选项。 AWS_SESSION_TOKEN
-
指定在使用您直接从 AWS STS 操作中检索的临时安全凭证时需要的会话令牌值。有关更多信息,请参阅 AWS CLI 命令引用中的代入角色命令的输出部分。
如果已定义此环境变量,它将覆盖配置文件设置
aws_session_token
的值。 AWS_SHARED_CREDENTIALS_FILE
-
指定 AWS CLI 用于存储访问密钥的文件的位置。默认路径为
~/.aws/credentials
。您不能在命名配置文件设置中或使用命令行参数来指定此值。
AWS_SIGV4A_SIGNING_REGION_SET
-
使用逗号分隔列表指定在通过 SigV4a 进行签名时要使用的区域。如果未设置此变量,AWS CLI 会使用 AWS 服务所使用的默认值。如果 AWS 服务没有默认值,则请求签名将使用
*
作为值,在所有区域内生效。有关 SigV4a 的更多信息,请参阅《IAM 用户指南》中的适用于 API 请求的 AWS 签名版本 4。
如果已定义此环境变量,它将覆盖配置文件设置 sigv4a_signing_region_set 的值。
- AWS_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_USE_DUALSTACK_ENDPOINT
-
允许使用双堆栈端点发送 AWS 请求。要详细了解支持 IPv4 和 IPv6 流量的双堆栈端点,请参阅 Amazon Simple Storage Service 用户指南中的使用 Amazon S3 双堆栈端点。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 AWS 区域的双堆栈端点,则请求将失败。默认情况下,将禁用该功能。
端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 端点配置设置的优先顺序如下:
-
--endpoint-url
命令行选项。 -
如果启用,则
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS
全局端点环境变量或配置文件设置ignore_configure_endpoint_urls
将忽略自定义端点。 -
由特定于服务的环境变量
AWS_ENDPOINT_URL_<SERVICE>
提供的值,例如AWS_ENDPOINT_URL_DYNAMODB
。 -
AWS_USE_DUALSTACK_ENDPOINT
、AWS_USE_FIPS_ENDPOINT
和AWS_ENDPOINT_URL
环境变量提供的值。 -
共享
config
文件services
节中的endpoint_url
设置提供的特定于服务的端点值。 -
共享
config
文件的profile
中的endpoint_url
设置提供的值。 -
最后使用相应的 AWS 服务的任何默认端点 URL。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点。
-
AWS_USE_FIPS_ENDPOINT
-
在某些 AWS 区域,部分 AWS 服务提供支持美国联邦信息处理标准(FIPS)140-2
的端点。当 AWS 服务支持 FIPS 时,此设置指定 AWS CLI 应使用哪个 FIPS 端点。与标准 AWS 端点不同,FIPS 端点使用符合 FIPS 140-2 的 TLS 软件库。与美国政府有业务来往的企业可能需要使用这些端点。 如果启用此设置,但不存在适用于您所在 AWS 区域中的服务的 FIPS 端点,则 AWS 命令可能会失败。在这种情况下,请使用
--endpoint-url
选项手动指定要在命令中使用的端点,或者使用特定于服务的端点。有关按 AWS 区域指定 FIPS 端点的更多信息,请参阅按服务列出的 FIPS 端点
。 端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 AWS 配置文件),或者在命令行上显式声明为参数。AWS CLI 端点配置设置的优先顺序如下:
-
--endpoint-url
命令行选项。 -
如果启用,则
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS
全局端点环境变量或配置文件设置ignore_configure_endpoint_urls
将忽略自定义端点。 -
由特定于服务的环境变量
AWS_ENDPOINT_URL_<SERVICE>
提供的值,例如AWS_ENDPOINT_URL_DYNAMODB
。 -
AWS_USE_DUALSTACK_ENDPOINT
、AWS_USE_FIPS_ENDPOINT
和AWS_ENDPOINT_URL
环境变量提供的值。 -
共享
config
文件services
节中的endpoint_url
设置提供的特定于服务的端点值。 -
共享
config
文件的profile
中的endpoint_url
设置提供的值。 -
最后使用相应的 AWS 服务的任何默认端点 URL。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和端点。
-
- AWS_WEB_IDENTITY_TOKEN_FILE
-
指定一个文件的路径,该文件包含由身份提供者提供的 OAuth 2.0 访问令牌或 OpenID Connect ID 令牌。AWS CLI 加载此文件的内容,并将其作为
WebIdentityToken
参数传递给AssumeRoleWithWebIdentity
操作。结合使用
AWS_ROLE_ARN
和AWS_ROLE_SESSION_NAME
环境变量。如果已定义此环境变量,它将覆盖配置文件设置
web_identity_token_file
的值。有关使用 Web 身份的更多信息,请参阅 通过 Web 身份代入角色。
注意
此环境变量仅适用于使用 Web 身份提供者的代入角色,而不适用于常规代入角色提供商配置。