

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

# 特定于服务的端点
<a name="feature-ss-endpoints"></a>

**注意**  
如需了解设置页面布局或解释后面的 Support b **y AWS SDKs 和 tools** 表格的帮助，请参阅[了解本指南的设置页面](settings-reference.md#settingsPages)。

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

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

**`endpoint_url`-共享 AWS `config`文件设置`AWS_ENDPOINT_URL` - 环境变量`aws.endpointUrl`-JVM 系统属性：仅限 Java/Kotlin **  
直接在配置文件中指定或作为环境变量指定时，此设置将指定用于所有服务请求的端点。此端点会被任何已配置的特定服务端点覆盖。  
您还可以在共享 AWS `config`文件的某个`services`部分中使用此设置为特定服务设置自定义终端节点。有关 `services` 节的子节中要使用的所有服务标识符密钥的列表，请参阅[特定于服务的端点的标识符](ss-endpoints-table.md)。  
**默认值**：`none`  
**有效值：**包含端点架构和主机的 URL。URL 可以选择包含一个路径组件，该组件包括一个或多个路径段。

**`AWS_ENDPOINT_URL_<SERVICE>` - 环境变量`aws.endpointUrl<ServiceName>`-JVM 系统属性：仅限 Java/Kotlin **  
`AWS_ENDPOINT_URL_<SERVICE>`，其中`<SERVICE>`是标 AWS 服务 识符，用于为特定服务设置自定义终端节点。有关特定于服务的所有环境变量的列表，请参阅[特定于服务的端点的标识符](ss-endpoints-table.md)。  
此特定服务端点会覆盖 `AWS_ENDPOINT_URL` 中设置的任何全局端点。  
**默认值**：`none`  
**有效值：**包含端点架构和主机的 URL。URL 可以选择包含一个路径组件，该组件包括一个或多个路径段。

**`ignore_configured_endpoint_urls`-共享 AWS `config`文件设置`AWS_IGNORE_CONFIGURED_ENDPOINT_URLS` - 环境变量`aws.ignoreConfiguredEndpointUrls`-JVM 系统属性：仅限 Java/Kotlin **  
此设置用于忽略所有自定义端点配置。  
请注意，无论此设置如何，都将使用代码中或服务客户端本身上设置的任何显式端点。例如，在`--endpoint-url`命令中包含命令行参数或将端点 URL 传递给客户端构造函数将始终生效。 AWS CLI   
**默认值**：`false`  
**有效值：**  
+ **`true`** - SDK 或工具不会从共享 `config` 文件或环境变量中读取任何用于设置端点 URL 的自定义配置选项。
+ **`false`** - SDK 或工具使用共享 `config` 文件或环境变量中用户提供的任何可用端点。

## 使用环境变量来配置端点
<a name="ss-endpoints-envar"></a>

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

```
export AWS_ENDPOINT_URL=http://localhost:4567
```

要将针对特定终端节点 URL 的请求路由 AWS 服务 到自定义终端节点 URL，请使用`AWS_ENDPOINT_URL_<SERVICE>`环境变量。 Amazon DynamoDB 有一`serviceId`个[https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/dynamodb/2012-08-10/service-2.json#L10](https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/dynamodb/2012-08-10/service-2.json#L10)。对于此服务，端点 URL 环境变量为 `AWS_ENDPOINT_URL_DYNAMODB`。此端点优先于在 `AWS_ENDPOINT_URL` 中为此服务设置的全局端点。

```
export AWS_ENDPOINT_URL_DYNAMODB=http://localhost:5678
```

 再举一个例子， AWS Elastic Beanstalk 有一`serviceId`个[https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/elasticbeanstalk/2010-12-01/service-2.json#L9](https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/elasticbeanstalk/2010-12-01/service-2.json#L9)。标 AWS 服务 识符基于 API 模型，将所有空格`serviceId`替换为下划线，并将所有字母大写。为设置适用于此服务的端点，相应的环境变量为 `AWS_ENDPOINT_URL_ELASTIC_BEANSTALK`。有关特定于服务的所有环境变量的列表，请参阅[特定于服务的端点的标识符](ss-endpoints-table.md)。

```
export AWS_ENDPOINT_URL_ELASTIC_BEANSTALK=http://localhost:5567
```

## 使用共享 `config` 文件配置端点
<a name="ss-endpoints-config"></a>

在共享 `config` 文件中，`endpoint_url` 用于不同位置以实现不同的功能。
+ `endpoint_url` 直接在 `profile` 中指定会使该端点成为全局端点。
+ `endpoint_url` 嵌套在 `services` 部分中的服务标识符密钥下，使该端点仅适用于向该服务发出的请求。有关在共享 `config` 文件中定义 `services` 节的详细信息，请参阅 [配置文件的格式](file-format.md#file-format-config)。

 以下示例使用 `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 有一`serviceId`个[https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/elasticbeanstalk/2010-12-01/service-2.json#L9](https://github.com/boto/botocore/blob/bcaf618c4b93c067efa0b85d3e92f3985ff60906/botocore/data/elasticbeanstalk/2010-12-01/service-2.json#L9)。标 AWS 服务 识符基于 API 模型，将所有空格`serviceId`替换为下划线，并将所有字母小写。因此，服务标识符密钥变为 `elastic_beanstalk` 且已开始在线设置该服务 `elastic_beanstalk = `。有关 `services` 节中要使用的所有服务标识符密钥的列表，请参阅[特定于服务的端点的标识符](ss-endpoints-table.md)。

```
[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
```

## 使用基于角色的凭证在配置文件中配置端点
<a name="ss-endpoints-role"></a>

如果您的配置文件具有基于角色的凭证，而这些凭证是通过 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` 设置的更多信息，请参阅[代入角色凭证提供者](feature-assume-role-credentials.md)。

## 设置的优先级
<a name="ss-endpoints-precedence"></a>

 该功能设置为可以同时使用，但每项服务只有一个值会优先使用。对于对给定的 API 调用 AWS 服务，使用以下顺序来选择值：

1. 在代码中或服务客户端本身设置的任何显式设置均优先于其他任何设置。
   + 对于 AWS CLI，这是`--endpoint-url`命令行参数提供的值。对于 SDK，显式分配可以采用您在实例化 AWS 服务 客户端或配置对象时设置的参数的形式。

1. 由特定于服务的环境变量提供的值，例如 `AWS_ENDPOINT_URL_DYNAMODB`。

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

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

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

1. 最后使用相应 AWS 服务 端点的所有默认端点 URL。

## Support AWS SDKs by 和工具
<a name="ss-endpoints-sdk-compat"></a>

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


| SDK | 支持 | 备注或更多信息 | 
| --- | --- | --- | 
| [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/) v2 | 是 |  | 
| [适用于 C\$1\$1 的 SDK](https://docs.aws.amazon.com/sdk-for-cpp/latest/developer-guide/) | 是 |  | 
| [适用于 Go V2 (1.x) 的 SDK](https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/) | 是 |  | 
| [适用于 Go 1.x（V1）的 SDK](https://docs.aws.amazon.com/sdk-for-go/latest/developer-guide/) | 否 |  | 
| [适用于 Java 2.x 的 SDK](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/) | 是 |  | 
| [适用于 Java 1.x 的 SDK](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/) | 否 |  | 
| [适用于 JavaScript 3.x 的软件开发工具包](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/) | 是 |  | 
| [适用于 JavaScript 2.x 的 SDK](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/) | 否 |  | 
| [适用于 Kotlin 的 SDK](https://docs.aws.amazon.com/sdk-for-kotlin/latest/developer-guide/) | 是 |  | 
| [适用于.NET 4.x 的 SDK](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/) | 是 |  | 
| [适用于 .NET 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/) | 是 |  | 
| [适用于 PHP 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-php/latest/developer-guide/) | 是 |  | 
| [适用于 Python (Boto3) 的 SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) | 是 |  | 
| [适用于 Ruby 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/) | 是 |  | 
| [适用于 Rust 的 SDK](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/) | 是 |  | 
| [适用于 Swift 的 SDK](https://docs.aws.amazon.com/sdk-for-swift/latest/developer-guide/) | 是 |  | 
| [适用于 PowerShell V5 的工具](https://docs.aws.amazon.com/powershell/latest/userguide/) | 是 |  | 
| [适用于 PowerShell V4 的工具](https://docs.aws.amazon.com/powershell/v4/userguide/) | 是 |  | 