

# 将共享的 Amazon Cloud Map 命名空间与 Amazon ECS Service Connect 结合使用
<a name="service-connect-shared-namespaces-setup"></a>

为 Service Connect 设置共享的 Amazon Cloud Map 命名空间涉及以下步骤：命名空间所有者创建命名空间，所有者通过 Amazon Resource Access Manager（Amazon RAM）共享命名空间，使用者接受资源共享，以及使用者配置 Service Connect 以使用共享命名空间。

## 步骤 1：创建 Amazon Cloud Map 命名空间
<a name="service-connect-shared-namespaces-create"></a>

命名空间所有者创建一个将与其他账户共享的 Amazon Cloud Map 命名空间。

**使用 Amazon Web Services 管理控制台创建要共享的命名空间**

1. 打开 Amazon Cloud Map 控制台，地址：[https://console.aws.amazon.com/cloudmap/](https://console.amazonaws.cn/cloudmap/)。

1. 选择**创建命名空间**。

1. 输入**命名空间名称**。所有参与账户的服务都将使用此名称。

1. 对于**命名空间类型**，请为您的使用案例选择合适的类型：
   + **API 调用** ‐ 用于服务发现的 HTTP 命名空间，没有 DNS 功能。
   + **VPC 中的 API 调用和 DNS 查询** ‐ 用于服务发现的私有 DNS 命名空间，具有 VPC 中的私有 DNS 查询。
   + **API 调用和公有 DNS 查询** ‐ 用于服务发现的公有 DNS 命名空间，具有公有 DNS 查询。

1.  选择**创建命名空间**。

## 步骤 2：使用 Amazon RAM 共享命名空间
<a name="service-connect-shared-namespaces-share"></a>

命名空间所有者使用 Amazon RAM 与其他 Amazon Web Services 账户共享命名空间。

**使用 Amazon RAM 控制台共享命名空间**

1. 打开 Amazon RAM 控制台（[https://console.aws.amazon.com/ram/](https://console.amazonaws.cn/ram/)）。

1. 选择**创建资源共享**。

1. 对于**名称**，键入资源共享的描述性名称。

1. 在**资源**部分：

   1. 对于**资源类型**，选择 **Cloud Map 命名空间**。

   1. 选择您在上一步中创建的命名空间。

1. 在**托管权限**部分，指定 **AWSRAMPermissionCloudMapECSFullPermission**。
**重要**  
您必须使用 `AWSRAMPermissionCloudMapECSFullPermission` 托管权限来共享命名空间，Service Connect 才能与命名空间正常协作。

1. 在**主体**部分，指定要与其共享命名空间的 Amazon Web Services 账户。您可以输入账户 ID 或组织单元 ID。

1. 选择**创建资源共享**。

## 步骤 3：接受资源共享
<a name="service-connect-shared-namespaces-accept"></a>

命名空间使用者账户必须接受资源共享邀请才能使用共享命名空间。

**使用 Amazon RAM 控制台接受资源共享邀请**

1. 在使用者账户中，打开 Amazon RAM 控制台，网址为 [https://console.aws.amazon.com/ram/](https://console.amazonaws.cn/ram/)。

1. 在导航窗格中，选择**与我共享**，然后选择**资源共享**。

1. 选择资源共享邀请，然后选择**接受资源共享**。

1. 接受后，请记下资源详细信息中的共享命名空间 ARN。配置 Service Connect 服务时，您将使用此 ARN。

## 步骤 4：为 Amazon ECS 服务配置共享命名空间
<a name="service-connect-shared-namespaces-configure"></a>

接受共享命名空间后，命名空间使用者可以将 Amazon ECS 服务配置为使用共享命名空间。该配置与使用常规命名空间类似，但您必须指定命名空间 ARN 而不是名称。有关详细的服务创建过程，请参阅 [创建 Amazon ECS 滚动更新部署](create-service-console-v2.md)。

**使用Amazon Web Services 管理控制台创建具有共享命名空间的服务**

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.amazonaws.cn/ecs/v2) 打开控制台。

1. 在**集群**页面上，选择要在其中创建服务的集群。

1. 在**服务**下，选择**创建**。

1. 根据工作负载填写其他详细信息后，请在 **Service Connect** 部分中选择**使用 Service Connect**。

1. 对于**命名空间**，输入共享命名空间的完整 ARN。

   ARN 格式为：`arn:aws:servicediscovery:{{region}}:{{account-id}}:namespace/{{namespace-id}}`。

1. 根据需要为服务类型（客户端或客户端-服务器）配置剩余 Service Connect 设置。

1. 完成服务创建过程。

您还可以使用 Amazon CLI 或 Amazon SDK，通过在 `serviceConnectConfiguration` 的 `namespace` 参数中指定共享命名空间 ARN 来配置服务。

```
aws ecs create-service \
    --cluster my-cluster \
    --service-name my-service \
    --task-definition my-task-def \
    --service-connect-configuration '{
        "enabled": true,
        "namespace": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-abcdef1234567890",
        "services": [{
            "portName": "web",
            "discoveryName": "my-service",
            "clientAliases": [{
                "port": 80,
                "dnsName": "my-service"
            }]
        }]
    }'
```