

 AWS Cloud9 不再向新客户提供。 AWS Cloud9 的现有客户可以继续正常使用这项服务。[了解详情](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# AWS Cloud9 开发环境的 VPC 设置
<a name="vpc-settings"></a>

与亚马逊虚拟私有云（亚马逊 VPC）关联的每个 AWS Cloud9 开发环境都必须满足特定的 VPC 要求。这些环境包括 EC2 环境以及与 VPC 内运行的 AWS Cloud 计算实例关联的 SSH 环境。示例包括 Amazon EC2 和 Amazon Lightsail 实例。

## 亚马逊 VPC 的要求 AWS Cloud9
<a name="vpc-settings-requirements"></a>

 AWS Cloud9 使用的亚马逊 VPC 需要以下设置。如果您已熟悉这些要求，并且只想创建一个兼容的 VPC，则向前跳至 [创建 VPC 以及其他 VPC 资源](#vpc-settings-create-vpc)。

使用以下核对清单来确认 VPC 满足以下**所有**要求：
+ VPC 可以 AWS 账户 与 AWS 区域 AWS Cloud9 开发环境位于同一环境中，也可以是 VPC 与环境 AWS 账户 不同的共享 VPC。但是，VPC 必须与环境位于 AWS 区域 同一环境中。有关 Amazon VPCs 的更多信息 AWS 区域，请参阅[查看 a VPCs 的列表 AWS 区域](#vpc-settings-requirements-list-vpcs)。有关为创建 Amazon VPC 的更多说明 AWS Cloud9，请参阅[创建 VPC 以及其他 VPC 资源](#vpc-settings-create-vpc)。有关使用共享亚马逊的信息 VPCs，请参阅 A *mazon VPC 用户指南 VPCs中的[使用共享](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html)内容。*
+ VPC 必须具有公有子网。如果子网的流量路由到互联网网关，则该子网是公有子网。有关 Amazon VPC 的子网列表，请参阅 [查看 VPC 的子网列表](#vpc-settings-requirements-subnets-view)。
+ 如果您的环境通过 SSH 直接访问其 EC2 实例，则该实例只能在公有子网中启动。有关确认子网是否为公有子网的信息，请参阅 [确认子网是否是公有子网](#vpc-settings-requirements-subnet-public)。
+ 如果您使用 Systems Manager 访问[非入口 Amazon EC2 实例](ec2-ssm.md)，则可以在公有子网或私有子网中启动实例。。
+ 如果您使用的是公有子网，请将互联网网关附加到 VPC。这样，实例的 AWS Systems Manager Agent (SSM Agent) 就可以连接到 Systems Manager。
+ 如果您使用的是私有子网，请允许子网的实例通过在公有子网中托管 NAT 网关与互联网通信。有关查看或更改互联网网关设置的更多信息，请参阅 [查看或更改互联网网关的设置](#vpc-settings-requirements-internet-gateway-view)
+ 公有子网必须具有包含一组最少路由的路由表。要了解如何确认子网是否具有路由表，请参阅 [确认子网是否具有路由表](#vpc-settings-requirements-subnet-route-table)。有关如何创建路由表的信息，请参阅 [创建路由表](#vpc-settings-requirements-route-table-create)。
+ VPC（或 AWS Cloud 计算实例，取决于您的架构）的关联安全组必须允许最少的入站和出站流量。有关适用于 Amazon VPC 的安全组列表，请参阅 [查看 VPC 的安全组列表](#vpc-settings-requirements-security-groups-vpc-view)。有关在 Amazon VPC 中创建安全组的更多信息，请参阅 [在 VPC 中创建安全组](#vpc-settings-requirements-security-group-vpc-create)。
+ 对于附加的安全层，如果 VPC 具有网络 ACL，则网络 ACL 必须允许至少一组入站和出站流量。要确认 Amazon VPC 是否具有至少一个网络 ACL，请参阅 [确认 VPC 是否具有至少一个网络 ACL](#vpc-settings-requirements-network-acl-confirm)。有关创建网络 ACL 的信息，请参阅[创建网络 ACL](#vpc-settings-requirements-network-acl-create)。
+ 如果您的开发环境[使用 SSM 访问 EC2 实例](ec2-ssm.md)，请确保该实例被启动到的公有子网分配了公有 IP 地址。为此，您必须为公有子网启用自动分配公有 IP 地址选项，并将其设置为 `Yes`。您可以在子网设置页面中创建 AWS Cloud9 环境之前，在公有子网上启用此选项。有关修改公有子网中自动分配 IP 设置所涉及的步骤，请参阅 *Amazon VPC 用户指南*中的[修改子网的公有 IPv4 寻址属性](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-public-ip.html)。有关配置公有子网和私有子网的更多信息，请参阅[将子网配置为公有子网或私有子网](#public-private-subnet)。

**注意**  
要完成以下过程，请登录 AWS 管理控制台 并使用管理员凭证打开 Amazon VPC 控制台 ([https://console.aws.amazon.com/](https://console.aws.amazon.com/vpc)vpc) 或 Amazon EC2 控制台 ([https://console.aws.amazon.com/ec2](https://console.aws.amazon.com/ec2))。  
如果您使用 AWS CLI 或 AWS CloudShell，我们建议您在中使用管理员凭据配置 AWS CLI 或 AWS 账户。 AWS CloudShell 如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

### 查看 a VPCs 的列表 AWS 区域
<a name="vpc-settings-requirements-list-vpcs"></a>

要使用 Amazon VPC 控制台，请在 AWS 导航栏中选择 AWS Cloud9 用于创建环境的。 AWS 区域 然后，在导航窗格** VPCs中**选择 Your。

例如，要使用 AWS CLI 或 AWS CloudShell，请运行 Amazon EC2 **`describe-vpcs`**命令，如下所示。

```
aws ec2 describe-vpcs --output table --query 'Vpcs[*].VpcId' --region us-east-2
```

在前面的命令中，`us-east-2`替换为 AWS 区域 在中 AWS Cloud9 创建环境的。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

输出包含 VPC 列表 IDs。

### 查看 VPC 的子网列表
<a name="vpc-settings-requirements-subnets-view"></a>

要使用 Amazon VPC 控制台，请在导航窗格中选择**您 VPCs**的。记下 **VPC ID** 列中的 VPC ID。然后选择导航窗格中的 **Subnets (子网)**，并在 **VPC** 列中查找包含该 ID 的子网。

例如，要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`describe-subnets`**命令，如下所示。

```
aws ec2 describe-subnets --output table --query 'Subnets[*].[SubnetId,VpcId]' --region us-east-2
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含子网的。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

在输出中，查找与 VPC ID 匹配的子网。

### 确认子网是否是公有子网
<a name="vpc-settings-requirements-subnet-public"></a>

**重要**  
假设您正在将环境的 EC2 实例启动到私有子网中。确保允许该实例的出站流量，以便它能够连接到 SSM 服务。对于私有子网，出站流量通常通过网络地址转换 (NAT) 网关或 VPC 终端节点进行配置。（NAT 网关需要公有子网）。  
假设您选择 VPC 端点（而不是 NAT 网关）来访问 SSM。如果实例的自动更新和安全补丁依赖于互联网访问，则它们可能无法正常工作。您可以使用其他应用程序（例如 S [AWS ystems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager.html)）来管理您的环境可能需要的任何软件更新。 AWS Cloud9 软件将照常更新。

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Subnets（子网）**。选中要使用的子网旁边的 AWS Cloud9 复选框。在 **Route Table（路由表）**选项卡上，如果在 **Target（目标）**列中有一个以 **igw-** 开头的条目，则该子网是公有子网。

要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`describe-route-tables`**命令。

```
aws ec2 describe-route-tables --output table --query 'RouteTables[*].Routes[*].{GatewayIds:GatewayId}' --region us-east-2 --filters Name=association.subnet-id,Values=subnet-12a3456b
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含子网的，然后`subnet-12a3456b`替换为子网 ID。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

在输出中，如果至少有一个结果以 `igw-` 开头，则子网为公有子网。

在输出中，如果没有结果，则路由表可能与 VPC 而不是子网关联。要确认这一点，请针对 VPC 的相关子网而不是子网本身运行 Amazon EC2 **`describe-route-tables`** 命令，如下所示。

```
aws ec2 describe-route-tables --output table --query 'RouteTables[*].Routes[*].{GatewayIds:GatewayId}' --region us-east-1 --filters Name=vpc-id,Values=vpc-1234ab56
```

在前面的命令中，`us-east-2`替换为包 AWS 区域 含 VPC 的，然后`vpc-1234ab56`替换为 VPC ID。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

在输出中，如果至少有一个结果以 `igw-` 开头，则 VPC 包含互联网网关。

### 查看或更改互联网网关的设置
<a name="vpc-settings-requirements-internet-gateway-view"></a>

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Internet Gateways（互联网网关）**。选中 Internet 网关旁边的框。要查看这些设置，请查看每个选项卡。要更改某个选项卡上的设置，请选择 **Edit (编辑)**（如果适用），然后按照屏幕上的说明进行操作。

要使用 AWS CLI 或查看设置，请运行 Amazon EC2 **`describe-internet-gateways`**命令。`aws-shell`

```
aws ec2 describe-internet-gateways --output table --region us-east-2 --internet-gateway-id igw-1234ab5c
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含互联网网关的，并`igw-1234ab5c`替换为互联网网关 ID。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

### 创建互联网网关
<a name="vpc-settings-requirements-internet-gateway-create"></a>

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Internet Gateways（互联网网关）**。选择 **Create internet gateway (创建 Internet 网关)**，然后按照屏幕上的说明进行操作。

要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`create-internet-gateway`**命令。

```
aws ec2 create-internet-gateway --output text --query 'InternetGateway.InternetGatewayId' --region us-east-2
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含新 Internet 网关的。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

输出包含新 Internet 网关的 ID。

### 将互联网网关附加到 VPC
<a name="vpc-settings-requirements-internet-gateway-attach"></a>

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Internet Gateways（互联网网关）**。选中 Internet 网关旁边的框。选择 **Actions, Attach to VPC (操作，附加到 VPC)**（如果可用），然后按照屏幕上的说明进行操作。

例如，要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`attach-internet-gateway`**命令，如下所示。

```
aws ec2 attach-internet-gateway --region us-east-2 --internet-gateway-id igw-a1b2cdef --vpc-id vpc-1234ab56
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含互联网网关的。将 `igw-a1b2cdef` 替换为互联网网关 ID。并将 `vpc-1234ab56` 替换为 VPC ID。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

### 确认子网是否具有路由表
<a name="vpc-settings-requirements-subnet-route-table"></a>

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Subnets（子网）**。选中要使用的 VPC 的公有子网旁边的 AWS Cloud9 复选框。在 **Route table（路由表）**选项卡上，如果有 **Route Table（路由表）**的值，则公有子网具有一个路由表。

要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`describe-route-tables`**命令。

```
aws ec2 describe-route-tables --output table --query 'RouteTables[*].Associations[*].{RouteTableIds:RouteTableId}' --region us-east-2 --filters Name=association.subnet-id,Values=subnet-12a3456b
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含公有子网的，并`subnet-12a3456b`替换为公有子网 ID。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

如果输出中存在值，则公有子网具有至少一个路由表。

在输出中，如果没有结果，则路由表可能与 VPC 而不是子网关联。要进行确认，请针对子网的相关 VPC 而不是子网本身运行 Amazon EC2 **`describe-route-tables`** 命令，如下所示。

```
aws ec2 describe-route-tables --output table --query 'RouteTables[*].Associations[*].{RouteTableIds:RouteTableId}' --region us-east-2 --filters Name=vpc-id,Values=vpc-1234ab56
```

在前面的命令中，`us-east-2`替换为包 AWS 区域 含 VPC 的，然后`vpc-1234ab56`替换为 VPC ID。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

在输出中，如果存在至少一个结果，则 VPC 至少具有一个路由表。

### 将路由表附加到子网
<a name="vpc-settings-requirements-route-table-attach"></a>

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Route Tables（路由表）**。选中要附加的路由表旁边的框。在 **Subnet Associations (子网关联)** 选项卡上，选择 **Edit (编辑)**，选中要将路由表附加到的子网旁边的框，然后选择 **Save (保存)**。

例如，要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`associate-route-table`**命令，如下所示。

```
aws ec2 associate-route-table --region us-east-2 --subnet-id subnet-12a3456b --route-table-id rtb-ab12cde3
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含路由表的。将 `subnet-12a3456b` 替换为子网 ID。并将 `rtb-ab12cde3` 替换为路由表 ID。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

### 创建路由表
<a name="vpc-settings-requirements-route-table-create"></a>

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Route Tables（路由表）**。选择 **Create Route Table (创建路由表)**，然后按照屏幕上的说明进行操作。

例如，要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`create-route-table`**命令，如下所示。

```
aws ec2 create-route-table --output text --query 'RouteTable.RouteTableId' --region us-east-2 --vpc-id vpc-1234ab56
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含新路由表的，并`vpc-1234ab56`替换为 VPC ID。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

输出包含新路由表的 ID。

### 查看或更改路由表的设置
<a name="vpc-settings-requirements-route-table-view"></a>

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Route Tables（路由表）**。选中路由表旁边的框。要查看这些设置，请查看每个选项卡。要更改某个选项卡中的设置，请选择 **Edit (编辑)**，然后按照屏幕上的说明进行操作。

要使用 AWS CLI 或查看设置，请运行 Amazon EC2 **`describe-route-tables`**命令，例如，如下所示。`aws-shell`

```
aws ec2 describe-route-tables --output table --region us-east-2 --route-table-ids rtb-ab12cde3
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含路由表的，并`rtb-ab12cde3`替换为路由表 ID。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

### 建议的最低路由表设置 AWS Cloud9
<a name="vpc-settings-requirements-route-table-settings"></a>


****  

|  **目标位置**  |  ** 目标**  |  **状态**  |  **已传播**  | 
| --- | --- | --- | --- | 
|  CIDR-BLOCK  |  本地  |  活动  |  否  | 
|  0.0.0.0/0  |  `igw-INTERNET-GATEWAY-ID`  |  活动  |  否  | 

在这些设置中，`CIDR-BLOCK` 是子网的 CIDR 块，`igw-INTERNET-GATEWAY-ID ` 是兼容的互联网网关的 ID。

### 查看 VPC 的安全组列表
<a name="vpc-settings-requirements-security-groups-vpc-view"></a>

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Security Groups（安全组）**。在 **Search Security Groups（搜索安全组）**框中，输入 VPC ID 或名称，然后按 `Enter`。将在搜索结果列表中显示该 VPC 的安全组。

要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`describe-security-groups`**命令。

```
aws ec2 describe-security-groups --output table --query 'SecurityGroups[*].GroupId' --region us-east-2 --filters Name=vpc-id,Values=vpc-1234ab56
```

在前面的命令中，`us-east-2`替换为包 AWS 区域 含 VPC 的，然后`vpc-1234ab56`替换为 VPC ID。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

输出包含该 VPC IDs 的安全组列表。

### 查看 AWS Cloud 计算实例的安全组列表
<a name="vpc-settings-requirements-security-groups-instance-view"></a>

要使用 Amazon EC2 控制台，请展开导航窗格中的 **Instances（实例）**，然后选择 **Instances（实例）**。在实例列表中，选择实例旁边的框。该实例的安全组将出现在 **Description (描述)** 选项卡中的 **Security groups (安全组)** 旁边。

例如，要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`describe-security-groups`**命令，如下所示。

```
aws ec2 describe-instances --output table --query 'Reservations[*].Instances[*].NetworkInterfaces[*].Groups[*].GroupId' --region us-east-2 --instance-ids i-12a3c456d789e0123
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含实例的，然后`i-12a3c456d789e0123`替换为实例 ID。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

输出包含该实例的安全 IDs 组列表。

### 查看或更改 VPC 中的安全组的设置
<a name="vpc-settings-requirements-security-group-vpc-view"></a>

要使用 Amazon VPC 控制台，请选择导航窗格中的 **Security Groups（安全组）**。选中安全组旁边的框。要查看这些设置，请查看每个选项卡。要更改某个选项卡上的设置，请选择 **Edit (编辑)**（如果适用），然后按照屏幕上的说明进行操作。

要使用 AWS CLI 或查看设置，请运行 Amazon EC2 **`describe-security-groups`**命令，例如，如下所示。`aws-shell`

```
aws ec2 describe-security-groups --output table --region us-east-2 --group-ids sg-12a3b456
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含实例的，然后`sg-12a3b456`替换为安全组 ID。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

### 查看或更改 AWS Cloud 计算实例安全组的设置
<a name="vpc-settings-requirements-security-group-instance-view"></a>

要使用 Amazon EC2 控制台，请展开导航窗格中的 **Instances（实例）**，然后选择 **Instances（实例）**。在实例列表中，选中实例旁边的框。在 **Description (描述)** 选项卡中，对于 **Security groups (安全组)**。查看每个选项卡。要更改某个选项卡上的设置，请选择 **Edit (编辑)**（如果适用），然后按照屏幕上的说明进行操作。

要使用 AWS CLI 或查看设置，请运行 Amazon EC2 **`describe-security-groups`**命令，例如，如下所示。`aws-shell`

```
aws ec2 describe-security-groups --output table --region us-east-2 --group-ids sg-12a3b456
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含实例的，然后`sg-12a3b456`替换为安全组 ID。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

### 的最低入站和出站流量设置 AWS Cloud9
<a name="vpc-settings-requirements-traffic-settings"></a>

**重要**  
实例的 IA 安全组可能没有入站规则。如果发生这种情况，这意味着不允许从另一台主机发送到实例的传入流量。有关使用非入口 EC2 实例的信息，请参阅 [使用访问无入口 EC2 实例 AWS Systems Manager](ec2-ssm.md)。
+  **入站**：通过端口 22 使用 SSH 的所有 IP 地址。但是，您可以将这些 IP 地址限制为仅限 AWS Cloud9 使用的 IP 地址。有关更多信息，请参阅 [的入站 SSH IP 地址范围 AWS Cloud9](ip-ranges.md)。
**注意**  
对于 2018 年 7 月 31 日当天或之后创建的 EC2 环境， AWS Cloud9 使用安全组通过端口 22 通过 SSH 限制入站 IP 地址。具体而言，这些入站 IP 地址只是 AWS Cloud9 使用的地址。有关更多信息，请参阅 [的入站 SSH IP 地址范围 AWS Cloud9](ip-ranges.md)。
+  **入站（ ACLs 仅限网络）**：对于与运行亚马逊 Linux 或 Ubuntu 服务器的 Amazon EC2 实例关联的 EC2 环境和 SSH 环境，所有 IP 地址都使用端口 32768-61000 上的 TCP。有关更多信息以及其他 Amazon EC2 实例类型的端口范围，请参阅 *Amazon VPC 用户指南* 中的[临时端口](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ACLs.html#VPC_ACLs_Ephemeral_Ports)。
+  **出站**：使用任何协议和端口的所有流量源。

您可以在安全组级别设置该行为。要获得更高级别的安全性，您还可以使用网络 ACL。有关更多信息，请参阅 *Amazon VPC 用户指南 ACLs*中的[安全组和网络对比](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison)。

例如，要将入站和出站规则添加到安全组中，您可以按如下方式设置这些规则。




**入站规则**  

|  **Type**  |  **协议**  |  **端口范围**  |  **源**  | 
| --- | --- | --- | --- | 
|  SSH (22)  |  TCP (6)  |  22  |  0.0.0.0（但请参阅以下注释以及[的入站 SSH IP 地址范围 AWS Cloud9](ip-ranges.md)。）  | 

**注意**  
对于 2018 年 7 月 31 日当天或之后创建的 EC2 环境， AWS Cloud9 添加入站规则，以限制通过端口 22 使用 SSH 的入站 IP 地址。这仅限于 AWS Cloud9 使用的地址。有关更多信息，请参阅 [的入站 SSH IP 地址范围 AWS Cloud9](ip-ranges.md)。




**出站规则**  

|  **Type**  |  **协议**  |  **端口范围**  |  **源**  | 
| --- | --- | --- | --- | 
|  所有流量  |  ALL  |  ALL  |  0.0.0.0/0  | 

如果您还选择将入站和出站规则添加到网络 ACL 中，您可以按如下方式设置这些规则。




**入站规则**  

|  **规则 \$1**  |  **Type**  |  **协议**  |  **端口范围**  |  **源**  |  **允许/拒绝**  | 
| --- | --- | --- | --- | --- | --- | 
|  100  |  SSH (22)  |  TCP (6)  |  22  |  0.0.0.0（但请参阅[的入站 SSH IP 地址范围 AWS Cloud9](ip-ranges.md)。）  |  允许  | 
|  200  |  自定义 TCP 规则  |  TCP (6)  |  32768-61000（适用于 Amazon Linux 和 Ubuntu Server 实例。有关其他实例类型，请参阅[临时端口](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ACLs.html#VPC_ACLs_Ephemeral_Ports)。）  |  0.0.0.0/0  |  允许  | 
|   `*`   |  所有流量  |  ALL  |  ALL  |  0.0.0.0/0  |  DENY  | 




**出站规则**  

|  **规则 \$1**  |  **Type**  |  **协议**  |  **端口范围**  |  **源**  |  **允许/拒绝**  | 
| --- | --- | --- | --- | --- | --- | 
|  100  |  所有流量  |  ALL  |  ALL  |  0.0.0.0/0  |  允许  | 
|   `*`   | 所有流量 |  ALL  |  ALL  |  0.0.0.0/0  |  DENY  | 

有关安全组和网络的更多信息 ACLs，请参阅 *Amazon VPC 用户指南*中的以下内容。
+  [安全性](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html) 
+  [您的 VPC 的安全组](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html) 
+  [Network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ACLs.html) 

### 在 VPC 中创建安全组
<a name="vpc-settings-requirements-security-group-vpc-create"></a>

要使用 Amazon VPC 或 Amazon EC2 控制台，请执行以下任一操作：
+ 在 Amazon VPC 控制台中，选择导航窗格中的 **Security Groups（安全组）**。选择 **Create Security Group (创建安全组)**，然后按照屏幕上的说明进行操作。
+ 在 Amazon EC2 控制台中，展开导航窗格中的 **Network & Security（网络与安全）**，然后选择 **Security Groups（安全组）**。选择 **Create Security Group (创建安全组)**，然后按照屏幕上的说明进行操作。

例如，要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`create-security-group`**命令，如下所示。

```
aws ec2 create-security-group --region us-east-2 --vpc-id vpc-1234ab56
```

在前面的命令中，`us-east-2`替换为包 AWS 区域 含 VPC 的，然后`vpc-1234ab56`替换为 VPC ID。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

### 确认 VPC 是否具有至少一个网络 ACL
<a name="vpc-settings-requirements-network-acl-confirm"></a>

要使用 Amazon VPC 控制台，请在导航窗格中选择**您 VPCs**的。选择要使用的 VPC 旁边的 AWS Cloud9 复选框。在 **Summary（摘要）**选项卡上，如果具 **Network ACL（网络 ACL）**的值，则 VPC 具有至少一个网络 ACL。

要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`describe-network-acls`**命令。

```
aws ec2 describe-network-acls --output table --query 'NetworkAcls[*].Associations[*].NetworkAclId' --region us-east-2 --filters Name=vpc-id,Values=vpc-1234ab56
```

在前面的命令中，`us-east-2`替换为包 AWS 区域 含 VPC 的，然后`vpc-1234ab56`替换为 VPC ID。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

如果输出包含列表中的至少一个条目，则 VPC 至少具有一个网络 ACL。

### 查看 VPC ACLs 的网络列表
<a name="vpc-settings-requirements-network-acls-view"></a>

要使用 Amazon VPC 控制台，请在导航窗格中选择**网络 ACLs**。在 “**搜索网络 ACLs**” 框中，输入 VPC ID 或名称，然后按`Enter`。该 VPC ACLs 的网络出现在搜索结果列表中。

要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`describe-network-acls`**命令。

```
aws ec2 describe-network-acls --output table --query 'NetworkAcls[*].Associations[*].NetworkAclId' --region us-east-2 --filters Name=vpc-id,Values=vpc-1234ab56
```

在前面的命令中，`us-east-2`替换为包 AWS 区域 含 VPC 的，然后`vpc-1234ab56`替换为 VPC ID。要在 Windows 中运行上述命令，请将单引号（' '）替换为双引号（" "）。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

输出包含该 VPC ACLs 的网络列表。

### 查看或更改网络 ACL 的设置
<a name="vpc-settings-requirements-network-acl-view"></a>

要使用 Amazon VPC 控制台，请在导航窗格中选择**网络 ACLs**。选择网络 ACL 旁边的框。要查看这些设置，请查看每个选项卡。要更改某个选项卡上的设置，请选择 **Edit（编辑）**（如果适用），然后按照屏幕上的说明进行操作。

要使用 AWS CLI 或查看设置，请运行 Amazon EC2 **`describe-network-acls`**命令。`aws-shell`

```
aws ec2 describe-network-acls --output table --region us-east-2 --network-acl-ids acl-1234ab56
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含网络 ACL 的，然后`acl-1234ab56`替换为网络 ACL ID。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

### 创建网络 ACL
<a name="vpc-settings-requirements-network-acl-create"></a>

要使用 Amazon VPC 控制台，请在导航窗格中选择**网络 ACLs**。选择 **Create Network ACL (创建网络 ACL)**，然后按照屏幕上的说明进行操作。

要使用 AWS CLI 或`aws-shell`，请运行 Amazon EC2 **`create-network-acl`**命令。

```
aws ec2 create-network-acl --region us-east-2 --vpc-id vpc-1234ab56
```

在前面的命令中，`us-east-2`替换为 AWS 区域 包含要将新网络 ACL 连接到的 VPC 的。另外，将 `vpc-1234ab56` 替换为 VPC ID。要将上述命令与 `aws-shell` 一起运行，请忽略 `aws`。

## 创建 VPC 以及其他 VPC 资源
<a name="vpc-settings-create-vpc"></a>

按照以下过程创建 VPC 以及运行应用程序所需的其他 VPC 资源。VPC 资源包括子网、路由表、互联网网关和 NAT 网关。

**使用控制台创建 VPC、子网和其他 VPC 资源**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在 VPC 控制面板上，选择**创建 VPC**。

1. 对于**要创建的资源**，选择 **VPC 等**。

1. 要为 VPC 资源创建名称标签，请选中**名称标签自动生成**。要为 VPC 资源提供自己的名称标签，请取消选中该选项。

1. 对于 **IPv4 CIDR 块**，您必须输入 VPC IPv4 的地址范围。的推荐 IPv4 范围 AWS Cloud9 是`10.0.0.0/16`。

1. （可选）要支持 IPv6 流量，请选择 **IPv6 CIDR 块**，即**亚马逊提供 IPv6 **的 CIDR 块。

1. 选择**租赁**选项。此选项定义您启动到此 VPC 中的 EC2 实例是在与其他 AWS 账户 共享的硬件上运行，还是在专供您使用的硬件上运行。如果您选择将 VPC 的租赁设为 `Default`，则在此 VPC 中启动的 EC2 实例将使用您在启动实例时指定的租赁属性。有关更多信息，请参阅《*Amazon EC2 用户指南*》中的[使用定义的参数启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)。

   如果您选择 VPC 的租赁为 `Dedicated`，则这些实例将始终在专供您使用的硬件上作为[专用实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)运行。如果您使用的是 AWS Outposts，则您的 Outpost 需要私有连接；您必须使用 `Default` 租赁。

1. 对于**可用区数量 (AZs)**，我们建议您Availability Zones为生产环境配置至少两个子网。要 AZs 为您的子网选择，请展开**自定义 AZs**。否则，你可以让自己 AWS 选择。 AZs 

1. 要配置子网，请选择**公有子网的数量**和**私有子网的数量**的值。要选择子网的 IP 地址范围，请展开**自定义子网 CIDR 块**。否则，让我们为你 AWS 选择它们。

1. （可选）如果私有子网中的资源需要通过以下方式访问公有互联网 IPv4：对于 **NAT 网关**，请选择要 AZs 在其中创建 NAT 网关的数量。在生产环境中，我们建议您在每个可用区部署一个 NAT 网关，其中包含需要访问公共互联网的资源。

1. （可选）如果私有子网中的资源需要通过以下方式访问公共互联网 IPv6：对于**仅限出口 Internet 网关**，请选择 “**是**”。

1. （可选）如果要直接从 VPC 访问 Amazon S3，请选择 **VPC 端点**、**S3 网关**。这将为 Amazon S3 创建一个网关 VPC 端点。有关更多信息，请参阅《AWS PrivateLink 指南》中的 [网关 VPC 端点](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)**。

1. （可选）对于 **DNS 选项**，默认情况下，两个域名解析选项均处于启用状态。如果默认设置无法满足您的需求，您可以停用这些选项。

1. （可选）要向 VPC 添加标签，请展开**其他标签**，选择**添加新标签**，然后输入标签键和标签值。

1. 在**预览**窗格中，您可以直观地显示您所配置的 VPC 资源之间的关系。实线表示资源之间的关系。虚线表示指向 NAT 网关、互联网网关和网关端点的网络流量。创建 VPC 后，您可以使用**资源地图**选项卡，随时以此格式直观地显示 VPC 的资源。

1. VPC 配置完成后，选择**创建 VPC**。

## 仅创建 VPC
<a name="create-vpc-only"></a>

按照以下过程，使用 Amazon VPC 控制台创建无额外 VPC 资源的 VPC。

**使用控制台创建无额外 VPC 资源的 VPC。**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在 VPC 控制面板上，选择**创建 VPC**。

1. 对于**要创建的资源**，选择 **仅 VPC**。

1. （可选）对于**名称标签**，输入 VPC 的名称。这样做可创建具有 `Name` 键以及您指定的值的标签。

1. 对于 **IPv4 CIDR 块**，请执行以下任一操作：
   + 选择 **IPv4 CIDR 手动输入并输入**您的 VPC IPv4 的地址范围。的推荐 IPv4 范围 AWS Cloud9 是`10.0.0.0/16`。
   + 选择 **IPAM 分配的 IPv4 CIDR 块**，选择亚马逊 VPC IP 地址管理器 (IPAM) IPv4 地址池和网络掩码。CIDR 块的大小受 IPAM 池上的分配规则限制。IPAM 是一项 VPC 功能，可帮助您规划、跟踪和监控工作负载的 IP 地址。 AWS 有关更多信息，请参阅**《Amazon Virtual Private Cloud 管理员指南》中的[什么是 IPAM？](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html)。

     如果您使用 IPAM 来管理 IP 地址，我们建议您选择此选项。否则，您为 VPC 指定的 CIDR 块可能与 IPAM CIDR 分配重叠。

1. （可选）要创建双堆栈 VPC，请为您的 VPC 指定 IPv6 地址范围。对于 **IPv6 CIDR 块**，请执行以下任一操作：
   + 选择 **IPAM 分配的 IPv6 CIDR 块**，然后选择您的 IP IPv6 AM 地址池。CIDR 块的大小受 IPAM 池上的分配规则限制。
   + 要从亚马逊 IPv6 地址池中请求 IPv6 CIDR 块，请选择**亚马逊提供 IPv6 **的 CIDR 块。对于**网络边界组**，选择从中 AWS 通告 IP 地址的组。亚马逊提供的固定的 IPv6 CIDR 块大小为 /56。
   + 选择**我拥有的 IPv6 CIDR**，使用你自带的 [IP 地址 (BYOIP) AWS 使用你自带](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html)的 IPv6 CIDR 块。对于**池**，选择要从中分配 IPv6 CIDR 块 IPv6 的地址池。

1. （可选）选择**租赁**选项。此选项定义了您在 VPC 中启动的 EC2 实例是在与其他人共享的硬件上运行， AWS 账户 还是仅在专供您使用的硬件上运行。如果您选择将 VPC 的租赁设为 `Default`，则在此 VPC 中启动的 EC2 实例将使用您在启动实例时指定的租赁属性。有关更多信息，请参阅《*Amazon EC2 用户指南*》中的[使用定义的参数启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)。

   如果您选择 VPC 的租赁为 `Dedicated`，则这些实例将始终在专供您使用的硬件上作为[专用实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)运行。如果您使用的是 AWS Outposts，则您的 Outpost 需要私有连接；您必须使用 `Default` 租赁。

1. （可选）要向 VPC 添加标签，请选择**添加新标签**，然后输入标签键和标签值。

1. 选择**创建 VPC**。

1. 创建 VPC 后，您可以添加子网。

## 为创建子网 AWS Cloud9
<a name="vpc-settings-create-subnet"></a>

您可以使用 Amazon VPC 控制台为与兼容的 VPC 创建子网 AWS Cloud9。您是否可以为 EC2 实例创建私有子网或公有子网，取决于环境与其连接的方式：
+ **通过 SSH 直接访问：**仅限公有子网
+ **通过 Systems Manager 访问**：公有子网或私有子网

在私有子网启动环境的 EC2 这一选项仅在使用[控制台、命令行或 CloudFormation](ec2-ssm.md) 创建“非入口”EC2 环境时可用。

您可以按照[相同的步骤创建子网](#create-subnet-proc)，该子网可设为公有或私有。如果子网的关联路由表包含指向互联网网关的路由，则该子网是公有子网。但是如果子网的关联路由表没有指向互联网网关的路由，则该子网是私有子网。有关更多信息，请参阅 [将子网配置为公有子网或私有子网](#public-private-subnet)。

如果您按照前面的步骤为其创建 VPC AWS Cloud9，则无需执行此过程。这是因为**新建 VPC** 向导自动为您创建子网。

**重要**  
 AWS 账户 必须已经在同 AWS 区域 一个环境中具有兼容的 VPC。有关更多信息，请参阅[亚马逊 VPC 的要求 AWS Cloud9](#vpc-settings-requirements)中的 VPC 要求。
对于此过程，我们建议您在中使用 IAM 管理员的证书登录 AWS 管理控制台 并打开 Amazon VPC 控制台 AWS 账户。如果您无法执行此操作，请咨询您的 AWS 账户 管理员。
某些企业可能不允许您自行创建子网。如果您无法创建子网，请咨询您的 AWS 账户 管理员或网络管理员。<a name="create-subnet-proc"></a>

**创建子网**

1. 如果亚马逊 VPC 控制台尚未打开，请登录 AWS 管理控制台 并通过 [https://console.aws.amazon.com/](https://console.aws.amazon.com/vpc)vpc 打开亚马逊 VPC 控制台。

1. 在导航栏中 AWS 区域 ，如果与环境的区域不同，请选择正确的区域。

1. 如果尚未显示**子网**页，请在导航窗格中选择**子网**。

1. 选择**创建子网**。

1. 在 **Create Subnet（创建子网）**对话框中，在 **Name tag（名称标签）**中输入子网的名称。

1. 对于 **VPC**，请选择要与子网关联的 VPC。

1. 对于**可用区**，选择子网要使用的可用区，或者选择**无首选项**让您 AWS 选择可用区。 AWS 区域 

1. 对于 **IPv4 CIDR 块**，以 CIDR 格式输入子网要使用的 IP 地址范围。该 IP 地址范围必须是 VPC 中的 IP 地址子集。

   有关 CIDR 块的信息，请参阅 *Amazon VPC 用户指南*中的 [VPC 和子网大小调整](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-sizing.html)。另请参阅 [3.1。RFC 4632 中的@@ 基本概念和前缀表示法](http://tools.ietf.org/html/rfc4632#section-3.1)或维基百科中的 [IPv4 CIDR 块](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#IPv4_CIDR_blocks)。

创建子网后，[将其配置为公有子网或私有子网](#public-private-subnet)。

## 将子网配置为公有子网或私有子网
<a name="public-private-subnet"></a>

创建子网后，您可以通过指定子网与互联网通信的方式将其设为公有子网或私有子网。

公有子网有一个公有 IP 地址，并且连接了一个互联网网关（IGW），以允许子网的实例与互联网以及其他 AWS 服务进行通信。

私有子网中的实例具有私有 IP 地址，并且网络地址转换（NAT）网关用于在子网的实例与互联网以及其他 AWS 服务之间来回发送流量。NAT 网关必须托管在公有子网中。

------
#### [ Public subnets ]

**注意**  
即使您环境的实例是在私有子网中启动的，您的 VPC 也必须至少具有一个公有子网。这是因为转发进出实例的流量的 NAT 网关必须托管在公有子网中。

将子网配置为公有子网，包括将互联网网关 (IGW) 附加到该子网、配置路由表以指定通往该 IGW 的路由以及在安全组中定义用于控制入站和出站流量的设置。

 有关执行这些任务的指导，请参阅 [创建 VPC 以及其他 VPC 资源](#vpc-settings-create-vpc)。

**重要**  
如果您的开发环境[使用 SSM 访问 EC2 实例](ec2-ssm.md)，请确保该实例被启动到的公有子网分配了公有 IP 地址。为此，您必须为公有子网启用自动分配公有 IP 地址选项，并将其设置为 `Yes`。在子网设置页面中创建 AWS Cloud9 环境之前，可以在公有子网上启用此功能。有关修改公有子网中自动分配 IP 设置所涉及的步骤，请参阅 *Amazon VPC 用户指南*中的[修改子网的公有 IPv4 寻址属性](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-public-ip.html)。有关配置公有子网和私有子网的更多信息，请参阅[将子网配置为公有子网或私有子网](#public-private-subnet)。

------
#### [ Private subnets ]

如果您正在创建通过 Systems Manager 访问的非入口实例，则可以在私有子网中将其启动。私有子网没有公有 IP 地址。因此，您需要一个 NAT 网关以将私有 IP 地址映射到公有地址来进行请求，并且还需要将公有 IP 地址映射回私有地址以进行响应。

**警告**  
您在账户中创建和使用 NAT 网关会产生费用。NAT 网关小时使用费率和数据处理费率适用于此。Amazon EC2 数据传输费同样适用。有关更多信息，请参阅 [Amazon VPC 定价](https://aws.amazon.com/vpc/pricing/)。

在创建和配置 NAT 网关之前，您必须执行以下操作：
+ 创建一个公有 VPC 子网以托管 NAT 网关。
+ 预置可分配给 NAT 网关的[弹性 IP 地址](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#WorkWithEIPs)。
+ 对于私有子网，清除 “**启用自动分配公有 IPv4 地址**” 复选框，以便为在其中启动的实例分配私有 IP 地址。有关更多信息，请参阅 *Amazon VPC 用户指南*中的[您的 VPC 中的 IP 地址](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html)。

有关此任务中的步骤，请参阅 *Amazon VPC 用户指南*中的[使用 NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-working-with)。

**重要**  
目前，如果您的环境的 EC2 实例启动到私有子网，则无法使用[AWS 托管临时证书](security-iam.md#auth-and-access-control-temporary-managed-credentials)允许 EC2 环境 AWS 服务 代表 AWS 实体（例如 IAM 用户）进行访问。

------