

# 创建支持 VPC Lattice 的服务
<a name="ecs-vpc-lattice-create-service"></a>

您可以使用 Amazon Web Services 管理控制台 或 Amazon CLI 创建支持 VPC Lattice 的服务。

## 先决条件
<a name="create-ecs-vpc-lattice-prereqs"></a>

在开始本教程之前，请确保满足以下先决条件：
+ 安装并配置了最新版本的 Amazon CLI。有关更多信息，请参阅[安装 Amazon Command Line Interface](https://docs.amazonaws.cn/cli/latest/userguide/install-cliv2.html)。
**注意**  
您可以使用双堆栈服务端点通过 IPv4 和 IPv6 从 Amazon CLI、SDK 和 Amazon ECS API 与 Amazon ECS 进行交互。有关更多信息，请参阅 [使用 Amazon ECS 双堆栈端点](dual-stack-endpoint.md)。
+ 完成 [设置以使用 Amazon ECS](get-set-up-for-amazon-ecs.md) 中所述的步骤。
+ 您的 IAM 用户具有 [AmazonECS\_FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess) IAM 策略示例中指定的必需权限。

## 使用 Amazon Web Services 管理控制台 创建支持 VPC Lattice 的服务
<a name="ecs-lattice-create-console"></a>

按照以下步骤使用 Amazon Web Services 管理控制台 创建支持 VPC Lattice 的服务。

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

1. 在导航页面中，选择**集群**。

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

1. 在 **Services**（服务）选项卡上，选择 **Create**（创建）。

   如果您以前从未创建过服务，请按照[使用控制台创建 Amazon ECS 服务](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/create-service-console-v2.html)中的步骤进行操作，然后在进入 VPC Lattice 部分后继续执行这些步骤。

1. 勾选按钮，选择**开启 VPC Lattice**。

1. 要使用现有的角色，则对于 **Amazon ECS 的 ECS 基础设施角色**，请选择您已经创建的角色，以便在创建 VPC Lattice 目标组时使用。要创建新角色，请**创建 ECS 基础设施角色**。

1. 选择 **VPC**。

   **VPC** 取决于您在注册任务定义时选择的联网模式。如果将 `host` 或 `network` 模式与 EC2 结合使用，请选择您的 VPC。

   对于 `awsvpc` 模式，系统会根据您在**联网**下选择的 VPC 自动选择 VPC，并且无法更改。

1. 在**目标组**下，选择一个或多个目标组。您需要选择至少 1 个目标组，最多可选择 5 个目标组。要添加更多目标组，请选择**添加目标组**。为您选择的每个目标组选择**端口名称**、**协议**和**端口**。要删除目标组，请选择**移除**。
**注意**  
如果要添加现有目标组，则需要使用 Amazon CLI。有关如何使用 Amazon CLI 添加目标组的说明，请参阅《Amazon Command Line Interface 参考》中的 [register-targets](https://docs.amazonaws.cn/cli/latest/reference/vpc-lattice/register-targets.html)**。
虽然 VPC Lattice 服务可以有多个目标组，但每个目标组只能添加到一个服务中。
要在仅 IPv6 配置中创建服务，请选择 IP 地址类型为 `IPv6` 的目标组。

1. 然后，您可以导航到 VPC Lattice 控制台继续进行设置。进入控制台后，您可以在侦听器默认操作或现有 VPC Lattice 服务的规则中加入新的目标组。

   有关更多信息，请参阅 [Listener rules for your VPC Lattice](https://docs.amazonaws.cn/vpc-lattice/latest/ug/listener-rules.html)。

**重要**  
您需要允许安全组使用入站规则 `vpc-lattice` 前缀，否则任务和运行状况检查可能会失败。

## 使用 Amazon CLI 创建支持 VPC Lattice 的服务
<a name="ecs-lattice-create-cli"></a>

使用 Amazon CLI 创建支持 VPC Lattice 的服务。将每个{{用户输入占位符}}替换为您自己的信息。

1. 创建目标组配置文件。以下示例名为 `tg-config.json`

   ```
   {
       "ipAddressType": "IPV4",
       "port": 443,
       "protocol": "HTTPS",
       "protocolVersion": "HTTP1",
       "vpcIdentifier": "{{vpc-f1663d9868EXAMPLE}}"
   }
   ```

1. 使用以下命令创建 VPC Lattice 目标组。

   ```
   aws vpc-lattice create-target-group \
       --name my-lattice-target-group-ip \
       --type IP \
       --config file://{{tg-config.json}}
   ```
**注意**  
要在仅 IPv6 配置中创建服务，请创建 IP 地址类型为 `IPv6` 的目标组。有关更多信息，请参阅《Amazon CLI 命令参考》**中的 [create-target-group](https://docs.amazonaws.cn/cli/latest/reference/vpc-lattice/create-target-group.html)。

   输出示例：

   ```
   {
       "arn": "arn:aws:vpc-lattice:us-east-2:123456789012:targetgroup/tg-0eaa4b9ab4EXAMPLE",
       "config": {
           "healthCheck": {
               "enabled": true,
               "healthCheckIntervalSeconds": 30,
               "healthCheckTimeoutSeconds": 5,
               "healthyThresholdCount": 5,
               "matcher": {
                   "httpCode": "200"
               },
               "path": "/",
               "protocol": "HTTPS",
               "protocolVersion": "HTTP1",
               "unhealthyThresholdCount": 2
           },
           "ipAddressType": "IPV4",
           "port": 443,
           "protocol": "HTTPS",
           "protocolVersion": "HTTP1",
           "vpcIdentifier": "vpc-f1663d9868EXAMPLE"
       },
       "id": "tg-0eaa4b9ab4EXAMPLE",
       "name": "my-lattice-target-group-ip",
       "status": "CREATE_IN_PROGRESS",
       "type": "IP"
   }
   ```

1. 以下名为 {{ecs-service-vpc-lattice.json}} 的 JSON 文件是用于将 Amazon ECS 服务附加到 VPC Lattice 目标组的示例。以下示例中的 `portName` 与您在任务定义 `portMappings` 属性 `name` 字段中定义的相同。

   ```
   {
       "serviceName": "{{ecs-service-vpc-lattice}}",
       "taskDefinition": "{{ecs-task-def}}",
           "vpcLatticeConfigurations": [
           {
               "targetGroupArn": "arn:aws:vpc-lattice:{{us-west-2:123456789012}}:targetgroup/{{tg-0eaa4b9ab4EXAMPLE}}",
               "portName": "{{testvpclattice}}",
               "roleArn": "arn:aws:iam::{{123456789012}}:role/ecsInfrastructureRoleVpcLattice"
           }
       ],
       "desiredCount": {{5}},
       "role": "{{ecsServiceRole}}"
   }
   ```

   使用以下命令创建 Amazon ECS 服务，并使用上面的 json 示例将其附加到 VPC Lattice 目标组。

   ```
   aws ecs create-service \
       --cluster {{clusterName}} \
       --serviceName {{ecs-service-vpc-lattice}} \
       --cli-input-json file://{{ecs-service-vpc-lattice.json}}
   ```