前提条件の設定 - AWS Blockchain Templates

AWS Blockchain Templates は 2019 年 4 月 30 日に廃止されました。このサービスやサポートドキュメントは今後更新されません。AWS で最適なマネージドブロックチェーンエクスペリエンスを実現するには、Amazon Managed Blockchain (AMB) の使用をお勧めします。Amazon Managed Blockchain の開始方法の詳細については、Hyperledger Fabric に関するワークショップ、またはイーサリアムノードのデプロイに関するブログをご覧ください。AMB について質問がある場合や、さらにサポートが必要な場合は、AWS Support または担当の AWS アカウントチームまでお問い合わせください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

前提条件の設定

このチュートリアルで指定する Ethereum 用の AWS Blockchain Template 設定では、次のことを行う必要があります。

VPC とサブネットを作成する

Ethereum 用の AWS Blockchain Template は、Amazon Virtual Private Cloud (Amazon VPC) を使用して、定義した仮想ネットワーク内でリソースを起動します。このチュートリアルで指定する設定では、2 つのパブリックサブネットを必要とする Application Load Balancer を作成します。各サブネットは別個のアベイラビリティーゾーンに配置する必要があります。さらに、コンテナインスタンス用にプライベートサブネットも必要です。このサブネットは Application Load Balancer と同じアベイラビリティーゾーンに配置する必要があります。最初に VPC ウィザードを使用して、1 つのパブリックサブネットとプライベートサブネットを同じアベイラビリティーゾーンに作成します。次に、この VPC の 2 つ目のパブリックサブネットを別のアベイラビリティーゾーンに作成します。

詳細については、「Amazon VPC ユーザーガイド」の「Amazon VPC とは」を参照してください。

以下で説明するように、Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を使用して、Elastic IP アドレス、VPC、およびサブネットを作成します。

Elastic IP アドレスを作成するには
  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. [Elastic IP]、[新しいアドレスの割り当て]、[割り当て] の順に選択します。

  3. 作成した Elastic IP アドレスを書き留め、[閉じる] を選択します。

  4. Elastic IP アドレスのリストで、先ほど作成した Elastic IP アドレスの [割り当て ID] を見つけます。VPC を作成するときに、これを使用します。

VPC を作成するには
  1. ナビゲーションバーで、VPC のリージョンを選択します。VPC はリージョンに固有であるため、キーペアを作成し、Ethereum スタックを起動するのと同じリージョンを選択します。詳細については、「キーペアの作成」を参照してください。

  2. VPC ダッシュボードで、[Start VPC Wizard] (VPC ウィザードの起動) を選択します。

  3. [ステップ 1: VPC 設定の選択] ページで [パブリックとプライベートサブネットを持つ VPC] を選択し、[選択] を選択します。

  4. [ステップ 2: パブリックとプライベートサブネットを持つ VPC] ページで、[IPv4 CIDR ブロック] と [IPv6 CIDR ブロック] はデフォルト値のままにします。[VPC 名] に、わかりやすい名前を入力します。

  5. [パブリックサブネットの IPv4 CIDR] は、デフォルト値のままにしておきます。[アベイラビリティーゾーン] でゾーンを選択します。[パブリックサブネット名] にわかりやすい名前を入力します。

    このサブネットを、テンプレートを使用するときに Application Load Balancer の 2 つのサブネットの最初の 1 つとして指定します。

    プライベートサブネットに同じアベイラビリティーゾーンを選択し、他のパブリックサブネットに別のアベイラビリティーゾーンを選択するため、このサブネットのアベイラビリティーゾーンを書き留めておきます。

  6. [プライベートサブネットの IPv4 CIDR] は、デフォルト値のままにしておきます。[アベイラビリティーゾーン] で、前のステップと同じアベイラビリティーゾーンを選択します。[プライベートサブネット名] に、わかりやすい名前を入力します。

  7. [Elastic IP 割り当て ID] で、前に作成した Elastic IP アドレスを選択します。

  8. 他の設定はデフォルト値のままにします。

  9. [Create VPC(VPC の作成)] を選択します。

    以下の例は、パブリックサブネット EthereumPubSub1 とプライベートサブネット EthereumPvtSub1 を持つ VPC EthereumNetworkVPC を示しています。パブリックサブネットでは、アベイラビリティーゾーン [us-west-2a] を使用します。

