

# 使用 Amazon ECS 双堆栈端点
<a name="dual-stack-endpoint"></a>

Amazon ECS 双堆栈端点支持通过 Internet 协议版本 4（IPv4）和 Internet 协议版本 6（IPv6）向 Amazon ECS 发出请求。有关所有 Amazon ECS 端点的列表，请参阅 AWS 一般参考 中的 [Amazon ECS endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html)。

当使用 REST API 时，您通过使用端点名称（URI）直接访问 Amazon ECS 端点。Amazon ECS 只支持区域双堆栈端点名称，这意味着，您必须在名称中指定区域。

对双堆栈端点名称使用以下命名约定：`ecs.region.api.aws`。

如果使用 AWS Command Line Interface（AWS CLI）和 AWS SDK，可使用参数或标志更改为双堆栈端点。您还可以在配置文件中直接将双堆栈端点指定为覆盖 Amazon ECS 端点。

下面几节介绍如何从 AWS CLI、AWS SDK 和 REST API 使用双堆栈端点。

**Topics**
+ [从 AWS CLI 使用双堆栈端点](#dual-stack-endpoints-cli)
+ [从 AWS SDK 使用双堆栈端点](#dual-stack-endpoints-sdks)
+ [从 REST API 使用双堆栈端点](#dual-stack-endpoints-examples-rest-api)

## 从 AWS CLI 使用双堆栈端点
<a name="dual-stack-endpoints-cli"></a>

本节提供用于向双堆栈端点发出请求的 AWS CLI 命令示例。有关安装 AWS CLI 或更新到最新版本的更多信息，请参阅《AWS Command Line Interface 用户指南（版本 2）》**中的[安装或更新到最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

要使用双堆栈端点，您可以在 AWS CLI 的 `config` 文件中将配置值 `use_dualstack_endpoint` 设置为 `true`，以将 `ecs` AWS CLI 命令发出的所有 Amazon ECS 请求定向到指定区域的双堆栈端点。您可以使用 `--region` 选项在 `config` 文件或命令中指定区域。有关 AWS CLI 配置文件的更多信息，请参阅《*AWS Command Line Interface 用户指南（版本 2）*》中的 [AWS CLI 中的配置和凭证文件设置](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。

如果您想要对特定 AWS CLI 命令使用双堆栈端点，则可以使用以下任一方法：
+ 您可以通过将任何 `ecs` 命令的 `--endpoint-url` 参数设置为 `https://ecs.aws-region.api.aws` 或 `http://ecs.aws-region.api.aws` 来对每条命令使用双堆栈端点。

  下面的示例命令列出了所有可用的集群并使用双堆栈端点处理请求。

  ```
  $ aws ecs list-clusters --endpoint-url https://ecs.aws-region.api.aws
  ```
+ 您可以在 AWS Config 文件中设置单独的配置文件。例如，创建一个将 `use_dualstack_endpoint` 设置为 `true` 的配置文件和一个不设置 `use_dualstack_endpoint` 的配置文件。在运行命令时，根据是否需要使用双堆栈端点来指定要使用的配置文件。

## 从 AWS SDK 使用双堆栈端点
<a name="dual-stack-endpoints-sdks"></a>

本节提供一些示例，介绍如何使用 AWS SDK 来访问双堆栈端点。

------
#### [ AWS SDK for Java 2.x ]

下面的示例显示如何使用 AWS SDK for Java 2.x 为 `us-east-1` 区域指定双堆栈端点。

```
Region region = Region.US_EAST_1
EcsClient client = EcsClient.builder().region(region).dualstackEnabled(true).build();
```

------
#### [ 适用于 Go 的 AWS SDK ]

下面的示例显示如何使用 适用于 Go 的 AWS SDK 为 `us-east-1` 区域指定双堆栈端点。

```
sess := session.Must(session.NewSession())
svc := ecs.New(sess, &aws.Config{
    Region: aws.String(endpoints.UsEast1RegionID),
    Endpoint: aws.String("https://ecs.us-east-1.api.aws")
})
```

------

有关更多信息，请参阅《*AWS SDK 和工具参考指南*》中的 [Dual-stack and FIPS endpoints](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html)。

## 从 REST API 使用双堆栈端点
<a name="dual-stack-endpoints-examples-rest-api"></a>

使用 REST API 时，您可以通过在请求中指定双堆栈端点来直接访问它。下面的示例使用双堆栈端点列出 `us-east-1` 区域中的所有 Amazon ECS 集群。

```
POST / HTTP/1.1
Host: ecs.us-east-1.api.aws
Accept-Encoding: identity
Content-Length: 2
X-Amz-Target: AmazonEC2ContainerServiceV20141113.ListClusters
X-Amz-Date: 20150429T170621Z
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS

{}
```