本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
特定于服务的端点
特定于服务的端点配置提供了一个选项,可使用您应 API 的请求使用您选择的端点,并保持该选择。这些设置可以灵活地支持本地端点、VPC 端点和第三方本地 AWS 开发环境。不同的端点可分别用于测试环境和生产环境。您可以为个别 AWS 服务指定端点 URL。
使用以下方法配置此功能:
endpoint_url
-共享 AWSconfig
文件设置AWS_ENDPOINT_URL
- 环境变量aws.endpointUrl
-JVM 系统属性:仅限 Java/Kotlin-
直接在配置文件中指定或作为环境变量指定时,此设置将指定用于所有服务请求的端点。此端点会被任何已配置的特定服务端点覆盖。
您还可以在共享 AWS
config
文件的某个services
部分中使用此设置为特定服务设置自定义终端节点。有关services
节的子节中要使用的所有服务标识符密钥的列表,请参阅特定于服务的端点的标识符。默认值:
none
有效值:包含端点架构和主机的 URL。URL 可以选择包含一个路径组件,该组件包括一个或多个路径段。
AWS_ENDPOINT_URL_<SERVICE>
- 环境变量aws.endpointUrl<ServiceName>
-JVM 系统属性:仅限 Java/Kotlin-
AWS_ENDPOINT_URL_<SERVICE>
,其中<SERVICE>
是标 AWS 服务 识符,用于为特定服务设置自定义终端节点。有关特定于服务的所有环境变量的列表,请参阅特定于服务的端点的标识符。此特定服务端点会覆盖
AWS_ENDPOINT_URL
中设置的任何全局端点。默认值:
none
有效值:包含端点架构和主机的 URL。URL 可以选择包含一个路径组件,该组件包括一个或多个路径段。
ignore_configured_endpoint_urls
-共享 AWSconfig
文件设置AWS_IGNORE_CONFIGURED_ENDPOINT_URLS
- 环境变量aws.ignoreConfiguredEndpointUrls
-JVM 系统属性:仅限 Java/Kotlin-
此设置用于忽略所有自定义端点配置。
请注意,无论此设置如何,都将使用代码中或服务客户端本身上设置的任何显式端点。例如,在
--endpoint-url
命令中包含命令行参数或将端点 URL 传递给客户端构造函数将始终生效。 AWS CLI默认值:
false
有效值:
-
true
- SDK 或工具不会从共享config
文件或环境变量中读取任何用于设置端点 URL 的自定义配置选项。 -
false
- SDK 或工具使用共享config
文件或环境变量中用户提供的任何可用端点。
-
使用环境变量来配置端点
要将所有服务的请求路由到自定义端点 URL,请设置 AWS_ENDPOINT_URL
全局环境变量。
export AWS_ENDPOINT_URL=
http://localhost:4567
要将针对特定终端节点 URL 的请求路由 AWS 服务 到自定义终端节点 URL,请使用AWS_ENDPOINT_URL_<SERVICE>
环境变量。 Amazon DynamoDB 有一serviceId
个DynamoDB
AWS_ENDPOINT_URL_DYNAMODB
。此端点优先于在 AWS_ENDPOINT_URL
中为此服务设置的全局端点。
export AWS_ENDPOINT_URL_DYNAMODB=
http://localhost:5678
再举一个例子, AWS Elastic Beanstalk 有一serviceId
个Elastic Beanstalk
serviceId
替换为下划线,并将所有字母大写。为设置适用于此服务的端点,相应的环境变量为 AWS_ENDPOINT_URL_ELASTIC_BEANSTALK
。有关特定于服务的所有环境变量的列表,请参阅特定于服务的端点的标识符。
export AWS_ENDPOINT_URL_ELASTIC_BEANSTALK=
http://localhost:5567
使用共享 config
文件配置端点
在共享 config
文件中,endpoint_url
用于不同位置以实现不同的功能。
-
endpoint_url
直接在profile
中指定会使该端点成为全局端点。 -
endpoint_url
嵌套在services
部分中的服务标识符密钥下,使该端点仅适用于向该服务发出的请求。有关在共享config
文件中定义services
节的详细信息,请参阅 配置文件的格式。
以下示例使用 services
定义来配置用于 Amazon S3 的特定于服务的端点 URL 和用于其他所有服务的自定义全局端点:
[profile
dev-s3-specific-and-global
] endpoint_url =http://localhost:1234
services =s3-specific
[servicess3-specific
] s3 = endpoint_url =https://play.min.io:9000
单个配置文件可以为多个服务配置端点。此示例说明如何在同一配置文件中为 Amazon S3 设置服务特定的终端节点 URLs 。 AWS Elastic Beanstalk
AWS Elastic Beanstalk 有一serviceId
个Elastic Beanstalk
serviceId
替换为下划线,并将所有字母小写。因此,服务标识符密钥变为 elastic_beanstalk
且已开始在线设置该服务 elastic_beanstalk =
。有关 services
节中要使用的所有服务标识符密钥的列表,请参阅特定于服务的端点的标识符。
[services
testing-s3-and-eb
] s3 = endpoint_url =http://localhost:4567
elastic_beanstalk = endpoint_url =http://localhost:8000
[profiledev
] services =testing-s3-and-eb
“服务配置”节可以在多个配置文件中使用。例如,两个配置文件在更改其他配置文件属性时可以使用相同的 services
定义:
[services
testing-s3
] s3 = endpoint_url =https://localhost:4567
[profiletesting-json
] output = json services =testing-s3
[profiletesting-text
] output = text services =testing-s3
使用基于角色的凭证在配置文件中配置端点
如果您的配置文件具有基于角色的凭证,而这些凭证是通过 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
。有关 source_profile
设置的更多信息,请参阅代入角色凭证提供者。
设置的优先级
该功能设置为可以同时使用,但每项服务只有一个值会优先使用。对于对给定的 API 调用 AWS 服务,使用以下顺序来选择值:
-
在代码中或服务客户端本身上设置的任何显式设置均优先于其他任何设置。
-
对于 AWS CLI,这是
--endpoint-url
命令行参数提供的值。对于 SDK,显式分配可以采用您在实例化 AWS 服务 客户端或配置对象时设置的参数的形式。
-
-
由特定于服务的环境变量提供的值,例如
AWS_ENDPOINT_URL_DYNAMODB
。 -
AWS_ENDPOINT_URL
全局端点环境变量提供的值。 -
该
endpoint_url
设置提供的值嵌套在共享config
文件的services
部分中的服务标识符密钥下。 -
共享
config
文件的profile
中直接指定的endpoint_url
设置提供的值。 -
最后使用相应 AWS 服务 端点 URL 的任何默认端点 URL。
兼容 AWS SDKs
以下内容 SDKs 支持本主题中描述的功能和设置。所有部分例外情况均已注明。 AWS SDK for Java 和 AWS SDK for Kotlin 唯一支持任何 JVM 系统属性设置。