

Amazon Web Services Blockchain Templates 已于 2019 年 4 月 30 日停产。不会对本服务或本支持文档进行进一步更新。为了获得最佳的托管区块链体验 AWS，我们建议您使用[亚马逊托管区块链 (AMB)](https://aws.amazon.com/managed-blockchain/)。要了解有关 Amazon Managed Blockchain 入门的更多信息，请参阅 [Hyperledger Fabric 研讨会](https://catalog.us-east-1.prod.workshops.aws/workshops/008da2cb-8454-42d0-877b-bc290bff7fcf/en-US)或[关于部署 Ethereum 节点的博客](https://aws.amazon.com/blogs/database/deploy-an-ethereum-node-on-amazon-managed-blockchain/)。如果您对 AMB 有疑问或需要进一步支持，[请联系 支持](https://console.aws.amazon.com/support/home#/case/create?issueType=technical)或您的 AWS 客户团队。

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

# Amazon Web Services Blockchain Templates 入门
<a name="blockchain-templates-getting-started"></a>

本教程演示了如何使用适用于以太坊的 AWS 区块链模板来创建私有区块链网络 CloudFormation。 AWS 您创建的网络有两个以太坊客户端和一个在 Amazon ECS 集群中的亚马逊 EC2 实例上运行的矿机。Amazon ECS 在从 Amazon ECR 拉出的 Docker 容器中运行此服务。在开始本教程之前，了解一下区块链网络和所涉及的 AWS 服务会很有帮助，但这不是必需的。

本教程假定您已设置好 [设置 Amazon Web Services Blockchain Templates](blockchain-templates-setting-up.md) 中提到的一般先决条件。此外，在使用模板之前，您必须设置一些 AWS 资源，例如 Amazon VPC 网络和 IAM 角色的特定权限。

本教程演示如何设置这些先决条件。我们选择了一些设置，但它们不是规定性的。只要满足先决条件，您就可以根据应用程序和环境需求选择其他配置。有关每个模板的功能和一般先决条件以及下载模板或在 CloudFormation中直接启动模板的信息，请参阅 [Amazon Web Services Blockchain Templates 和特征](blockchain-template-features.md)。

本教程中的示例使用美国西部（俄勒冈州）区域 (us-west-2)，但您可以使用支持 AWS Blockchain Templates 的任何区域：
+ 美国西部（俄勒冈州）区域（us-west-2）
+ 美国东部（弗吉尼亚北部）区域 (us-east-1)
+ 美国东部（俄亥俄）区域 (us-east-2)

**注意**  
在上述未列区域运行模板会在美国东部（弗吉尼亚州北部）区域 (us-east-1) 中启动资源。

您使用本教程配置的 AWS Blockchain Template 创建以下资源：
+ 您指定的类型和数量的按需 EC2 实例。本教程使用默认的 t2.medium 实例类型。
+ 内部应用程序负载均衡器。

在本程序后面提供了清理所创建资源的步骤。

**Topics**
+ [设置先决条件](blockchain-template-getting-started-prerequisites.md)
+ [创建 Ethereum 网络](blockchain-templates-create-stack.md)
+ [连接 EthStats 并 EthExplorer 使用堡垒主机](blockchain-bastion-host-connect.md)
+ [清理资源](blockchain-templates-cleanup.md)

# 设置先决条件
<a name="blockchain-template-getting-started-prerequisites"></a>

您在本教程中指定的适用于 Ethereum 的 AWS Blockchain Template 配置要求您执行以下操作：
+ [创建 VPC 和子网](#blockchain-templates-create-a-vpc)
+ [创建安全组](#blockchain-templates-create-security-group)
+ [为 Amazon ECS 创建 IAM 角色和 EC2 实例配置文件](#blockchain-templates-iam-roles)
+ [创建堡垒主机](#blockchain-templates-bastion-host)

## 创建 VPC 和子网
<a name="blockchain-templates-create-a-vpc"></a>

适用于 Ethereum 的 Amazon Web Services Blockchain Templates 将资源启动到使用 Amazon Virtual Private Cloud (Amazon VPC) 定义的虚拟网络中。您在本教程中指定的配置创建应用程序负载均衡器，它需要使用两个位于不同可用区中的公有子网。此外，容器实例需要使用一个私有子网，该子网必须与应用程序负载均衡器位于同一可用区中。首先，您使用 VPC 向导在同一可用区中创建一个公有子网和一个私有子网。然后，您在该 VPC 上的另一个可用区中创建第二个公有子网。

有关更多信息，请参阅《Amazon VPC 用户指南》**中的[什么是 Amazon VPC？](https://docs.aws.amazon.com/vpc/latest/userguide/)。

使用 Amazon VPC 控制台 ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) 创建弹性 IP 地址、VPC 和子网，如下所述。

**创建弹性 IP 地址**

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

1. 选择**弹性 IPs**、**分配新地址**、**分配**。

1. 记下您创建的弹性 IP 地址，然后选择 **Close (关闭)**。

1. 在弹性 IP 地址列表中，找到以前创建的弹性 IP 地址的 **Allocation ID (分配 ID)**。在创建 VPC 时会用到它。

**创建 VPC**

1. 在导航栏中，为 VPC 选择一个区域。 VPCs 特定于某个区域，因此请选择您在其中创建密钥对以及启动以太坊堆栈的相同区域。有关更多信息，请参阅 [创建密钥对](blockchain-templates-setting-up.md#blockchain-templates-create-a-key-pair)。

1. 在 VPC 控制面板上，选择 **Start VPC Wizard**。

1. 在 **Step 1: Select a VPC Configuration (步骤1: 选择 VPC 配置)** 页面上，选择 **VPC with Public and Private Subnets (具有公有子网和私有子网的 VPC)**，然后选择 **Select (选择)**。

1. 在 “**步骤 2：包含公有和私有子网的 VPC**” 页面上，将 **IPv4 CIDR 块**和 **IPv6 CIDR 块**保留为默认值。对于 **VPC name (VPC 名称)**，输入一个易于理解的名称。

1. 对于**公有子网的 IPv4 CIDR**，请保留默认值。对于 **Availability Zone (可用区)**，选择一个区域。对于 **Public subnet name (公有子网名称)**，输入一个易于理解的名称。

   如果使用模板，您可以将此子网指定为应用程序负载均衡器的两个子网中的第一个。

   记下该子网的可用区，因为您为私有子网选择相同的可用区，并为另一个公有子网选择不同的可用区。

1. 对于**私有子网的 IPv4 CIDR**，请保留默认值。对于 **Availability Zone (可用区)**，选择与上一步相同的可用区。对于 **Private subnet name (私有子网名称)**，输入一个易于理解的名称。

1. 对于 **Elastic IP Allocation ID (弹性 IP 分配 ID)**，选择您以前创建的弹性 IP 地址。

1. 为其他设置保留默认值。

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

   **以下示例显示了具有公有子网 **EthereumPubSub1 和私有子网 1** 的 **EthereumNetworkV** PC VPC。EthereumPvtSub**公有子网使用 **us-west-2a** 可用区。  
![\[VPC configuration form with public and private subnet details for EthereumVPC.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/VPC.png)

**在其他可用区中创建第二个公有子网。**

1. 选择 **Subnets (子网)**，然后从列表中选择以前创建的公有子网。选择 **Route Table (路由表)** 选项卡，并记下 **Route table (路由表)** ID。您为下面的第二个公有子网指定相同的路由表。

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

1. 对于**名称标签**，输入子网的名称。稍后在该网络中创建堡垒主机时，您将使用该名称。

1. 对于 **VPC**，选择您以前创建的 VPC。

1. 对于 **Availability Zone (可用区)**，选择与第一个公有子网不同的可用区。

1. 对于 **IPv4 CIDR 块**，请输入 **10.** 0.2.0/24。

1. 选择**是，创建**。该子网将添加到子网列表中。

1. 从列表中选择子网后，选择 **Subnet Actions (子网操作)**，然后选择 **Modify auto-assign IP settings (修改自动分配 IP 设置)**。选择 “**自动分配**”、“**保存**” IPs、“**关闭**”。这样，在该子网中创建堡垒主机时，该主机可以获得一个公有 IP 地址。

1. 在 **Route Table (路由表)** 选项卡上，选择 **Edit (编辑)**。对于 **Change to (更改为)**，选择您以前记下的路由表 ID，然后选择 **Save (保存)**。

您现在应该可以看到之前创建的 VPC 的三个子网。记下子网名称， IDs 以便您可以使用模板指定它们。

![\[VPC Dashboard showing three subnets with their IDs, states, and IPv4 CIDR ranges.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/subnets-listing.png)


## 创建安全组
<a name="blockchain-templates-create-security-group"></a>

安全组可充当防火墙，控制资源的入站和出站流量。当您使用模板在 Amazon ECS 集群上创建 Ethererum 网络时，需指定两个安全组：
+ 适用于 EC2 实例的安全组，用于控制集群中 EC2 实例的进出流量
+ Application Load Balancer 的安全组，用于控制应用程序负载均衡器、 EC2 实例和堡垒主机之间的流量。您也将该安全组与堡垒主机相关联。

每个安全组都有允许 Application Load Balancer 与 EC2 实例之间通信的规则以及其他最低规则。这就要求安全组相互引用。因此，您可以首先创建安全组，然后用适当的规则进行更新。

**创建两个安全组**

1. 打开亚马逊 EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择 **Security Groups**（安全组），然后选择 **Create Security Group**（创建安全组）。

1. 在**安全组名称**中，输入一个易于识别且能与其他安全组区分开来的名称，例如*以太坊 EC2-SG 或 Eth *er* eumalb-SG*。稍后会用到这些名称。对于 **Description (描述)**，输入简短摘要。

1. 对于 **VPC**，选择您以前创建的 VPC。

1. 选择**创建**。

1. 重复以上步骤创建其他安全组。

**向 EC2 实例的安全组添加入站规则**

1. 为之前创建的 EC2 实例选择安全组

1. 在 **Inbound (入站)** 选项卡上，选择 **Edit (编辑)**。

1. 对于**类型**，请选择**所有流量**。对于 “**来源**”，选择 “**自定义**”，然后从列表中选择您当前正在编辑的安全组，例如 Ethere *um EC2-SG*。这允许安全组中的 EC2 实例相互通信。

1. 选择**添加规则**。

1. 对于 **Type (类型)**，请选择 **All traffic (所有流量)**。对于 **Source (来源)**，将 **Custom (自定义)** 保持选中状态，然后从列表中选择应用程序负载均衡器的安全组，例如 *EthereumALB-SG*。这允许安全组中的 EC2 实例与 Application Load Balancer 通信。

1. 选择**保存**。

**针对应用程序负载均衡器的安全组添加入站规则并编辑出站规则**

1. 选择您之前创建的应用程序负载均衡器安全组

1. 在 **Inbound (入站)** 选项卡上选择 **Edit (编辑)**，然后添加以下入站规则：

   1. 对于**类型**，请选择**所有流量**。对于 **Source (来源)**，将 **Custom (自定义)** 保持选中状态，然后从列表中选择您当前编辑的安全组，例如 *EthereumALB-SG*。这允许应用程序负载均衡器与自身和堡垒主机进行通信。

   1. 选择**添加规则**。

   1. 对于 **Type (类型)**，请选择 **All traffic (所有流量)**。对于 “**来源**”，选择 “**自定义**”，然后从列表中选择 EC2 实例的安全组，例如 Ethere *um EC2-SG*。这允许安全组中的 EC2 实例与 Application Load Balancer 和堡垒主机通信。

   1. 选择**添加规则**。

   1. 对于 **Type**，选择 **SSH**。对于 **Source (来源)**，选择 **My IP (我的 IP)**，这会检测并输入您的计算机的 IP CIDR。
**重要**  
此规则允许堡垒主机接受来自您计算机的 SSH 流量，从而使您的计算机能够使用堡垒主机查看 Web 界面并连接到以太坊网络上的 EC2 实例。要允许其他计算机连接到 Ethereum 网络，请将其添加为该规则的来源。仅允许到受信任的来源的入站流量。

   1. 选择**保存**。

1. 在 **Outbound (出站)** 选项卡上选择 **Edit (编辑)**，然后删除自动创建的规则以允许到所有 IP 地址的出站流量。

1. 选择**添加规则**。

1. 对于 **Type (类型)**，请选择 **All traffic (所有流量)**。对于 “**目标**”，选择 “**自定义**”，然后从列表中选择 EC2 实例的安全组。这允许从 Application Load Balancer 和堡垒主机到以太坊网络中的 EC2 实例的出站连接。

1. 选择**添加规则**。

1. 对于 **Type (类型)**，请选择 **All traffic (所有流量)**。对于 **Destination (目标)**，将 **Custom (自定义)** 保持选中状态，然后从列表中选择您当前编辑的安全组，例如 *EthereumALB-SG*。这允许应用程序负载均衡器与自身和堡垒主机进行通信。

1. 选择**保存**。

## 为 Amazon ECS 创建 IAM 角色和 EC2 实例配置文件
<a name="blockchain-templates-iam-roles"></a>

使用此模板时，您可以为 Amazon ECS 指定一个 IAM 角色和一个 EC2 实例配置文件。附加到这些角色的权限策略允许您集群中的 AWS 资源和实例与其他 AWS 资源进行交互。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。您可以使用 IAM 控制台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) 为 Amazon ECS 和 EC2 实例配置文件设置 IAM 角色。

**创建适用于 Amazon ECS 的 IAM 角色。**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择 **角色** 和 **创建角色**。

1. 在 **Select type of trusted entity**（选择受信任实体的类型）下，选择 **Amazon Web Services service**（亚马逊云科技服务）。

1. 对于 **Choose the service that will use this role (选择将使用此角色的服务)**，选择 **Elastic Container Service**。

1. 在 **Select your use case (选择您的使用案例)** 下，选择 **Elastic Container Service (弹性容器服务)** 和 **Next:Permissions (下一步: 权限)**。  
![\[AWS console interface for creating a role, with Elastic Container Service selected as the use case.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/ecs-role.png)

1. 对于**权限策略**，保留默认策略 (**Amazon EC2 ContainerServiceRole**) 处于选中状态，然后选择 “**下一步：查看**”。

1. 在**角色名称**中，输入一个可以帮助您识别角色的值，例如*ECSRoleForEthereum*。对于 **Role Description (角色描述)**，输入简短摘要。请记下角色名称，以备后用。

1. 选择**创建角色**。

1. 从列表中选择您刚刚创建的角色。如果您的账户中包含许多角色，则可搜索角色名称。  
![\[AWSIAM console showing a role named "ECSRoleForEtherum" with its description.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/ecs-role-list.png)

1. 复制 **Role ARN (角色 ARN)** 值并保存，以便再次复制。创建 Ethereum 网络时需要此 ARN。  
![\[AWSIAM role summary page showing role ARN, description, and attached policies.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/ecs-role-arn.png)

您在模板中指定的 EC2 实例配置文件由以太坊网络中的 EC2 实例使用，用于与其他 AWS 服务进行交互。您可以为角色创建权限策略，创建角色 (自动创建同名实例配置文件)，然后将权限策略附加到角色。

**创建 EC2 实例配置文件**

1. 在导航窗格中，选择 **Policies**、**Create policy**。

1. 选择 **JSON**，并将默认策略语句替换为以下 JSON 策略：

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecs:CreateCluster",
                   "ecs:DeregisterContainerInstance",
                   "ecs:DiscoverPollEndpoint",
                   "ecs:Poll",
                   "ecs:RegisterContainerInstance",
                   "ecs:StartTelemetrySession",
                   "ecs:Submit*",
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:BatchGetImage",
                   "logs:CreateLogStream",
                   "logs:PutLogEvents",
                   "dynamodb:BatchGetItem",
                   "dynamodb:BatchWriteItem",
                   "dynamodb:PutItem",
                   "dynamodb:DeleteItem",
                   "dynamodb:GetItem",
                   "dynamodb:Scan",
                   "dynamodb:Query",
                   "dynamodb:UpdateItem"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. 选择**查看策略**。

1. 例如，在 “**名称**” 中，输入一个可以帮助您识别此权限策略的值*EthereumPolicyForEC2*。对于 **Description (描述)**，输入简短摘要。选择**创建策略**。  
![\[AWS console showing Create policy page with name, description, and service permissions.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/ec2-perms-policy.png)

1. 依次选择**角色**和**创建角色**。

1. 选择 “**EC2****下一步：权限”**。

1. 例如，在**搜索**字段中，输入您之前创建的权限策略的名称*EthereumPolicyForEC2*。

1. 选中您以前创建的策略的复选标记，然后选择 **Next: Review(下一步: 检查)**。  
![\[AWS console showing Create role page with EthereumPolicyForEC2 policy selected.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/ec2-select-policy.png)

1. 例如，**在角色名称**中，输入一个可以帮助您识别角色的值*EC2RoleForEthereum*。对于 **Role description (角色描述)**，输入简短摘要。选择 **Create role (创建角色)**。

1. 从列表中选择您刚刚创建的角色。如果您的账户具有很多角色，您可以在 **Search (搜索)** 字段中输入角色名称。  
![\[AWSIAM interface showing a role named EC2RoleforEther with associated description and trusted entity.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/ec2-select-role.png)

1. 复制并保存 **Instance Profile ARN (实例配置文件 ARN)** 值，以便您可以再次复制该值。创建 Ethereum 网络时需要此 ARN。  
![\[AWSIAM role summary page showing Role ARN and Instance Profile ARNs fields.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/ec2-role-arn.png)

## 创建堡垒主机
<a name="blockchain-templates-bastion-host"></a>

在本教程中，您创建一个堡垒主机。这是您用来连接以太坊网络中的 Web 界面和实例的实例。 EC2 它的唯一用途是从 VPC 外部的受信任客户端转发 SSH 流量，以便它们可以访问 Ethereum 网络资源。

您可以设置堡垒主机，因为模板创建的应用程序负载均衡器是内部的，这意味着它仅路由内部 IP 地址。堡垒主机：
+ 具有应用程序负载均衡器可识别的内部 IP 地址，因为您在以前创建的第二个公有子网中启动它。
+ 具有子网分配的公有 IP 地址，VPC 外部的受信任来源可以访问该地址。
+ 与您以前创建的应用程序负载均衡器的安全组关联，该安全组具有一个入站规则以允许来自受信任的客户端的 SSH 流量（端口 22）。

要能够访问 Ethereum 网络，需要设置受信任的客户端以通过堡垒主机进行连接。有关更多信息，请参阅 [连接 EthStats 并 EthExplorer 使用堡垒主机](blockchain-bastion-host-connect.md)。堡垒主机只是一种方法。您可以使用从受信任的客户端访问 VPC 中的私有资源的任何方法。

**创建堡垒主机**

1. 按照《*Amazon EC2 用户指南》*中的前五个步骤[启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance)。

1. 选择 **Edit Instance Details**。对于 **Network (网络)**，选择您以前创建的 VPC；对于 **Subnet (子网)**，选择您以前创建的第二个公有子网。将所有其他设置保留默认值。

1. 在出现提示时确认更改，然后选择 **Review and Launch (检查并启动)**。

1. 选择 **Edit Security Groups (编辑安全组)**。对于**分配安全组**，选择**选择现有安全组**。

1. 从安全组列表中，为您以前创建的应用程序负载均衡器选择安全组，然后选择 **Review and Launch (检查并启动)**。

1. 选择**启动**。

1. 记下实例 ID。稍后在[连接 EthStats 并 EthExplorer 使用堡垒主机](blockchain-bastion-host-connect.md)时，您需要使用该 ID。  
![\[Green checkmark indicating successful instance launch with partially obscured instance ID.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/bastion-instance.png)

# 创建 Ethereum 网络
<a name="blockchain-templates-create-stack"></a>

您使用本主题中的模板指定的以太坊网络会启动一个 CloudFormation 堆栈，该堆栈用于为以太坊网络创建 Amazon ECS EC2 实例集群。该模板依赖于您以前在[设置先决条件](blockchain-template-getting-started-prerequisites.md)中创建的资源。

当您使用模板启动 CloudFormation 堆栈时，它会为某些任务创建嵌套堆栈。完成后，您可以通过堡垒主机连接到网络的应用程序负载均衡器提供的资源，以验证 Ethereum 网络是否正在运行并且可访问。

**使用适用于 Ethereum 的 Amazon Web Services Blockchain Templates 创建 Ethereum 网络**

1. 请参阅 [AWS Blockchain Templates 入门](https://aws.amazon.com/blockchain/templates/getting-started/)，并使用您的 AWS 区域的快速链接在 CloudFormation 控制台中打开适用于以太坊的最新 AWS 区块链模板。

1. 根据以下准则输入值：
   + 对于 **Stack name (堆栈名称)**，输入一个易于识别的名称。此名称用于堆栈创建的资源名称中。
   + 在 **Ethereum Network Parameters (Ethereum 网络参数)** 和 **Private Ethereum Network Parameters (私有 Ethereum 网络参数)** 下面，保留默认设置。
**警告**  
仅出于测试目的使用默认账户和关联的助记词。请勿使用默认账户集发送真实的 Ether，因为任何有权访问助记词的人都可以从账户中访问或窃取 Ether。相反，应出于生产目的指定自定义账户。与默认账户关联的助记词为 `outdoor father modify clever trophy abandon vital feel portion grit evolve twist`。
   + 在**平台配置**下，保留默认设置，这将创建一个 Amazon ECS EC2 实例集群。另一种选择，**docker-local** 使用单个实例创建以太坊网络。 EC2 
   + 在 “**EC2 配置**” 下，根据以下准则选择选项：
     + 在 “**EC2 密钥对**” 中，选择一个密钥对。有关创建密钥对的信息，请参阅 [创建密钥对](blockchain-templates-setting-up.md#blockchain-templates-create-a-key-pair)。
     + 对于**EC2 安全组**，请选择您之前在中创建的安全组[创建安全组](blockchain-template-getting-started-prerequisites.md#blockchain-templates-create-security-group)。
     + 对于**EC2 实例配置文件 ARN**，请输入您之前在中创建的实例配置文件的 ARN。[为 Amazon ECS 创建 IAM 角色和 EC2 实例配置文件](blockchain-template-getting-started-prerequisites.md#blockchain-templates-iam-roles)
   + 在 **VPC network configuration (VPC 网络配置)** 下面，根据以下准则选择选项：
     + 对于 **VPC ID**，选择您以前在[创建 VPC 和子网](blockchain-template-getting-started-prerequisites.md#blockchain-templates-create-a-vpc)中创建的 VPC。
     + 对于**以太坊网络子网 IDs**，请选择您在前面步骤中创建的单个私有子网[To create the VPC](blockchain-template-getting-started-prerequisites.md#create-vpc-procedure)。
   + 在 **ECS cluster configuration (ECS 集群配置)** 下面，保留默认值。这将创建一个由三个 EC2 实例组成的 ECS 集群。
   + 在 **Application Load Balancer configuration (ECS only) (应用程序负载均衡器配置 (仅 ECS))** 下面，根据以下准则选择选项：
     + 对于 **Application Load Balancer 子 IDs**网，请从您之前提到[list of subnets](blockchain-template-getting-started-prerequisites.md#list-of-subnets)的中选择两个公有子网。
     + 对于 **Application Load Balancer Security Group (应用程序负载均衡器安全组)**，选择您以前在[创建安全组](blockchain-template-getting-started-prerequisites.md#blockchain-templates-create-security-group)中创建的应用程序负载均衡器的安全组。
     + 对于 **IAM 角色**，输入您以前在[为 Amazon ECS 创建 IAM 角色和 EC2 实例配置文件](blockchain-template-getting-started-prerequisites.md#blockchain-templates-iam-roles)中创建的 ECS 角色的 ARN。
   + 在下方 **EthStats**，根据以下准则选择选项：
     + 对于 **Deploy EthStats**，保留默认设置，该设置为 *true*。
     + 对于 “**EthStats 连接密钥**”，键入一个至少为六个字符的任意值。
   + 在下方 **EthExplorer**，保留 “部**署**” 的默认设置 EthExplorer，该设置为 *true*。
   + 在 **Other parameters (其他参数)** 下面，保留 **Nested Template S3 URL Prefix (嵌套模板 S3 URL 前缀)** 的默认值并记下该值。您可以在此处找到嵌套模板。

1. 将所有其他设置保留为默认值，选中确认复选框，然后选择 **Create (创建)**。

   将显示 CloudFormation 启动的根堆栈的堆栈**详细信息**页面。

1. 要监控根堆栈和嵌套堆栈的进度，请选择 **Stacks (堆栈)**。  
![\[CloudFormation interface showing Stacks option highlighted in the navigation menu.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/choose-stacks.png)

1. 当所有堆栈的**状态**显示**CREATE\$1COMPLETE**时，您可以连接到 Ethereum 用户界面，以验证网络是否正在运行且可以访问。当您使用 ECS 容器平台时， URLs 根堆栈的 “**输出**” 选项卡上可以通过 Application Load Balancer 连接到 EthExplorer、和 EthJson RPC。 EthStats
**重要**  
在通过客户端计算机上的堡垒主机设置代理连接之前，您将无法直接连接到这些服务器 URLs 或直接连接 SSH。有关更多信息，请参阅 [连接 EthStats 并 EthExplorer 使用堡垒主机](blockchain-bastion-host-connect.md)。  
![\[CloudFormation console showing Ethereum network stack details and output URLs.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/stack-urls.png)

# 连接 EthStats 并 EthExplorer 使用堡垒主机
<a name="blockchain-bastion-host-connect"></a>

要连接到本教程中的 Ethereum 资源，您可以通过堡垒主机设置 SSH 端口转发（SSH 隧道）。以下说明演示了如何执行此操作，以便您可以连接 EthStats 和 EthExplorer URLs 使用浏览器。在下面的说明中，您先在本地端口上设置 SOCKS 代理。然后，您可以使用浏览器扩展程序将此转发端口用于您的以太坊网络 URLs。[FoxyProxy](https://getfoxyproxy.org/)

如果使用 Mac OS 或 Linux，请使用 SSH 客户端设置到堡垒主机的 SOCKS 代理连接。如果您是 Windows 用户，请使用 PuTTY。在连接之前，请确认在您以前设置的应用程序负载均衡器的安全组中将您使用的客户端计算机指定为入站 SSH 流量的允许来源。

**使用 SSH 连接到具有 SSH 端口转发的堡垒主机**
+ 按照《*亚马逊 EC2 用户指南*》中[使用 SSH 连接您的 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)中的步骤进行操作。对于[连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html#AccessingInstancesLinuxSSHClient)过程的步骤 4，将 添加到 SSH 命令中，指定 Ethereum 的 AWS Blockchain Template 配置中指定的相同密钥对，然后指定堡垒主机的 DNS 名称。

  ```
  ssh -i /path/my-template-key-pair.pem ec2-user@bastion-host-dns -D 9001
  ```

**使用 PuTTY 连接到具有 SSH 端口转发的堡垒主机 (Windows)**

1. 使用[您在以太坊的 AWS 区块链模板配置中指定的密钥对，按照*亚马逊 EC2 用户指南*中使用 PuTTY 从 Windows 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)[中的步骤，直到启动 PuTTY 会话](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html#putty-ssh)过程的第 7 步。

1. 在 PuTTY 中，在 **Category (类别)** 下面选择 **Connection (连接)**、**SSH** 和 **Tunnels (隧道)**。

1. 对于 **Port forwarding (端口转发)**，选择 **Local ports accept connections from other hosts (本地端口接受来自其他主机的连接)**。

1. 在 **Add new forwarded port (添加新的转发端口)** 下面：

   1. 对于 **Source port (源端口)**，输入 **9001**。这是我们选择的任意未使用的端口，如有必要，您可以选择其他端口。

   1. 将 **Destination (目标)** 保留空白。

   1. 选择 **Dynamic (动态)**。

   1. 选择**添加**。

   对于 **Forwarded ports (转发的端口)**，**D9001** 应如下所示。  
![\[PuTTY Configuration window showing SSH port forwarding options with D9001 listed.\]](http://docs.aws.amazon.com/zh_cn/blockchain-templates/latest/developerguide/images/putty.png)

1. 选择 **Open (打开)**，然后根据密钥配置要求在堡垒主机中进行身份验证。将连接保持打开状态。

打开 Putty 连接后，您现在将系统或浏览器扩展程序配置为使用以太坊网络的转发端口。 URLs以下说明基于使用 FoxyProxy 标准转发连接，基于和和的 URL 模式 EthStats EthExplorer 和端口 9001（您之前将其设置为转发端口），但您可以使用任何您喜欢的方法。

**配置为使用 FoxyProxy 以太坊网络的 SSH 隧道 URLs**

该过程是根据 Chrome 编写的。如果您使用其他浏览器，请将设置和顺序转换为该浏览 FoxyProxy 器的版本。

1. 下载并安装 FoxyProxy 标准浏览器扩展程序，然后根据浏览器的说明打开**选项**。

1. 选择 **Add New Proxy (添加新代理)**。

1. 在 **General (常规)** 选项卡上，确保 **Enabled (已启用)** 代理，并输入 **Proxy Name (代理名称)** 和 **Proxy Notes (代理注释)** 以帮助您标识该代理配置。

1. 在 **Proxy Details (代理详细信息)** 选项卡上，选择 **Manual Proxy Configuration (手动代理配置)**。对于 **Host or IP Address (主机或 IP 地址)**（在某些版本中为 **Server or IP Address (服务器或 IP 地址)**），输入 *localhost*。对于 **Port (端口)**，输入 *9001*。选择 **SOCKS Proxy? (SOCKS 代理?)**。

1. 在 **URL Pattern (URL 模式)** 选项卡上，选择 **Add New Pattern (添加新模式)**。

1. 在 “**模式名称**” 中，输入一个易于识别的名称；对于 **URL 模式**，输入与 URLs 您使用模板创建的所有以太坊资源相匹配的模式，例如 **http://internal-MyUser-loadb-\$1**。有关查看的信息 URLs，请参阅[Ethereum URLs](blockchain-templates-create-stack.md#ethereum-urls)。

1. 将其他设置保留默认选项，然后选择 **Save (保存)**。

现在，您可以使用使用模板创建的根堆栈的 Outputs 选项卡**连接到**以太坊 URLs，该选项卡可在 CloudFormation 控制台上使用。

# 清理资源
<a name="blockchain-templates-cleanup"></a>

CloudFormation 便于清理堆栈创建的资源。删除堆栈后，堆栈创建的所有资源都会被删除。

**删除模板创建的资源**
+ 打开 CloudFormation 控制台，选择之前创建的根堆栈，选择**操作**，**删除**。

  您以前创建的根堆栈和关联的嵌套堆栈的 **Status (状态)** 更新为 **DELETE\$1IN\$1PROGRESS**。

可以选择删除您为 Ethereum 网络创建的先决条件。

**删除 VPC**
+ 打开 Amazon VPC 控制台，选择您之前创建的 VPC，然后选择**操作**、**删除 VPC**。这也将删除与该 VPC 关联的子网、安全组和 NAT 网关。

**删除 IAM 角色和 EC2 实例配置文件**
+ 打开 IAM 控制台，选择**角色**。选择 ECS 的角色和之前为 EC2 其创建的角色，然后选择**删除**。

**终止堡垒主机的 EC2 实例**
+ 打开 Amazon EC2 控制面板，选择**正在运行的实** EC2 例，选择您为堡垒主机创建的实例，然后选择**操作**、**实例状态**、**终止**。