特定于服务的端点 - AWS SDKs和工具

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

特定于服务的端点

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

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

endpoint_url-共享 AWS config文件设置
AWS_ENDPOINT_URL - 环境变量
aws.endpointUrl-JVM 系统属性:仅限 Java/Kotlin

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

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

默认值none

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

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

AWS_ENDPOINT_URL_<SERVICE>,在<SERVICE>哪里 AWS 服务 标识符,为特定服务设置自定义终端节点。有关特定于服务的所有环境变量的列表,请参阅特定于服务的端点的标识符

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

默认值none

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

ignore_configured_endpoint_urls-共享 AWS config文件设置
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS - 环境变量
aws.ignoreConfiguredEndpointUrls-JVM 系统属性:仅限 Java/Kotlin

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

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

默认值false

有效值:

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

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

使用环境变量来配置端点

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

export AWS_ENDPOINT_URL=http://localhost:4567

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

export AWS_ENDPOINT_URL_DYNAMODB=http://localhost:5678

再举一个例子, AWS Elastic Beanstalk 有一serviceIdElastic Beanstalk。这些区域有: AWS 服务 标识符基于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 设置服务特URLs定的终端节点 AWS Elastic Beanstalk 在同一个个人资料中。 AWS Elastic Beanstalk 有一serviceIdElastic Beanstalk。这些区域有: AWS 服务 标识符基于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参数配置的基于角色的凭证,则SDK仅使用指定配置文件的服务配置。它不使用关联有角色的配置文件。例如,使用以下共享 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并在代码中调用 AmazonEC2,则终端节点将解析为https://profile-b-ec2-endpoint.aws。如果您的代码向其他任何服务发出请求,则端点解析将不遵循任何自定义逻辑。该端点不会解析到配置文件 A 中定义的全局端点。要使全局端点对配置文件 B 生效,您需要直接在配置文件 B 中设置 endpoint_url。有关 source_profile 设置的更多信息,请参阅代入角色凭证提供者

设置的优先级

该功能设置为可以同时使用,但每项服务只有一个值会优先使用。对于API拨打给定对象的电话 AWS 服务,则使用以下顺序来选择值:

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

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

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

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

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

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

  6. 相应端点的任何默认端点 URL AWS 服务 是最后使用的。

兼容 AWS SDKs

以下内容SDKs支持本主题中描述的功能和设置。所有部分例外情况均已注明。支持任何JVM系统属性设置 AWS SDK for Java 还有 AWS SDK for Kotlin 只有。