別のアベイラビリティーゾーンに 2 つ目のパブリックサブネットを作成するには
  1. [サブネット] を選択し、前に作成したパブリックサブネットをリストから選択します。[ルートテーブル] タブを選択し、ルートテーブル ID を書き留めます。次の 2 番目のパブリックサブネットに、この同じルートテーブルを指定します。

  2. [Create Subnet] を選択します。

  3. [名前タグ] に、サブネットの名前を入力します。この名前は、後でこのネットワークに要塞ホストを作成するときに使用します。

  4. [VPC] で、前に作成した VPC を選択します。

  5. [アベイラビリティーゾーン] で、最初のパブリックサブネット用に選択したゾーンとは異なるゾーンを選択します。

  6. [IPv4 CIDR ブロック] に「10.0.2.0/24」と入力します。

  7. [はい、作成する] を選択します。サブネットがサブネットのリストに追加されます。

  8. リストからサブネットを選択した状態で、[サブネットのアクション]、[自動割り当て IP 設定の変更] の順に選択します。[自動割り当て IP]、[保存]、[閉じる] の順に選択します。これにより、要塞ホストは、このサブネットで作成されたパブリック IP アドレスを取得できます。

  9. [ルートテーブル] タブで [編集] を選択します。[変更先] で、前に書き留めたルートテーブル ID を選択し、[保存] を選択します。

これにより、先ほど作成した VPC のサブネットが 3 つ表示されます。各サブネットの名前と ID を書き留め、テンプレートの使用時に指定できるようにします。

セキュリティグループを作成する

セキュリティグループはファイアウォールとして機能し、リソースへのインバウンドトラフィックとアウトバウンドトラフィックをコントロールします。テンプレートを使用して Amazon ECS クラスター上に Ethererum ネットワークを作成するときは、2 つのセキュリティグループを指定します。

  • EC2 インスタンスのセキュリティグループは、クラスター内にある EC2 インスタンスに出入りするトラフィックをコントロールします。

  • Application Load Balancer、EC2 インスタンス、および要塞ホスト間のトラフィックを制御する Application Load Balancer 用のセキュリティグループ。このセキュリティグループを要塞ホストにも関連付けます。

各セキュリティグループには、Application Load Balancer と EC2 インスタンス間の通信、およびその他の最小ルールを可能にするルールがあります。これには、セキュリティグループが互いに参照する必要があります。このため、最初にセキュリティグループを作成し、適切なルールを使用して更新します。

2 つのセキュリティグループを作成するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [Security Groups] (セキュリティグループ) を選択して、[Create Security Group] (セキュリティグループの作成) を選択します。

  3. [セキュリティグループ名] に、わかりやすいセキュリティグループ名を入力します。[EthereumEC2-SG] や [EthereumALB-SG] など、他のセキュリティグループと区別できる名前にします。これらの名前は後で使用します。[説明] に、簡単な概要を入力します。

  4. [VPC] で、前に作成した VPC を選択します。

  5. [作成] を選択します。

  6. 上記の手順を繰り返して、他のセキュリティグループを作成します。

EC2 インスタンスのセキュリティグループにインバウンドルールを追加する
  1. 先ほど作成した EC2 インスタンスのセキュリティグループを選択します。

  2. [インバウンド] タブで、[編集] を選択します。

  3. [Type] で、[All traffic] を選択します。[ソース] で [カスタム] を選択したままにし、現在編集しているセキュリティグループをリストから選択します (例: EthereumEC2-SG)。これにより、セキュリティグループ内の EC2 インスタンスが相互に通信できるようになります。

  4. ルールの追加] を選択します。

  5. [Type] で、[All traffic] を選択します。[ソース] で [カスタム] を選択したままにし、Application Load Balancer のセキュリティグループをリストから選択します (例: EthereumALB-SG)。これにより、セキュリティグループ内の EC2 インスタンスが Application Load Balancer と通信できるようになります。

  6. [保存] を選択します。

