特定于服务的端点 - Amazon SDK 和工具
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

特定于服务的端点

注意

如需获得相关帮助,以了解设置页面的布局或解释后面的 Amazon SDK 和工具支持表,请参阅了解本指南的设置页面

特定于服务的端点配置提供了一个选项,可使用您应 API 的请求使用您选择的端点,并保持该选择。这些设置可以灵活地支持本地端点、VPC 端点和第三方本地 Amazon 开发环境。不同的端点可分别用于测试环境和生产环境。您可以为个别 Amazon Web Services 服务 指定端点 URL。

使用以下方法配置此功能:

endpoint_url - 共享 Amazon config 文件设置
AWS_ENDPOINT_URL - 环境变量
aws.endpointUrl:JVM 系统属性,仅适用于 Java/Kotlin

直接在配置文件中指定或作为环境变量指定时,此设置将指定用于所有服务请求的端点。此端点会被任何已配置的特定服务端点覆盖。

您还可以在共享 Amazon config 文件的某个 services 部分中使用此设置,以便为特定服务设置自定义端点。有关 services 节的子节中要使用的所有服务标识符密钥的列表,请参阅特定于服务的端点的标识符

默认值:none

有效值:包含端点架构和主机的 URL。URL 可以选择包含一个路径组件,该组件包括一个或多个路径段。

AWS_ENDPOINT_URL_<SERVICE> - 环境变量
aws.endpointUrl<ServiceName>:JVM 系统属性,仅适用于 Java/Kotlin

AWS_ENDPOINT_URL_<SERVICE>,其中 <SERVICE> 是 Amazon Web Services 服务 标识符,用于为特定服务设置自定义端点。有关特定于服务的所有环境变量的列表,请参阅特定于服务的端点的标识符

此特定服务端点会覆盖 AWS_ENDPOINT_URL 中设置的任何全局端点。

默认值:none

有效值:包含端点架构和主机的 URL。URL 可以选择包含一个路径组件,该组件包括一个或多个路径段。

ignore_configured_endpoint_urls - 共享 Amazon config 文件设置
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS - 环境变量
aws.ignoreConfiguredEndpointUrls:JVM 系统属性,仅适用于 Java/Kotlin

此设置用于忽略所有自定义端点配置。

请注意,无论此设置如何,都将使用代码中或服务客户端本身上设置的任何显式端点。例如,在 Amazon CLI 命令中包含 --endpoint-url 命令行参数或将端点 URL 传递给客户端构造函数都将始终生效。

默认值:false

有效值:

  • true - SDK 或工具不会从共享 config 文件或环境变量中读取任何用于设置端点 URL 的自定义配置选项。

  • false - SDK 或工具使用共享 config 文件或环境变量中用户提供的任何可用端点。

使用环境变量来配置端点

要将所有服务的请求路由到自定义端点 URL,请设置 AWS_ENDPOINT_URL 全局环境变量。

export AWS_ENDPOINT_URL=http://localhost:4567

要将特定的请求 Amazon Web Services 服务 路由到自定义端点 URL,请使用 AWS_ENDPOINT_URL_<SERVICE> 环境变量。Amazon DynamoDB 有一个 DynamoDBserviceId。对于此服务,端点 URL 环境变量为 AWS_ENDPOINT_URL_DYNAMODB。此端点优先于在 AWS_ENDPOINT_URL 中为此服务设置的全局端点。

export AWS_ENDPOINT_URL_DYNAMODB=http://localhost:5678

再举一个例子,Amazon Elastic Beanstalk 有一个 Elastic BeanstalkserviceId。Amazon Web Services 服务 标识符基于 API 模型的 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 [services s3-specific] s3 = endpoint_url = https://play.min.io:9000

单个配置文件可以为多个服务配置端点。此示例说明如何在同一配置文件中为 Amazon S3 和 Amazon Elastic Beanstalk 设置特定服务端点 URL。Amazon Elastic Beanstalk 有一个 Elastic BeanstalkserviceId。Amazon Web Services 服务 标识符基于 API 模型的 serviceId,不过需要将所有空格替换为下划线,并将所有字母小写。因此,服务标识符密钥变为 elastic_beanstalk 且已开始在线设置该服务 elastic_beanstalk = 。有关 services 节中要使用的所有服务标识符密钥的列表,请参阅特定于服务的端点的标识符

[services testing-s3-and-eb] s3 = endpoint_url = http://localhost:4567 elastic_beanstalk = endpoint_url = http://localhost:8000 [profile dev] services = testing-s3-and-eb

“服务配置”节可以在多个配置文件中使用。例如,两个配置文件在更改其他配置文件属性时可以使用相同的 services 定义:

[services testing-s3] s3 = endpoint_url = https://localhost:4567 [profile testing-json] output = json services = testing-s3 [profile testing-text] output = text services = testing-s3

使用基于角色的凭证在配置文件中配置端点

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

设置的优先级

该功能设置为可以同时使用,但每项服务只有一个值会优先使用。对给定的 Amazon Web Services 服务 进行 API 调用时,使用以下顺序来选择值:

  1. 在代码中或服务客户端本身上设置的任何显式设置均优先于其他任何设置。

    • 对于 Amazon CLI,这是 --endpoint-url 命令行参数提供的值。对于 SDK,显式分配可以采用您在实例化 Amazon Web Services 服务 客户端或配置对象时设置的参数的形式。

  2. 由特定于服务的环境变量提供的值,例如 AWS_ENDPOINT_URL_DYNAMODB

  3. AWS_ENDPOINT_URL 全局端点环境变量提供的值。

  4. endpoint_url 设置提供的值嵌套在共享 config 文件的 services 部分中的服务标识符密钥下。

  5. 共享 config 文件的 profile 中直接指定的 endpoint_url 设置提供的值。

  6. 最后使用相应的 Amazon Web Services 服务 的任何默认端点 URL。

Amazon SDK 和工具支持

以下 SDK 支持本主题中所述的功能和设置。所有部分例外情况均已注明。任何 JVM 系统属性设置都仅支持 适用于 Java 的 Amazon SDK 和 适用于 Kotlin 的 Amazon SDK。