

# 启动 Amazon ECS Linux 容器实例
<a name="launch_container_instance"></a>

您可以使用 Amazon EC2 控制台创建 Amazon ECS 容器实例。

您可以使用各种方法启动实例，包括 Amazon EC2 控制台、AWS CLI 和 SDK。要了解启动实例的其他方法，请参阅《Amazon EC2 用户指南》中的[启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)**。

有关启动向导的更多信息，请参阅《Amazon EC2 用户指南》中的[使用新启动实例向导启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)**。

在开始之前，请完成 [设置以使用 Amazon ECS](get-set-up-for-amazon-ecs.md) 中的步骤。

您可以使用新 Amazon EC2 向导启动实例。启动实例向导指定启动实例所需的启动参数。

**Topics**
+ [过程](#linux-liw-initiate-instance-launch)
+ [名称和标签](#linux-liw-name-and-tags)
+ [应用程序和操作系统映像（亚马逊机器映像）](#linux-liw-ami)
+ [实例类型](#linux-liw-instance-type)
+ [密钥对（登录）](#linux-liw-key-pair)
+ [网络设置](#linux-liw-network-settings)
+ [配置存储](#linux-liw-storage)
+ [高级详细信息](#linux-liw-advanced-details)

## 过程
<a name="linux-liw-initiate-instance-launch"></a>

在开始之前，请完成 [设置以使用 Amazon ECS](get-set-up-for-amazon-ecs.md) 中的步骤。

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在屏幕顶部的导航栏中，会显示当前 AWS 区域，例如，美国东部美国东部（俄亥俄州）。选择要在其中启动实例的区域。

1. 从 Amazon EC2 控制台控制面板中，选择**启动实例**。

## 名称和标签
<a name="linux-liw-name-and-tags"></a>

实例名称是一个标签，其中密钥为**名称**，而值为您指定的名称。您可以为实例、卷和弹性图形添加标签。对于竞价型实例，您只能标记竞价型实例请求。

指定实例名称和其它标签为可选项。
+ 对于**名称**，为实例输入一个描述性名称。如果您没有指定名称，则可以通过其 ID 标识实例，该 ID 将在您启动实例时自动生成。
+ 要添加其它标签，请选择**添加其他标签**。选择**添加标签**，然后输入密钥和值，然后选择要标记的资源类型。为每个要添加的其它标签选择**添加标签**。

## 应用程序和操作系统映像（亚马逊机器映像）
<a name="linux-liw-ami"></a>

亚马逊机器映像（AMI）中包含了创建实例所需的信息。例如，AMI 可能包含充当 Web 服务器所需的软件，例如 Apache 和您的网站。

使用**搜索**栏查找由 AWS 发布的合适的经 Amazon ECS 优化的 AMI。

1. 在**搜索**栏中输入以下术语之一。
   + **ami-ecs**
   + 经 Amazon ECS 优化的 AMI 的**值**。

     有关最新的经 Amazon ECS 优化的 AMI 及其值，请参阅[经 Linux Amazon ECS 优化的 AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#ecs-optimized-ami-linux)。

1. 按 **Enter** 键。

1. 在**选择亚马逊机器映像（AMI）**页面上，选择 **AWS Marketplace AMI** 选项卡。

1. 从左侧 **Refine results**（优化结果）窗格中，选择 **Amazon Web Services** 作为 **Publisher**（发布者）。

1. 在要使用的 AMI 行上选择 **Select**（选择）。

   或者，选择右上角的 **Cancel**（取消）以返回启动实例向导，而不选择 AMI。将选择默认 AMI。确保 AMI 满足[经 Amazon ECS 优化的 Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) 中概述的要求。

## 实例类型
<a name="linux-liw-instance-type"></a>

实例类型定义了实例的硬件配置和大小。更大的实例类型拥有更多的 CPU 和内存。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。如果您希望运行仅 IPv6 工作负载，则某些实例类型不支持 IPv6 地址。有关更多信息，请参阅 *Amazon EC2 用户指南*中的 [IPv6 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#ipv6-addressing)。
+ 对于**实例类型**，请为实例选择实例类型。

   您选择的实例类型决定了可用于运行您的任务的资源。

## 密钥对（登录）
<a name="linux-liw-key-pair"></a>

为**密钥对名称**选择一个现有密钥对，或选择**创建新的密钥对**来新建一个密钥对。

**重要**  
如果您选择**在没有密钥对的情况下继续（不推荐）**选项，则将无法连接到此实例，除非您选择配置为允许用户以其它方式登录的 AMI。

## 网络设置
<a name="linux-liw-network-settings"></a>

在表单的**网络设置**部分选择**编辑**按钮后，根据需要配置网络设置。
+ 对于 **VPC**，选择要将实例启动到的 VPC。要运行仅 IPv6 工作负载，请选择同时包含 IPv4 和 IPv6 CIDR 数据块的双堆栈 VPC。
+ 对于**子网**，选择要在其中启动实例的子网。您可以在与可用区、本地区域、Wavelength 区域或 Outpost 关联的子网中启动实例。

  要在可用区中启动实例，请选择要在其中启动实例的子网。要创建新子网，请选择**新建子网**转到 Amazon VPC 控制台。完成此操作后，返回到启动实例向导并选择“刷新”图标，以便将您的子网加载到列表中。

  要在本地区域中启动实例，请选择您在本地区域中创建的子网。

  要在 Outpost 中启动实例，请在 VPC 中选择与 Outpost 关联的子网。

  要运行仅 IPv6 工作负载，请选择仅包含 IPv6 CIDR 数据块的子网。
+ **自动分配公有 IP**：如果实例应可从互联网进行访问，请验证**自动分配公有 IP** 字段设置为**启用**。如果不是，请将此字段设置为**禁用**。
**注意**  
容器实例需要访问才能与 Amazon ECS 服务端点通信。这可以通过接口 VPC 端点或具有公共 IP 地址的容器实例实现。  
有关接口 VPC 端点的更多信息，请参阅 [Amazon ECS 接口 VPC 端点（AWS PrivateLink）](vpc-endpoints.md)  
如果您没有配置接口 VPC 端点，并且您的容器实例没有公有 IP 地址，必须使用网络地址转换（NATI）来提供此访问。有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)和本指南中的 [为 Amazon ECS Linux 容器实例使用 HTTP 代理](http_proxy_config.md)。
+ 如果您选择双堆栈 VPC 和仅 IPv6 子网，对于**自动分配 IPv6 IP**，请选择**启用**。
+ **防火墙（安全组）**：使用安全组为容器实例定义防火墙规则。这些规则指定哪些传入的网络流量可传输到您的容器实例。所有其他的流量将被忽略。
  + 要选择现有安全组，请选择 **Select existing security group**（选择现有安全组），然后选择您在 [设置以使用 Amazon ECS](get-set-up-for-amazon-ecs.md) 中创建的安全组。
+ 如果要为仅 IPv6 工作负载启动实例，请选择**高级网络配置**，然后对于**分配主 IPv6 IP** 选择**是**。
**注意**  
如果没有主 IPv6 地址，则以主机或桥接网络模式在容器实例上运行的任务将无法向负载均衡器或 AWS Cloud Map 注册。

## 配置存储
<a name="linux-liw-storage"></a>

您选择的 AMI 包含一个或多个存储卷，包括根卷。您可以指定要附加到实例的其它卷。

您可以使用**简单**视图。
+ **存储类型**：为您的容器实例配置存储。

  如果您使用的是经 Amazon ECS 优化的 Amazon Linux 2 AMI，您的实例将配置单个 30GiB 卷，用于在操作系统和 Docker 之间共享。

  如果您使用的是 Amazon ECS 优化型 AMI，您的实例将配置两个卷。**根**卷适合操作系统使用，第二个 Amazon EBS 卷（已挂载到 `/dev/xvdcz`）适合 Docker 使用。

  您可以选择增大或减小实例的卷大小以满足您的应用程序需求。

## 高级详细信息
<a name="linux-liw-advanced-details"></a>

对于**高级详细信息**，请展开该部分以查看字段并为实例指定任何其他参数。
+ **购买选项**：选择**请求竞价型实例**以请求竞价型实例。您还需要设置与竞价型实例相关的其他字段。有关更多信息，请参阅竞价型实例[请求](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html)。
**注意**  
如果使用竞价型实例时看到 `Not available` 消息，则需要选择其他实例类型。
+ **IAM 实例配置文件**：选择您的容器实例 IAM 角色。其通常被命名为 `ecsInstanceRole`。
**重要**  
如果未使用适当的 IAM 权限启动容器实例，则 Amazon ECS 代理无法连接到集群。有关更多信息，请参阅 [Amazon ECS 容器实例 IAM 角色](instance_IAM_role.md)。
+ **用户数据**：使用用户数据（例如 [Amazon ECS 容器代理配置](ecs-agent-config.md) 中的代理环境变量）配置 Amazon ECS 容器实例。Amazon EC2 用户数据脚本仅在实例首次启动时执行一次。以下是用户数据的常用示例：
  + 默认情况下，您的容器实例将启动到您的默认集群中。要在非默认集群中启动，请选择 **Advanced Details** 列表。然后，将以下脚本粘贴到 **User data** 字段中，将 *your\$1cluster\$1name* 替换为您的集群的名称。

    ```
    #!/bin/bash
    echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
    ```
  + 如果 Amazon S3 中有 `ecs.config` 文件并且启用了对容器实例角色的 Amazon S3 只读访问权限，请选择**高级详细信息**列表。然后，将以下脚本粘贴到**用户数据**字段中，并将 *your\$1bucket\$1name* 替换为您的存储桶的名称以安装 AWS CLI 和在启动时写入您的配置文件。
**注意**  
有关此配置的更多信息，请参阅[将 Amazon ECS 容器实例配置存储在 Amazon S3 中](ecs-config-s3.md)。

    ```
    #!/bin/bash
    yum install -y aws-cli
    aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
    ```
  + 使用 `ECS_CONTAINER_INSTANCE_TAGS` 配置参数为您的容器实例指定标签。这只创建与 Amazon ECS 关联的标签，无法使用 Amazon EC2 API 列出这些标签。
**重要**  
如果您使用 Amazon EC2 Auto Scaling 组启动容器实例，则应使用 ECS\$1CONTAINER\$1INSTANCE\$1TAGS 代理配置参数来添加标签。这是由于标签添加到使用 自动扩缩组启动的 Amazon EC2 实例的方式造成的。

    ```
    #!/bin/bash
    cat <<'EOF' >> /etc/ecs/ecs.config
    ECS_CLUSTER=your_cluster_name
    ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"}
    EOF
    ```
  + 为您的容器实例指定标签，然后使用 `ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM` 配置参数将其从 Amazon EC2 传播到 Amazon ECS

    下面是一个用户数据脚本示例，该脚本将传播与容器实例关联的标签，以及向名为 `your_cluster_name` 的集群注册容器实例：

    ```
    #!/bin/bash
    cat <<'EOF' >> /etc/ecs/ecs.config
    ECS_CLUSTER=your_cluster_name
    ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM=ec2_instance
    EOF
    ```
  + 默认情况下，Amazon ECS 容器代理会通过查看实例的默认 IPv4 和 IPv6 路由来尝试检测容器实例是否与仅 IPv6 配置兼容。要覆盖此行为，您可以在实例的 `/etc/ecs/ecs.config` 文件中将 ` ECS_INSTANCE_IP_COMPATIBILITY` 参数设置为 `ipv4` 或 `ipv6`。

    ```
    #!/bin/bash
    cat <<'EOF' >> /etc/ecs/ecs.config
    ECS_CLUSTER=your_cluster_name
    ECS_INSTANCE_IP_COMPATIBILITY=ipv6
    EOF
    ```

  有关更多信息，请参阅 [引导启动 Amazon ECS Linux 容器实例以传递数据](bootstrap_container_instance.md)。