Application Load Balancer のセキュリティグループのインバウンドルールとアウトバウンドルールを追加する
  1. 先ほど作成した Application Load Balancer インスタンスのセキュリティグループを選択します。

  2. [インバウンド] タブで [編集] を選択し、次のインバウンドのルールを追加します。

    1. [Type] で、[All traffic] を選択します。[ソース] で [カスタム] を選択したままにし、現在編集しているセキュリティグループをリストから選択します (例: EthereumALB-SG)。これにより、Application Load Balancer はそれ自体および要塞ホストと通信できるようになります。

    2. ルールの追加] を選択します。

    3. [Type] で、[All traffic] を選択します。[ソース] で [カスタム] を選択したままにし、EC2 インスタンスのセキュリティグループをリストから選択します (例: EthereumEC2-SG)。これにより、セキュリティグループ内の EC2 インスタンスは Application Load Balancer および要塞ホストと通信できるようになります。

    4. ルールの追加] を選択します。

    5. タイプ]SSH] を選択します。[ソース] で [マイ IP] を選択します。これにより、コンピュータの IP CIDR が検出されて入力されます。

      重要

      このルールにより、コンピュータからの SSH トラフィックを受け入れることを要塞ホストに許可します。また、要塞ホストを使用してウェブインターフェイスを表示したり、Ethereum ネットワークの EC2 インスタンスに接続したりすることをコンピュータに許可します。Ethereum ネットワークに接続することを他のコンピュータに許可するには、それらのコンピュータをソースとして、このルールに追加します。信頼されたソースへのインバウンドトラフィックのみを許可します。

    6. [保存] を選択します。

  3. [アウトバウンド] タブで、[編集] を選択し、すべての IP アドレスへのアウトバウンドトラフィックを許可するように自動的に作成されたルールを削除します。

  4. ルールの追加] を選択します。

  5. [Type] で、[All traffic] を選択します。[送信先] で [カスタム] を選択したままにし、EC2 インスタンスのセキュリティグループをリストから選択します。これにより、Application Load Balancer および要塞ホストから Ethereum ネットワーク内の EC2 インスタンスへのアウトバウンド接続が可能になります。

  6. ルールの追加] を選択します。

  7. [Type] で、[All traffic] を選択します。[ソース] で [カスタム] を選択したままにし、現在編集しているセキュリティグループをリストから選択します (例: EthereumALB-SG)。これにより、Application Load Balancer はそれ自体および要塞ホストと通信できるようになります。

  8. [保存] を選択します。

Amazon ECS および EC2 インスタンスプロファイルの IAM ロールを作成する

このテンプレートを使用するときは、Amazon ECS および EC2 インスタンスプロファイルの IAM ロールを指定します。これらのロールにアタッチされたアクセス権限ポリシーにより、クラスターの AWS リソースとインスタンスは、他の AWS リソースとやり取りすることができます。詳細については、IAM ユーザーガイドIAM ロールを参照してください。IAM コンソール (https://console.aws.amazon.com/iam/) を使用して、Amazon ECS および EC2 インスタンスプロファイルの IAM ロールを設定します。

Amazon ECS の IAM ロールを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles (ロール)]、[Create Role (ロールの作成)] の順に選択します。

  3. [信頼されたエンティティの種類を選択] で、[AWS のサービス] を選択します。

  4. [Choose the service that will use this role] (このロールを使用するサービスを選択) で、[Elastic Container Service] (伸縮自在コンテナサービス) を選択します。

  5. [ユースケースの選択] で [Elastic Container Service] を選択し、[Next: Permissions (次の手順: アクセス許可)] を選択します。

  6. アクセス許可ポリシー では、デフォルトポリシー (AmazonEC2ContainerServiceRole) を選択したまま、次へ: レビュー を選択します。

  7. ロール名 には、ECS RoleForEthereumなどのロールを識別するのに役立つ値を入力します。[ロールの説明] に、簡単な要約を入力します。後で使用するため、ロール名を書き留めておきます。

  8. [ロールの作成] を選択します。

  9. リストから、作成したロールを選択します。アカウントに多数のロールがある場合は、ロール名で検索できます。

  10. [ロールの ARN] の値をコピーし、再度コピーできるように保存します。Ethereum ネットワークを作成するときに、この ARN が必要です。

