

AWS 區塊鏈範本已於 2019 年 4 月 30 日終止。不會進一步更新此服務或此支援文件。為了獲得最佳的受管區塊鏈體驗 AWS，我們建議您使用 [ Amazon Managed Blockchain (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 客戶團隊。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS 區塊鏈範本入門
<a name="blockchain-templates-getting-started"></a>

本教學課程示範如何使用適用於 Ethereum 的 AWS 區塊鏈範本， AWS 透過 建立私有區塊鏈網路 CloudFormation。您建立的網路有兩個 Ethereum 用戶端和一個在 Amazon ECS 叢集中的 Amazon EC2 執行個體上執行的礦工。Amazon ECS 會在從 Amazon ECR 提取的 Docker 容器中執行這些服務。在開始本教學課程之前，了解區塊鏈網路和涉及 AWS 的服務會很有幫助，但並非必要。

此教學課程假設您已設定[設定 AWS 區塊鏈範本](blockchain-templates-setting-up.md)中涵蓋的一般先決條件。此外，在使用範本之前，您必須設定一些 AWS 資源，例如 Amazon VPC 網路和 IAM 角色的特定許可。

教學課程會示範如何設定這些先決條件。我們已進行好設定選項，但並非規定性。只要您滿足先決條件，就可以根據應用程式和環境的需求進行其他組態選擇。如需每個範本的功能和一般先決條件的詳細資訊，以及下載範本或直接在 CloudFormation啟動範本，請參閱 [AWS 區塊鏈範本和功能](blockchain-template-features.md)。

在本教學課程中，範例使用美國西部 （奧勒岡） 區域 (us-west-2)，但您可以使用支援 AWS 區塊鏈範本的任何區域：
+ 美國西部 (奧勒岡) 區域 (us-west-2)
+ 美國東部 (維吉尼亞北部) 區域 (us-east-1)
+ 美國東部 (俄亥俄) 區域 (us-east-2)

**注意**  
在上面未列出的區域中執行範本會在美國東部 （維吉尼亞北部） 區域 (us-east-1) 啟動資源。

您使用此教學課程設定的適用於 Ethereum 的 AWS Blockchain 範本會建立下列資源：
+ 您指定的隨需 EC2 執行個體類型和數量。此教學課程使用預設的 t2.medium 執行個體類型。
+ 內部 Application Load Balancer。

在本教學課程中，會提供清除您所建立資源的步驟。

**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 範本需要您執行下列動作：
+ [建立 VPC 和子網路](#blockchain-templates-create-a-vpc)
+ [建立安全群組](#blockchain-templates-create-security-group)
+ [為 Amazon ECS 和 EC2 執行個體設定檔建立 IAM 角色](#blockchain-templates-iam-roles)
+ [建立堡壘主機](#blockchain-templates-bastion-host)

## 建立 VPC 和子網路
<a name="blockchain-templates-create-a-vpc"></a>

適用於 Ethereum 的 AWS 區塊鏈範本會將資源啟動至您使用 Amazon Virtual Private Cloud (Amazon VPC) 定義的虛擬網路。您在本教學中指定的組態會建立 Application Load Balancer，需要兩個在不同可用區域的公有子網路。此外，需要適用於容器執行個體的私有子網路，而且子網路必須與 Application Load Balancer 位於相同的可用區域。首先，使用 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. 選擇 **Elastic IPs (彈性 IP)**、**Allocate new address (配置新地址)**、**Allocate (配置)**。

1. 記下您建立的彈性 IP 地址，並選擇 **Close (關閉)**。

1. 在彈性 IP 地址的清單中，尋找稍早建立之彈性 IP 地址的 **Allocation ID (配置 ID)**。當您建立 VPC 時需用到此項。

**若要建立 VPC**

1. 從導覽列中，為 VPC 選取區域。VPC 是專屬於特定區域，因此請選擇您建立金鑰對以及啟動 Ethereum 堆疊的同一個區域。如需詳細資訊，請參閱[建立金鑰對](blockchain-templates-setting-up.md#blockchain-templates-create-a-key-pair)。

1. 在 VPC 儀表板上，選擇 **Start VPC Wizard** (啟動 VPC 精靈)。

1. 在 **Step 1: Select a VPC Configuration (步驟 1：選取 VPC 組態)** 頁面，依序選擇 **VPC with Public and Private Subnets (含公有和私有子網路的 VPC)**、**Select (選取)**。

1. 在 **Step 2: VPC with Public and Private Subnets (步驟 2：含公有和私有子網路的 VPC)** 頁面，保留 **IPv4 CIDR block (IPv4 CIDR 區塊)** 和 **IPv6 CIDR block (IPv6 CIDR 區塊)** 的預設值。對於 **VPC name (VPC 名稱)**，輸入易記的名稱。

1. 對於 **Public subnet's IPv4 CIDR (公有子網路的 IPv4 CIDR)**，保留預設值。對於 **Availability Zone (可用區域)**，選擇區域。對於 **Public subnet name (公有子網路名稱)**，輸入易記的名稱。

   當您使用範本時，會將這個子網路指定為 Application Load Balancer 的兩個子網中的第一個。

   請記下此子網路的可用區域，因為您為私有子網路選取相同的可用區域，並為另一個公有子網路選取不同的可用區域。

1. 對於 **Private subnet's IPv4 CIDR (私有子網路的 IPv4 CIDR)**，保留預設值。對於 **Availability Zone (可用區域)**，選取與上一個步驟相同的可用區域。對於 **Private subnet name (私有子網路名稱)**，輸入易記的名稱。

1. 對於 **Elastic IP Allocation ID (彈性 IP 配置 ID)**，選取稍早建立的彈性 IP 地址。

1. 保留其他設定的預設值。

1. 選擇**建立 VPC**。

   以下範例顯示一個 VPC **EthereumNetworkVPC** 搭配公有子網路 **EthereumPubSub1** 和私有子網路 **EthereumPvtSub1**。公有子網路使用可用區域 **us-west-2a**。  
![\[VPC configuration form with public and private subnet details for EthereumVPC.\]](http://docs.aws.amazon.com/zh_tw/blockchain-templates/latest/developerguide/images/VPC.png)

**若要在不同的可用區域建立第二個公有子網路**

1. 選擇 **Subnets (子網路)**，然後從清單中選取稍早建立的公有子網路。選取 **Route Table (路由表)** 標籤，並記下 **Route table (路由表)** ID。為下列第二個公有子網路指定相同的路由表。

1. 選擇 **Create Subnet (建立子網路)**。

1. 對於 **Name tag (名稱標籤)**，輸入子網路的名稱。您稍後在該網路中建立堡壘主機時，會使用此名稱。

1. 對於 **VPC**，選取稍早建立的 VPC。

1. 對於 **Availability Zone (可用區域)**，選取與第一個公有子網路所選區域不同的區域。

1. 對於 **IPv4 CIDR block (IPv4 CIDR 區塊)**，輸入 **10.0.2.0/24**。

1. 選擇 **Yes, Create** (是，建立)。子網路隨即新增至子網路清單中。

1. 從清單選取子網路，然後選擇 **Subnet Actions (子網路動作)**、**Modify auto-assign IP settings (修改自動指派 IP 設定)**。選取 **Auto-assign IPs (自動指派 IP)**、**Save (儲存)**、**Close (關閉)**。這樣可讓您在子網路中建立堡壘主機時，使其取得公有 IP 地址。

1. 在 **Route Table (路由表)** 標籤中，選擇 **Edit (編輯)**。對於 **Change to (變更為)**，選取您稍早記下的路由表 ID，並選擇 **Save (儲存)**。

您現在應該會看到您先前建立之 VPC 的三個子網路。請記下這些子網路名稱和 ID，以便可以使用範本來指定它們。

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


## 建立安全群組
<a name="blockchain-templates-create-security-group"></a>

安全群組可以做為防火牆，控制對資源的傳入和傳出流量。當您使用 範本在 Amazon ECS 叢集上建立 Ethererum 網路時，您可以指定兩個安全群組：
+ 適用於 EC2 執行個體的安全群組，用以控制叢集中往返 EC2 執行個體的流量
+ Application Load Balancer 的安全群組，可控制 Application Load Balancer、EC2 執行個體和堡壘主機之間的流量。您也可以將此安全群組與堡壘主機建立關聯。

每個安全群組具備允許 Application Load Balancer 和 EC2 執行個體之間通訊的規則，以及其他最低規則。這需要安全群組參考其他安全群組。因此，您需先建立安全群組，然後根據適當的規則更新它們。

**若要建立兩個安全群組**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Security Groups** (安全群組)、**Create Security Group** (建立安全群組)。

1. 在 **Security group name (安全群組名稱)** 中，為安全群組輸入易於識別並可彼此區別的名稱，例如 *EthereumEC2-SG* 或 *EthereumALB-SG*。您稍後會用到這些名稱。對於 **Description (描述)**，輸入簡短摘要。

1. 對於 **VPC**，選取稍早建立的 VPC。

1. 選擇**建立**。

1. 重複上述步驟來建立其他的安全群組。

**為 EC2 執行個體新增安全群組的傳入規則**

1. 選取您稍早為 EC2 執行個體建立的安全群組

1. 在 **Inbound (傳入)** 標籤上，選擇 **Edit (編輯)**。

1. 針對**類型**，選擇**所有流量**。對於 **Source (來源)**，將 **Custom (自訂)** 保持選取狀態，然後從清單中選擇您目前正在編輯的安全群組，例如 *EthereumEC2-SG*。這可讓安全群組中的 EC2 執行個體彼此通訊。

1. 選擇 **Add Rule** (新增規則)。

1. 針對**類型**，選擇**所有流量**。對於 **Source (來源)**，將 **Custom (自訂)** 保持選取狀態，然後從清單中選擇 Application Load Balancer 的安全群組，例如 *EthereumALB-SG*。這可讓安全群組中的 EC2 執行個體與 Application Load Balancer 通訊。

1. 選擇**儲存**。

**為 Application Load Balancer 的安全群組新增傳入規則和編輯傳出規則**

1. 選取您稍早為 Application Load Balancer 建立的安全群組

1. 在 **Inbound (傳入)** 標籤上，選擇 **Edit (編輯)**，然後新增以下傳入規則：

   1. 針對**類型**，選擇**所有流量**。對於 **Source (來源)**，將 **Custom (自訂)** 保持選取狀態，然後從清單中選擇您目前正在編輯的安全群組，例如 *EthereumALB-SG*。這可讓 Application Load Balancer 與本身和堡壘主機通訊。

   1. 選擇 **Add Rule** (新增規則)。

   1. 針對**類型**，選擇**所有流量**。對於 **Source (來源)**，將 **Custom (自訂)** 保持選取狀態，然後從清單中選擇 EC2 執行個體的安全群組，例如 *EthereumEC2-SG*。這可讓安全群組中的 EC2 執行個體與 Application Load Balancer 和堡壘主機通訊。

   1. 選擇 **Add Rule** (新增規則)。

   1. 針對 **Type** (類型)，選擇 **SSH**。對於 **Source (來源)**，選取 **My IP (我的 IP)**，這會偵測到您電腦的 IP CIDR，並進入其中。
**重要**  
此規則允許堡壘主機接受來自您電腦的 SSH 流量，讓您的電腦能夠使用堡壘主機檢視 Web 界面，並連線到 Ethereum 網路上的 EC2 執行個體。若要允許其他人連線到 Ethereum 網路，請將他們新增為此規則的來源。僅允許傳入流量流向受信任的來源。

   1. 選擇**儲存**。

1. 在 **Outbound (傳出)** 標籤上，選擇 **Edit (編輯)**，然後刪除允許傳出流量至所有 IP 地址的自動建立規則。

1. 選擇 **Add Rule** (新增規則)。

1. 針對**類型**，選擇**所有流量**。對於 **Destination (目的地)**，將 **Custom (自訂)** 保持選取狀態，然後從清單中選擇 EC2 執行個體的安全群組。這會允許來自 Application Load Balancer 和堡壘主機前往 Ethereum 網路中 EC2 執行個體的傳出連線。

1. 選擇 **Add Rule** (新增規則)。

1. 針對**類型**，選擇**所有流量**。對於 **Destination (目的地)**，將 **Custom (自訂)** 保持選取狀態，然後從清單中選擇您目前正在編輯的安全群組，例如 *EthereumALB-SG*。這可讓 Application Load Balancer 與本身和堡壘主機通訊。

1. 選擇**儲存**。

## 為 Amazon ECS 和 EC2 執行個體設定檔建立 IAM 角色
<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 (選擇信任的實體類型)** 下，選擇 **AWS service (AWS 服務)**。

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_tw/blockchain-templates/latest/developerguide/images/ecs-role.png)

1. 維持選取 **Permissions policy (許可政策)** 中的預設政策 (**AmazonEC2ContainerServiceRole**)，然後選擇 **Next:Review (下一步：檢閱)**。

1. 在 **Role name (角色名稱)** 中輸入可協助您識別此角色的值，例如 *ECSRoleForEthereum*。在 **Role Description (角色描述)** 中輸入簡短摘要。請記下稍後的角色名稱。

1. 選擇建**立角色**。

1. 從清單中選擇您剛剛建立的角色。如果您的帳戶有許多角色，您可以搜尋角色名稱。  
![\[AWSIAM console showing a role named "ECSRoleForEtherum" with its description.\]](http://docs.aws.amazon.com/zh_tw/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_tw/blockchain-templates/latest/developerguide/images/ecs-role-arn.png)

您在範本中指定的 EC2 執行個體描述檔由 Ethereum 網路中的 EC2 執行個體擔任，以與其他 AWS 服務互動。您為角色建立許可政策、建立該角色 (這會自動建立相同名稱的執行個體描述檔)，然後將許可政策連接至角色。

**若要建立 EC2 執行個體描述檔**

1. 在導覽窗格中，選擇**政策**、**建立政策**。

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. 對於 **Name (名稱)**，輸入可協助您識別此許可政策的值，例如 *EthereumPolicyForEC2*。對於 **Description (描述)**，輸入簡短摘要。選擇**建立政策**。  
![\[AWS console showing Create policy page with name, description, and service permissions.\]](http://docs.aws.amazon.com/zh_tw/blockchain-templates/latest/developerguide/images/ec2-perms-policy.png)

1. 選擇 **Roles (角色)**、**Create role (建立角色)**。

1. 選擇 **EC2**、**Next: Permissions (下一步：許可)**。

1. 在 **Search (搜尋)** 欄位中，輸入您稍早建立的許可政策名稱，例如 *EthereumPolicyForEC2*。

1. 選取您稍早建立之政策的核取記號，然後選擇 **Next: Review (下一步：檢閱)**。  
![\[AWS console showing Create role page with EthereumPolicyForEC2 policy selected.\]](http://docs.aws.amazon.com/zh_tw/blockchain-templates/latest/developerguide/images/ec2-select-policy.png)

1. 對於 **Role name (角色名稱)**，輸入可協助您識別此角色的值，例如 *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_tw/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_tw/blockchain-templates/latest/developerguide/images/ec2-role-arn.png)

## 建立堡壘主機
<a name="blockchain-templates-bastion-host"></a>

在此教學中，您會建立堡壘主機。這是 EC2 執行個體，您可用來連線至 Ethereum 網路中的 Web 介面和執行個體。其唯一目的是轉送來自 VPC 外部之受信任用戶端的 SSH 流量，以便其可以存取 Ethereum 網路資源。

您設定堡壘主機是因為範本建立的 Application Load Balancer 是內部的，表示它僅路由內部 IP 地址。堡壘主機：
+ 具有 Application Load Balancer 可辨識的內部 IP 地址，因為您在稍早建立的第二個公有子網路中啟動該地址。
+ 具有子網路指派的公有 IP 地址，VPC 外部受信任的來源可存取該位址。
+ 與您先前建立之 Application Load Balancer 的安全群組相關聯，該群組具有允許來自受信任用戶端之 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. 選擇**邊值執行個體詳細資訊**。對於 **Network (網路)**，選擇您稍早建立的 VPC，對於 **Subnet (子網路)**，選取您稍早建立的第二個公有子網路。將所有其他設定保持為預設值。

1. 出現提示時確認變更，然後選擇 **Review and Launch (檢閱和啟動)**。

1. 選擇 **Edit Security Groups (編輯安全群組)**。在 **Assign a security group (指派安全群組)** 中，選擇 **Select an existing security group (選取現有的安全群組)**。

1. 從安全群組的清單中，選取您稍早建立之 Application Load Balancer 的安全群組，然後選擇 **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_tw/blockchain-templates/latest/developerguide/images/bastion-instance.png)

# 建立 Ethereum 網路
<a name="blockchain-templates-create-stack"></a>

您在本主題中使用 範本指定的 Ethereum 網路會啟動 CloudFormation 堆疊，為 Ethereum 網路建立 EC2 執行個體的 Amazon ECS 叢集。範本需倚賴您稍早在[設定先決條件](blockchain-template-getting-started-prerequisites.md) 中建立的資源。

當您使用 範本啟動 CloudFormation 堆疊時，它會為某些任務建立巢狀堆疊。上述工作完成後，您可以透過堡壘主機連線到網路的 Application Load Balancer 提供的資源，確認您的 Ethereum 網路可以執行並可供存取。

**使用適用於 Ethereum 的 AWS 區塊鏈範本建立 Ethereum 網路**

1. 請參閱 [AWS 區塊鏈範本入門](https://aws.amazon.com/blockchain/templates/getting-started/)，並使用您 AWS 區域的快速連結，在 CloudFormation 主控台中開啟適用於 Ethereum 的最新 AWS 區塊鏈範本。

1. 根據下列指導方針輸入值：
   + 對於 **Stack name (堆疊名稱)**，輸入您可輕鬆識別的名稱。這個名稱將用於堆疊建立的資源名稱中。
   + 在 **Ethereum Network Parameters (Ethereum 網路參數)** 和 **Private Ethereum Network Parameters (私有 Ethereum 網路參數)** 下，保留預設設定。
**警告**  
預設帳戶和相關聯的助憶鍵片語僅供測試之用。不要使用預設的一組帳戶傳送發送真實的 Ether，因為可存取助憶鍵片語的任何人都能存取或 Ether 或從帳戶竊取 Ether。相反地，為了生產目的才指定自訂帳戶。與預設帳戶相關聯的助憶鍵片語是 `outdoor father modify clever trophy abandon vital feel portion grit evolve twist`。
   + 在**平台組態**下，保留預設設定，這會建立 EC2 執行個體的 Amazon ECS 叢集。另一個方法 **docker-local**，則會使用單一 EC2 執行個體建立 Ethereum 網路。
   + 在 **EC2 configuration (EC2 組態)** 下，根據下列指導方針選取選項：
     + 對於 **EC2 Key Pair (EC2 金鑰對)**，選取金鑰對。如需建立金鑰對的相關資訊，請參閱[建立金鑰對](blockchain-templates-setting-up.md#blockchain-templates-create-a-key-pair)。
     + 對於 **EC2 Security Group (EC2 安全群組)**，選取您稍早在[建立安全群組](blockchain-template-getting-started-prerequisites.md#blockchain-templates-create-security-group) 中建立的安全群組。
     + 對於 **EC2 Instance Profile ARN (EC2 執行個體描述檔 ARN)**，輸入您稍早在[為 Amazon ECS 和 EC2 執行個體設定檔建立 IAM 角色](blockchain-template-getting-started-prerequisites.md#blockchain-templates-iam-roles) 中建立的執行個體描述檔 ARN。
   + 在 **VPC network configuration (VPC 網路組態)** 下，根據下列指導方針選取選項：
     + 對於 **VPC ID**，選取您稍早在[建立 VPC 和子網路](blockchain-template-getting-started-prerequisites.md#blockchain-templates-create-a-vpc) 中建立的 VPC。
     + 對於 **Ethereum Network Subnet IDs (Ethereum 網路子網路 ID)**，選取您稍早在[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) (Application Load Balancer 組態 (僅限 ECS))**，根據下列指導方針選取選項：
     + 對於 **Application Load Balancer Subnet IDs (Application Load Balancer 子網路 ID)**，從您稍早記下的[list of subnets](blockchain-template-getting-started-prerequisites.md#list-of-subnets) 中，選取兩個公有子網路。
     + 對於 **Application Load Balancer Security Group (Application Load Balancer 安全群組)**，選取您稍早在[建立安全群組](blockchain-template-getting-started-prerequisites.md#blockchain-templates-create-security-group) 中建立的 Application Load Balancer 安全群組。
     + 針對 **IAM 角色**，輸入您先前在 中建立之 ECS 角色的 ARN[為 Amazon ECS 和 EC2 執行個體設定檔建立 IAM 角色](blockchain-template-getting-started-prerequisites.md#blockchain-templates-iam-roles)。
   + 在 **EthStats** 下，根據下列指導方針選取選項：
     + 對於 **Deploy EthStats (部署 EthStats)**，保留預設設定，也就是 *true*。
     + 對於 **EthStats Connection Secret (EthStats 連線密碼)**，輸入至少六個字元的任意值。
   + 在 **EthExplorer** 下，為 **Deploy 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_tw/blockchain-templates/latest/developerguide/images/choose-stacks.png)

1. 當所有堆疊顯示 **CREATE\$1COMPLETE** for **Status** 時，您可以連線至 Ethereum 使用者介面，以確認網路正在執行並可存取。使用 ECS 容器平台時，透過 Application Load Balancer 連線到 EthStats、EthExplorer 和 EthJsonRPC 的 URL 會顯示在根堆疊的 **Outputs (輸出)** 標籤中。
**重要**  
在透過用戶端電腦上的堡壘主機設定代理連線之前，您無法直接連線至這些 URL 或 SSH。如需詳細資訊，請參閱[使用堡壘主機連線到 EthStats 和 EthExplorer](blockchain-bastion-host-connect.md)。  
![\[CloudFormation console showing Ethereum network stack details and output URLs.\]](http://docs.aws.amazon.com/zh_tw/blockchain-templates/latest/developerguide/images/stack-urls.png)

# 使用堡壘主機連線到 EthStats 和 EthExplorer
<a name="blockchain-bastion-host-connect"></a>

若要在本教學中連線到 Ethereum 資源，您可以透過堡壘主機設定 SSH 連接埠轉送 (SSH 通道)。下列指示示範如何執行這項操作，以便您可以使用瀏覽器連線到 ETStats 和 ETExplorer URL。在下列說明中，先在本機連接埠上設定 SOCKS 代理。然後，使用瀏覽器延伸 [FoxyProxy](https://getfoxyproxy.org/)，為您的 Ethereum 網路 URL 使用此轉送連接埠。

如果您使用 Mac OS 或 Linux，請使用 SSH 用戶端來設定與堡壘主機的 SOCKS 代理連線。如果您是 Windows 使用者，請使用 PuTTY。連線之前，請確認您正在使用的用戶端電腦在您之前為 Application Load Balancer 設定的安全群組中，指定為傳入 SSH 流量的允許來源。

**使用 SSH 透過 SSH 連接埠轉送連線到堡壘主機**
+ 請遵循《*Amazon 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，將 `-D 9001`新增至 SSH 命令，指定您在 Ethereum 組態的 AWS 區塊鏈範本中指定的相同金鑰對，並指定堡壘主機的 DNS 名稱。

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

**使用 PuTTY 透過 SSH 連接埠轉送連線到堡壘主機 (Windows)**

1. 遵循《*Amazon 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，使用您在適用於 Ethereum 的 AWS 區塊鏈範本組態中指定的相同金鑰對。

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_tw/blockchain-templates/latest/developerguide/images/putty.png)

1. 選擇 **Open (開啟)**，然後根據您的金鑰組態向堡壘主機進行身分驗證。保持連線開啟。

PuTTY 連線開啟後，您現在可以設定系統或瀏覽器延伸，以將轉送的連接埠用於 Ethereum 網路 URL。下列說明的基礎是根據您先前建立為轉送連接埠的 EthStats 和 EthExplorer 的 URL 模式和連接埠 9001，使用 FoxyProxy Standard 來轉送連線，但您可以使用任何偏好的方法。

**將 FoxyProxy 設為使用 Ethereum 網路 URL 的 SSH 通道**

此程序是以 Chrome 為基礎編寫的。如果您使用其他瀏覽器，請將設定和順序轉換為該瀏覽器的 FoxProxy 版本。

1. 下載並安裝 FoxyProxy Standard 瀏覽器延伸，然後根據瀏覽器的指示，開啟 **Options (選項)**。

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. 對於 **Pattern name (模式名稱)**，輸入容易識別的名稱，對於 **URL Pattern (URL 模式)**，輸入與您使用範本建立之所有 Ethereum 資源 URL 相符的模式，例如 **http://internal-MyUser-LoadB-\$1**。如需有關檢視 URL 的資訊，請參閱 [Ethereum URLs](blockchain-templates-create-stack.md#ethereum-urls)。

1. 保留其他設定的預設選項，並選擇 **Save (儲存)**。

現在，您可以使用以範本建立之根堆疊的 **Outputs (輸出)** 標籤，連線至 CloudFormation 主控台上可用的 Ethereum URL。

# 清除 資源
<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 角色，然後選擇 **Delete (刪除)**。

**終止堡壘主機的 EC2 執行個體**
+ 開啟 Amazon EC2 儀表板，選擇**執行中的執行個體**，選擇您為堡壘主機建立的 EC2 執行個體，選擇**動作**、**執行個體狀態**、**終止**。