本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
特定于服务的端点
服务特定的终端节点配置提供了使用您选择的终端节点进行API请求的选项,并使该选择保持不变。这些设置提供了支持本地端点、端点和第三方本地VPC端点的灵活性 AWS 开发环境。不同的端点可分别用于测试环境和生产环境。您可以URL为个人指定终端节点 AWS 服务.
使用以下方法配置此功能:
endpoint_url
-共享 AWSconfig
文件设置AWS_ENDPOINT_URL
- 环境变量aws.endpointUrl
-JVM 系统属性:仅限 Java/Kotlin-
直接在配置文件中指定或作为环境变量指定时,此设置将指定用于所有服务请求的端点。此端点会被任何已配置的特定服务端点覆盖。
您也可以在共享的
services
部分中使用此设置 AWSconfig
文件,用于为特定服务设置自定义终端节点。有关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
-共享 AWSconfig
文件设置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 有一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
参数配置的基于角色的凭证,则SDK仅使用指定配置文件的服务配置。它不使用关联有角色的配置文件。例如,使用以下共享 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
并在代码中调用 AmazonEC2,则终端节点将解析为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
设置提供的值。 -
相应端点的任何默认端点 URL AWS 服务 是最后使用的。
兼容 AWS SDKs
以下内容SDKs支持本主题中描述的功能和设置。所有部分例外情况均已注明。支持任何JVM系统属性设置 AWS SDK for Java 还有 AWS SDK for Kotlin 只有。
SDK | 支持 | 备注或更多信息 |
---|---|---|
AWS CLI v2 | 是 | |
SDK对于 C++ | 否 | |
SDK适用于 Go V2 (1.x) |
是 | |
SDK适用于 Go 1.x (V1) | 否 | |
SDK适用于 Java 2.x | 是 | |
SDK适用于 Java 1.x | 否 | |
SDK适用于 JavaScript 3.x | 是 | |
SDK适用于 JavaScript 2.x | 否 | |
SDK对于 Kotlin 来说 | 是 | |
SDK对于。 NET3.x | 是 | |
SDK适用于 PHP 3.x | 是 | |
SDK适用于 Python (Boto3) |
是 | |
SDK适用于 Ruby 3.x | 是 | |
SDK对于 Rust | 否 | |
SDK为斯威夫特 | 否 | |
用于 PowerShell | 是 |