テンプレートで指定する EC2 インスタンスプロファイルは、Ethereum ネットワーク内の EC2 インスタンスが他の AWS サービスと対話するために使用します。ロールのアクセス許可ポリシーを作成し、ロールを作成します (同じ名前のインスタンスプロファイルが自動的に作成されます)。次に、これらのアクセス許可ポリシーをロールにアタッチします。

EC2 インスタンスプロファイルを作成するには
  1. ナビゲーションペインで、[Policies]、[Create policy] の順に選択します。

  2. [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": "*" } ] }
  3. [ポリシーを確認] を選択します。

  4. 名前 には、EthereumPolicyForEC2 など、このアクセス許可ポリシーを識別するのに役立つ値を入力します。[説明] に、簡単な概要を入力します。[ポリシーの作成] を選択します。

  5. [ロール]、[ロールの作成] を選択します。

  6. [EC2]、[次の手順: アクセス許可] の順に選択します。

  7. 検索フィールドに、EthereumPolicyForEC2 など、前に作成したアクセス許可ポリシーの名前を入力します。

  8. 先ほど作成したポリシーのチェックマークを選択し、[次の手順: 確認] を選択します。

  9. ロール名 には、EC2RoleForEthereum など、ロールを識別するのに役立つ値を入力します。[ロールの説明] に簡単な説明を入力し、[ロールの作成] を選択します。

  10. リストから、作成したロールを選択します。アカウントに多くのロールがある場合は、[検索] フィールドにロール名を入力できます。

  11. [インスタンスプロファイルの ARN] の値をコピーし、再利用できるように保存しておきます。Ethereum ネットワークを作成するときに、この ARN が必要です。

要塞ホストの作成

このチュートリアルでは、要塞ホストを作成します。これは、Ethereum ネットワークのウェブインターフェイスとインスタンスに接続するために使用する EC2 インスタンスです。その唯一の目的は、VPC 外の信頼されたクライアントからの SSH トラフィックを転送し、これらのクライアントから Ethereum ネットワークのリソースにアクセスできるようにすることです。

テンプレートで作成する Application Load Balancer は内部型である (内部 IP アドレスのみをルーティングする) ため、要塞ホストをセットアップします。要塞ホスト:

  • 前に作成した 2 番目のパブリックサブネットで起動されるため、Application Load Balancer が認識する内部 IP アドレスを持ちます。

  • VPC 外の信頼されたソースからアクセスできるパブリック IP アドレスがサブネットから割り当てられます。

  • 前に作成した Application Load Balancer のセキュリティグループに関連付けられます。このセキュリティグループには、信頼されたクライアントからの SSH トラフィック (ポート 22) を許可するインバウンドルールがあります。

信頼されたクライアントから Ethereum ネットワークにアクセスするには、要塞ホストを介して接続するようにクライアントを設定する必要があります。詳細については、「踏み台ホストに接続 EthStats して EthExplorer 使用する」を参照してください。要塞ホストは 1 つの方法です。信頼されたクライアントから VPC 内のプライベートリソースにアクセスできる方法であれば、どれでも使用できます。

要塞ホストを作成するには
  1. Linux インスタンス用 Amazon EC2 ユーザーガイドインスタンスを起動するための最初の 5 つのステップに従います。

  2. [インスタンスの詳細の編集] を選択します。[ネットワーク] で前に作成した VPC を選択し、[サブネット] で前に作成した 2 番目のパブリックサブネットを選択します。その他すべての設定はデフォルトのままにします。

  3. 変更を確認するメッセージが表示されたら、[確認と作成] を選択します。

  4. [セキュリティグループの編集] を選択します。[セキュリティグループの割り当て] で、[既存のセキュリティグループを選択する] を選択します。

  5. セキュリティグループのリストから、前に作成した Application Load Balancer のセキュリティグループを選択し、[確認と作成] を選択します。

  6. [Launch] (起動する) を選択します。

  7. インスタンス ID を書き留めます。後で「踏み台ホストに接続 EthStats して EthExplorer 使用する」際に必要になります。