37
AWS Blockchain Templates 開発者ガイド

AWS Blockchain Templates - 開発者ガイド · AWS Blockchain Templates とは AWS Blockchain Templates 開発者ガイド AWS Blockchain Templates を使用すると、さまざまなブロックチェーンフレームワークを使用して

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

AWS Blockchain Templates開発者ガイド

AWS Blockchain Templates 開発者ガイド

AWS Blockchain Templates: 開発者ガイドCopyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

AWS Blockchain Templates 開発者ガイド

Table of ContentsAWS Blockchain Templates とは .......................................................................................................... 1

開始方法 .................................................................................................................................... 2AWS とブロックチェーンに精通している場合 ......................................................................... 2AWS には精通しているがブロックチェーンの初心者である場合 ................................................ 3AWS の初心者であるがブロックチェーンには精通している場合 ................................................ 3AWS とブロックチェーンの初心者である場合 ......................................................................... 3

関連サービス ............................................................................................................................. 3セットアップ ..................................................................................................................................... 4

AWS にサインアップする ............................................................................................................ 4IAM ユーザーを作成する .............................................................................................................. 4キーペアの作成 .......................................................................................................................... 6

ご利用開始にあたって ......................................................................................................................... 7前提条件の設定 .......................................................................................................................... 7

VPC とサブネットを作成する ............................................................................................... 8セキュリティグループを作成する ........................................................................................ 10Amazon ECS および EC2 インスタンスプロファイルの IAM ロールを作成する .......................... 12

Ethereum ネットワークを作成する .............................................................................................. 16リソースのクリーンアップ ......................................................................................................... 18

AWS Blockchain Templates と機能 ..................................................................................................... 20Ethereum 用 AWS Blockchain Template ....................................................................................... 20

起動へのリンク ................................................................................................................. 20ダウンロードへのリンク .................................................................................................... 20Ethereum オプション ........................................................................................................ 20前提条件 .......................................................................................................................... 22Ethereum リソースへの接続 ............................................................................................... 27

Hyperledger Fabric 用の AWS Blockchain Template ....................................................................... 28起動へのリンク ................................................................................................................. 28ダウンロードへのリンク .................................................................................................... 29Hyperledger Fabric 用の AWS Blockchain Template コンポーネント ......................................... 29前提条件 .......................................................................................................................... 30Hyperledger Fabric リソースへの接続 .................................................................................. 31

ドキュメント履歴 .............................................................................................................................. 33AWS の用語集 .................................................................................................................................. 34

iii

AWS Blockchain Templates 開発者ガイド

AWS Blockchain Templates とはAWS Blockchain Templates を使用すると、さまざまなブロックチェーンフレームワークを使用して AWS上でブロックチェーンネットワークを迅速に作成してデプロイできます。ブロックチェーンは、継続的に大きくなるトランザクションのセットと、暗号を使用して改ざんや変更に対して強化されたスマート契約を維持する、分散化されたデータベーステクノロジーです。

ブロックチェーンネットワークは、国外への支払い、供給チェーンの管理、土地の登録、クラウドファンディング、ガバナンス、金融取引などのビジネスプロセスの効率とイミュータビリティを高める、ピアツーピアネットワークです。これにより、お互いに知らない人や組織でも信頼し、トランザクションレコードを個別に確認できます。

ブロックチェーンネットワークを作成するには、AWS Blockchain Templates を使用して AWSCloudFormation スタックを設定し起動します。AWS のリソースとサービスは、選択した AWS BlockchainTemplate と指定するオプションによって異なります。使用可能なテンプレートとその機能の詳細については、「AWS Blockchain Templates と機能 (p. 20)」を参照してください。AWS Blockchain Templatesを使用して作成された AWS 上のブロックチェーンネットワークの基本的なコンポーネントを次の図に示します。

1

AWS Blockchain Templates 開発者ガイド開始方法

開始方法開始する最良の場所は、ブロックチェーンと AWS、特に AWS Blockchain Templates に関連するサービスの専門知識のレベルによって異なります。

AWS とブロックチェーンに精通している場合使用するフレームワークについての「AWS Blockchain Templates と機能 (p. 20)」のトピックから始めてください。リンクを使用して AWS Blockchain Template を起動し、ブロックチェーンネットワークを構成するか、テンプレートをダウンロードして自分でチェックアウトします。

2

AWS Blockchain Templates 開発者ガイドAWS には精通しているがブロックチェーンの初心者である場合

AWS には精通しているがブロックチェーンの初心者である場合「AWS Blockchain Templates の使用開始 (p. 7)」のチュートリアルから始めてください。このチュートリアルでは、デフォルト設定を使用して入門用の Ethereum ブロックチェーンネットワークを作成する方法について説明しています。終了したら、ブロックチェーンフレームワークの概要リンクについて「AWS Blockchain Templates と機能 (p. 20)」を参照して、設定の選択と機能の詳細について学んでください。

AWS の初心者であるがブロックチェーンには精通している場合開始時 AWS Blockchain Templates のセットアップ (p. 4). これは、アカウントやユーザープロフィールなど、AWS の基本設定に役立ちます。次に、「AWS Blockchain Templates の使用開始 (p. 7)」のチュートリアルを参照してください。このチュートリアルでは、入門用の Ethereum ブロックチェーンネットワークを作成する方法について説明しています。たとえ最終的に Ethereum を使用しない場合でも、関連するサービスをセットアップする実践的な経験が得られます。この経験はすべてブロックチェーンフレームワークに役立ちます。最後に、フレームワークの「AWS Blockchain Templates と機能 (p. 20)」セクションのトピックを参照してください。

AWS とブロックチェーンの初心者である場合開始時 AWS Blockchain Templates のセットアップ (p. 4). これは、アカウントやユーザープロフィールなど、AWS の基本設定に役立ちます。「AWS Blockchain Templates の使用開始 (p. 7)」のチュートリアルを参照してください。このチュートリアルでは、入門用の Ethereum ブロックチェーンネットワークを作成する方法について説明しています。AWS サービスと Ethereum の詳細については、リンクを参照してください。

関連サービス選択したオプションに応じて、AWS Blockchain Templates は次の AWS サービスを使用してブロックチェーンをデプロイできます。

• Amazon EC2— ブロックチェーンネットワークのコンピューティング能力を提供します。詳細については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』を参照してください。

• Amazon ECS — ブロックチェーンネットワークを使用するように選択した場合は、クラスタ内の EC2インスタンス間でコンテナのデプロイを調整します。詳細については、『Amazon Elastic ContainerService Developer Guide』を参照してください。

• Amazon VPC — 作成する Ethereum リソースのネットワークアクセスを提供します。アクセシビリティとセキュリティの設定をカスタマイズできます。詳細については、『Amazon VPC 開発者ガイド』を参照してください。

• アプリケーションロードバランシング — Amazon ECS をコンテナプラットフォームとして使用する場合、使用可能なユーザーインターフェイスおよび内部サービス検出にアクセスするための単一の接点として機能します。詳細については、「Application Load Balancer とは」(『Application Load Balancer 用ユーザーガイド』) を参照してください。

3

AWS Blockchain Templates 開発者ガイドAWS にサインアップする

AWS Blockchain Templates のセットアップ

AWS Blockchain Templates の使用を開始する前に、次のタスクを完了します。

• AWS にサインアップする (p. 4)• IAM ユーザーを作成する (p. 4)• キーペアの作成 (p. 6)

これらは、すべてのブロックチェーン構成の基本的な前提条件です。さらに、選択したブロックチェーンネットワークには、必要な環境と構成の選択に応じて異なる前提条件が存在する場合があります。詳細については、「AWS Blockchain Templates と機能 (p. 20)」のブロックチェーンテンプレートの関連セクションを参照してください。

Amazon ECS クラスターを使用してプライベート Ethereum ネットワークの前提条件を設定するためのステップバイステップの手順については、「AWS Blockchain Templates の使用開始 (p. 7)」を参照してください。

AWS にサインアップするAWS にサインアップすると、AWS アカウントが自動的にすべてのサービスにサインアップされます。料金が発生するのは、実際に使用したサービスの分のみです。

AWS アカウントをすでにお持ちの場合は次のタスクに進んでください。AWS アカウントをお持ちでない場合は、以下に説明する手順に従ってアカウントを作成してください。

AWS アカウントを作成するには

1. https://portal.aws.amazon.com/billing/signup を開きます。2. オンラインの手順に従います。

サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて確認コードを入力することが求められます。

AWS アカウント番号を書き留めておいてください。これは、次のタスクで IAM ユーザーを作成するときに必要です。

IAM ユーザーを作成するAWS のサービスでは、サービスにアクセスする際に認証情報を指定する必要があります。これは、リソースにアクセスする権限をユーザーが持っているか判定するためです。コンソールを使用するにはパスワードが必要です。AWS アカウントのアクセスキーを作成して、コマンドラインインターフェイスまたは APIにアクセスすることができます。ただし、AWS アカウントの認証情報を使って AWS にアクセスすることはお勧めしません。代わりに AWS Identity and Access Management (IAM) を使用することをお勧めします。IAM ユーザーを作成して、管理権限を使ってこのユーザーを IAM グループに追加するか、このユーザーに管理権限を付与します。これで、特殊な URL と IAM ユーザーの認証情報を使って、AWS にアクセスできます。

4

AWS Blockchain Templates 開発者ガイドIAM ユーザーを作成する

AWS にサインアップしても、お客様の IAM ユーザーをまだ作成していない場合は、IAM コンソールを使用して作成できます。IAM ユーザーを作成済みの場合、このステップは省略できます。

自分用の管理者ユーザーを作成し、そのユーザーを管理者グループに追加するには (コンソール)

1. AWS アカウント E メールアドレスとパスワードを使用して https://console.aws.amazon.com/iam/ でAWS アカウントのルートユーザー として IAM コンソールにサインインします。

Note

以下のAdministratorIAMユーザーの使用に関するベストプラクティスに従い、ルートユーザー認証情報を安全な場所に保管しておくことを強くお勧めします。ルートユーザーとしてサインインして、少数のアカウントおよびサービス管理タスクのみを実行します。

2. ナビゲーションペインで [Users]、[Add user] の順に選択します。3. [ユーザー名] に「Administrator」と入力します。4. [AWS マネジメントコンソール access (アクセス)] の横にあるチェックボックスをオンにします。

[Custom password (カスタムパスワード)] を選択し、その後テキストボックスに新しいパスワードを入力します。

5. (オプション) AWS では、デフォルトで、新しいユーザーに対して初回のサインイン時に新しいパスワードを作成することが必要です。必要に応じて [User must create a new password at next sign-in(ユーザーは次回のサインイン時に新しいパスワードを作成する必要がある)] のチェックボックスをオフにして、新しいユーザーがサインインしてからパスワードをリセットできるようにできます。

6. [Next: Permissions (次へ: アクセス許可)] を選択します。7. [Set permissions (アクセス許可の設定)] で、[Add user to group (ユーザーをグループに追加)] を選択し

ます。8. [Create group] を選択します。9. [グループの作成] ダイアログボックスで、[グループ名] に「Administrators」と入力します。10. [Filter policies (フィルタポリシー)] を選択し、その後 [AWS managed -job function (AWS 管理ジョブ

の機能] を選択してテーブルのコンテンツをフィルタリングします。11. ポリシーリストで、[AdministratorAccess] のチェックボックスをオンにします。次に、[Create group]

を選択します。

Note

AdministratorAccess アクセス許可を使用して、AWS Billing and Cost Management コンソールを使用する前に、IAM ユーザーおよびロールの請求へのアクセスをアクティブ化する必要があります。これを行うには、請求コンソールへのアクセスの委任に関するチュートリアルのステップ 1 の手順に従ってください。

12. グループのリストに戻り、新しいグループのチェックボックスをオンにします。必要に応じて[Refresh] を選択し、リスト内のグループを表示します。

13. [次へ: タグ] を選択します。14. (オプション) タグをキー - 値のペアとしてアタッチして、メタデータをユーザーに追加します。IAM

でのタグの使用の詳細については、『IAM ユーザーガイド』の「IAM エンティティのタグ付け」を参照してください。

15. [Next: Review] を選択して、新しいユーザーに追加するグループメンバーシップのリストを表示します。続行する準備ができたら、[Create user] を選択します。

この同じプロセスを繰り返して新しいグループとユーザーを作成し、AWS アカウントのリソースへのアクセス権をユーザーに付与できます。ポリシーを使用して特定の AWS リソースに対するユーザーのアクセス許可を制限する方法については、「アクセス管理」と「ポリシーの例」を参照してください。

新規の IAM ユーザーとしてサインインするには、AWS マネジメントコンソール からサインアウトし、次の URL を使用します。このとき、your_aws_account_id はハイフンを除いた AWS アカウント番号です

5

AWS Blockchain Templates 開発者ガイドキーペアの作成

(たとえば AWS アカウント番号が 1234-5678-9012 であれば、AWS アカウント ID は 123456789012となります)。

https://your_aws_account_id.signin.aws.amazon.com/console/

作成した IAM ユーザー名とパスワードを入力します。サインインすると、ナビゲーションバーに「your_user_name @ your_aws_account_id」が表示されます。

サインインページの URL に AWS アカウント ID を含めない場合は、アカウントのエイリアスを作成できます。IAM ダッシュボードから [Create Account Alias] を選択し、エイリアス (会社名など) を入力します。アカウントエイリアスを作成した後、サインインするには、次の URL を使用します。

https://your_account_alias.signin.aws.amazon.com/console/

アカウントの IAM ユーザーのサインインリンクを確認するには、IAM コンソールを開き、ダッシュボードの [IAM users sign-in link] の下を確認します。

詳細については、『AWS Identity and Access Management ユーザーガイド』を参照してください。

キーペアの作成AWS ではパブリックキー暗号を使用して、ブロックチェーンネットワークのインスタンスのログイン情報の安全性を保護します。各 AWS Blockchain Template を起動するときに、キーペアの名前を指定します。次に、SSH を使用してログインするなど、キーペアを使用してインスタンスに直接アクセスできます。

適切なリージョンで既存のキーペアがある場合は、このステップを省略できます。キーペアをまだ作成していない場合は、Amazon EC2 コンソールを使用して作成できます。Ethereum ネットワークを起動するために使用するのと同じリージョンで、キーペアを作成します。詳細については、Linux インスタンス用Amazon EC2 ユーザーガイドの「リージョンとアベイラビリティゾーン」を参照してください。

キーペアを作成するには

1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。2. ナビゲーションバーで、キーペアを生成するリージョンを選択します。使用可能なリージョンは場所

に関係なく選択できますが、キーペアはリージョンに固有のものです。たとえば、米国東部 (オハイオ) リージョンでインスタンスを起動する予定の場合は、その同じリージョン内のインスタンス用にキーペアを作成する必要があります。

3. ナビゲーションペインで [キーペア] を選択し、[キーペアの作成] を選択します。4. [Key pair name] にはキーペア名が入ります。覚えやすい名前 (IAM ユーザー名など) を選択し、その後

に -key-pair を続け、さらにリージョン名を続けます。たとえば、me-key-pair-useast2 とします。[Create] を選択します。

5. ブラウザによって秘密キーファイルが自動的にダウンロードされます。ベースファイル名はキーペア名として指定した名前であり、ファイル名の拡張子は .pem です。プライベートキーファイルを安全な場所に保存します。

Important

これは、プライベートキーを保存する唯一のチャンスです。Ethereum ネットワークの起動時に、キーペアの名前を指定します。

詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Amazon EC2 Key Pairs」を参照してください。キーペアを使用した EC2 インスタンスへの接続の詳細については、Linux インスタンス用Amazon EC2 ユーザーガイドの「Linux インスタンスへの接続」を参照してください。

6

AWS Blockchain Templates 開発者ガイド前提条件の設定

AWS Blockchain Templates の使用開始

このチュートリアルでは、Ethereum 用 AWS Blockchain Template を使用して AWS CloudFormation を通じて AWS 上にプライベートブロックチェーンネットワークを作成する方法について説明します。作成するネットワークでは、2 つの Ethereum クライアントと 1 つのマイナーが Amazon ECS クラスターの Amazon EC2 インスタンス上で実行されています。Amazon ECS は Amazon ECR から引き出されたDocker コンテナでこれらのサービスを実行します。このチュートリアルを開始する前に、ブロックチェーンネットワークと関連する AWS のサービスについていくらか知っておくと役に立ちますが、必須ではありません。

このチュートリアルでは、「AWS Blockchain Templates のセットアップ (p. 4)」の一般的な前提条件を設定していることを前提としています。さらに、テンプレートを使用する前に、Amazon VPC ネットワークや特定の IAM ロールのアクセス許可など、一部の AWS リソースを設定する必要があります。

このチュートリアルで、これらの前提条件をセットアップする方法を示します。セットアップを選択しましたが、、すべてのアプリケーションに対して規範的であるわけではありません。前提条件を満たす限り、必要に応じて他の設定を選択することができます。各テンプレートの機能と一般的な前提条件と、テンプレートをダウンロードしたり、AWS CloudFormation で直接起動する詳細については、「AWSBlockchain Templates と機能 (p. 20)」を参照してください。

このチュートリアルでは、例として 米国西部 (オレゴン) リージョン (us-west-2) を使用していますが、AWS Blockchain Templates をサポートする任意のリージョンを使用できます。

• 米国西部 (オレゴン) リージョン (us-west-2)• 米国東部(バージニア北部) リージョン (us-east-1)• 米国東部 (オハイオ) リージョン (us-east-2)

Note

上にリストされていないリージョンでテンプレートを実行すると、米国東部(バージニア北部)リージョン (us-east-1) でリソースが起動されます。

このチュートリアルを使用して設定する Ethereum 用 AWS Blockchain Template は、次のリソースを作成します。

• 指定するタイプと数のオンデマンド EC2 インスタンス。このチュートリアルでは、デフォルトのt2.medium インスタンスタイプを使用します。

• Application Load Balancer。

チュートリアルの後で、作成したリソースをクリーンアップするための手順が用意されています。

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

7

AWS Blockchain Templates 開発者ガイドVPC とサブネットを作成する

• VPC とサブネットを作成する (p. 8)• セキュリティグループを作成する (p. 10)• Amazon ECS および EC2 インスタンスプロファイルの IAM ロールを作成する (p. 12)

VPC とサブネットを作成するEthereum 用 AWS Blockchain Template は、Amazon Virtual Private Cloud (Amazon VPC) を使用して定義する仮想ネットワークにリソースを起動します。このチュートリアルで指定する設定では、異なるアベイラビリティーゾーンに 2 つのパブリックサブネットを必要とする Application Load Balancer が作成されます。サブネットアドレスに到達できる必要があるため、この目的で Elastic IP アドレスとパブリックサブネットを作成します。VPC を作成するときに、パブリックサブネットとプライベートサブネットを 1 つ作成します。次に、VPC 内に 2 つ目のパブリックサブネットを作成します。

詳細については、「What is Amazon VPC?」を参照してください (「Amazon VPC ユーザーガイド」)。

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

Elastic IP アドレスを作成するには

1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。2. [Elastic IP]、[新しいアドレスの割り当て]、[割り当て] の順に選択します。3. 作成する Elastic IP アドレスを書き留め、[閉じる] を選択します。4. Elastic IP アドレスのリストで、先に作成した Elastic IP アドレスの [アロケーション ID] を見つけま

す。VPC を作成するときに、これを使用します。

VPC を作成するには

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

2. VPC ダッシュボードで、[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. 他の設定はデフォルト値のままにします。

以下の例に示しているのは、パブリックサブネット EthereumPubSub1 およびプライベートサブネット EthereumPvtSub1 を持つ VPC EthereumNetworkVPC です。パブリックサブネットでは、アベイラビリティーゾーン [us-west-2a] を使用します。アベイラビリティーゾーンを書き留めてください。次のステップで、別のゾーンを選択する必要があります。

8

AWS Blockchain Templates 開発者ガイドVPC とサブネットを作成する

8. [VPC の作成] を選択します。

別のアベイラビリティーゾーンに 2 つ目のパブリックサブネットを作成するには

1. ナビゲーションペインで [Subnets] を選択し、続いて [Create Subnet] を選択します。2. [名前タグ] に、サブネットの名前を入力します。[VPC] で、前の手順で作成した VPC を選択します。3. [アベイラビリティーゾーン] で、最初のパブリックサブネット用に選択したゾーンから別のゾーンを

選択します。4. [IPv4 CIDR ブロック] に [10.0.2.0/24] と入力します。5. [はい、作成する] を選択します。

9

AWS Blockchain Templates 開発者ガイドセキュリティグループを作成する

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

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

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

• Application Load Balancer と外部ソース間、およびネットワーク内の Application Load Balancer と EC2インスタンス間のトラフィックを制御する Application Load Balancer のセキュリティグループ。

Important

このチュートリアルでは、簡素化されたアクセスを許可するセキュリティグループを作成して、チュートリアルを簡単に完了できます。これらのセキュリティグループは、本番環境での使用を目的としていません。特に、ここで作成した Elastic Load Balancer のセキュリティグループは、すべての IP アドレスからのインバウンドトラフィックが Ethereum ウェブインターフェイスを表示できるようにします。さらに、特定のアプリケーションやタスクに対してインバウンドトラフィックを許可するルールを追加することもできます。たとえば、特定の IP アドレスまたは範囲からのインバウンド

10

AWS Blockchain Templates 開発者ガイドセキュリティグループを作成する

SSH トラフィックを許可する EC2 インスタンスのセキュリティグループに受信ルールを追加して、SSH を使用してインスタンスに直接接続できるようにすることができます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Linux インスタンスの Amazon EC2セキュリティグループ」を参照してください。

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

2 つのセキュリティグループを作成するには

1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。2. ナビゲーションペインで [セキュリティグループ] を選択して、[セキュリティグループの作成] を選択

します。3. セキュリティグループを簡単に特定し、他と区別するため、[EthereumEC2-SG] または

[EthereumALB-SG] のようなセキュリティグループの名前を [セキュリティグループ名] に、入力します。これらの名前は後で使用します。[説明] にで、簡単な要約を入力します。

4. [VPC] で、前の手順で作成した VPC を選択します。5. [Create] を選択します。6. 上記の手順を繰り返して、他のセキュリティグループを作成します。

EC2 インスタンスのセキュリティグループにインバウンドルールを追加する

1. 先ほど作成した EC2 インスタンスのセキュリティグループを選択します。2. [Inbound ] タブで、[Edit] を選択します。3. [Type] で、[All traffic] を選択します。[ソース] で [Custom (カスタム)] を選択し、リストから現在編集

しているセキュリティグループを選択します (例: EthereumEC2-SG)。これにより、セキュリティグループ内の EC2 インスタンスが相互に通信できるようになります。

4. [Add Rule] を選択します。5. [Type] で、[All traffic] を選択します。[ソース] で [Custom (カスタム)] を選択し、リストから

Application Load Balancer のセキュリティグループを選択します (例: EthereumALB-SG)。これにより、セキュリティグループ内の EC2 インスタンスが Application Load Balancer と通信できるようになります。

6. [Save] を選択します。

Application Load Balancer のセキュリティグループのインバウンドルールとアウトバウンドルールを追加する

1. 先ほど作成した Application Load Balancer インスタンスのセキュリティグループを選択します。2. [インバウンド] タブで [編集] を選択し、次のインバウンドのルールを追加します。

Warning

以下のインバウンドルールは、指定されたポート上で指定したすべての IP アドレスからのトラフィックを許可します。Ethereum のウェブインターフェイスを表示するためのアクセス許可が必要な信頼できるソースのみを含めるように、[ソース] を制限します。

a. [タイプ] で [HTTP] を選択します。[ソース] では、[カスタム] を選択したまま、信頼できる IP アドレスまたは信頼できる IP アドレスの範囲を CIDR 形式で入力します。このルールにより、これらのソースは HTTP 経由で Application Load Balancer と通信できるようになります。

b. [Add Rule] を選択します。c. [Type] で [Custom TCP ] を選択します。[ポート範囲] で [8080] と入力します。[ソース] では、[カ

スタム] を選択したまま、信頼できる IP アドレスまたは信頼できる IP アドレスの範囲を CIDR 形

11

AWS Blockchain Templates 開発者ガイドAmazon ECS および EC2 インスタンスプロファイルの IAM ロールを作成する

式で入力します。このルールにより、これらのソースはポート 8080 で提供される EthStats を表示できます。

d. [Add Rule] を選択します。e. [Type] で [Custom TCP ] を選択します。[ポート範囲] で [8545] と入力します。[ソース] では、[カ

スタム] を選択したまま、信頼できる IP アドレスまたは信頼できる IP アドレスの範囲を CIDR 形式で入力します。このルールでは、これらのソースでポート 8545 を使用する JSON RPC overHTTP を使用できます。

f. [Save] を選択します。3. [アウトバウンド] タブで、[編集] を選択し、自動的に作成されたルールを削除して、すべての IP アド

レスへのアウトバウンドトラフィックを許可します。4. [Add Rule] を選択します。5. [Type] で、[All traffic] を選択します。[ソース] で 、[カスタム] を選択したままにして、リストか

ら EC2 インスタンスの EC2 セキュリティグループを選択します。これにより、Application LoadBalancer から Ethereum ネットワーク内の EC2 インスタンスへのアウトバウンド接続が可能になります。

6. [Save] を選択します。

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. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。2. ナビゲーションペインで [Roles]、[Create Role] の順に選択します。3. [Select type of trusted entity] で、[AWS service] を選択します。4. [このロールを使用するサービスを選択] で、[Elastic Container Service] を選択します。5. [ユースケースの選択] で [Elastic Container Service] を選択し、[Next: Permissions] (次へ: アクセス権

限) を選択します。

12

AWS Blockchain Templates 開発者ガイドAmazon ECS および EC2 インスタンスプロファイルの IAM ロールを作成する

6. [アクセス権限ポリシー] で、デフォルトのアクセス権限ポリシー (AmazonEC2ContainerServiceRole)を選択したままにし、[次へ: レビュー] を選択します。

7. [ロール名] に、ロールを識別するのに役立つ値を入力します (例: ECSRoleForEthereum)。[ロールの説明] に、簡単な要約を入力します。後で使用できるようにロール名をメモしておきます。

8. [Create role] を選択します。9. リストから、作成したロールを選択します。アカウントに多くのロールがある場合は、ロール名を検

索できます。

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

13

AWS Blockchain Templates 開発者ガイドAmazon ECS および EC2 インスタンスプロファイルの IAM ロールを作成する

テンプレートで指定する 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": "*" } ]

14

AWS Blockchain Templates 開発者ガイドAmazon ECS および EC2 インスタンスプロファイルの IAM ロールを作成する

}

3. [ポリシーの確認] を選択します。4. [名前] に、このアクセス許可ポリシーを識別するのに役立つ値を入力します (例:

EthereumPolicyForEC2)。[説明] にで、簡単な要約を入力します。[Create policy] を選択します。

5. [ロール]、[ロールの作成] の順に選択します。6. [EC2]、[Next: Permissions (次へ: アクセス権限)] の順に選択します。7. [検索] フィールドに、以前作成したアクセス許可ポリシーの名前 (例: EthereumPolicyForEC2) を入力

します。8. 先ほど作成したポリシーのチェックマークを選択し、[Next: Review (次: レビュー)] を選択します。

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

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

15

AWS Blockchain Templates 開発者ガイドEthereum ネットワークを作成する

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

Ethereum ネットワークを作成するこのトピックのテンプレートを使用して指定した Ethereum ネットワークは、Ethereum ネットワーク用のEC2 インスタンスの Amazon ECS クラスターを作成する AWS CloudFormation スタックを起動します。テンプレートは、「前提条件の設定 (p. 7)」で以前に作成したリソースに依存しています。

テンプレートを使用して AWS CloudFormation スタックを起動すると、いくつかのタスクにネストされたスタックが作成されます。完了後、ネットワークの Application Load Balancer を介して提供されるリソースに接続して、Ethereum ネットワークが実行中でアクセス可能であることを確認できます。

Ethereum 用 AWS Blockchain Template を使用して Ethereum ネットワークを作成するには

1. 使用中の AWS リージョンの以下のクイックリンクを使用して、最新の Ethereum 用 AWS BlockchainTemplate を AWS CloudFormation コンソールで開きます。

• 米国東部(バージニア北部) リージョン (us-east-1) で起動• 米国東部 (オハイオ) リージョン (us-east-2) で起動• 米国西部 (オレゴン) リージョン (us-west-2) で起動

2. 次のガイドラインに従って値を入力します。

16

AWS Blockchain Templates 開発者ガイドEthereum ネットワークを作成する

• [スタック名] 似、識別しやすい名前を入力します。この名前は、スタックが作成するリソースの名前の中で使用されます。

• [Ethereum ネットワークパラメータ] および [プライベート Ethereum ネットワークパラメータ] は、デフォルト設定のままにしておきます。

• [ プラットフォーム設定] をデフォルト設定のままにしておくと、EC2 インスタンスの AmazonECS クラスターが作成されます。または、[docker-local] で単一の EC2 インスタンスを使用してEthereum ネットワークを作成します。

• [VPC ID] で、「VPC とサブネットを作成する (p. 8)」で以前に作成した VPC を選択します。• [List of VPC Subnets to use (使用する VPC サブネットのリスト)] で、手順「To create the

VPC (p. 8)」で以前作成した単一のプライベートサブネットを選択します。• [Application Load Balancer Subnet IDs (Application Load Balancer のサブネット ID)] で、VPC と追

加のパブリックサブネットを作成した後で、先ほど「list of subnets (p. 10)」で書き留めた 2 つのパブリックサブネットを選択します。作成した後に、VPC と追加のパブリックサブネットを選択します。

• [EC2 Key Pair (EC2 キーペア)] でキーペアを選択します。キーペアの作成の詳細については、「キーペアの作成 (p. 6)」を参照してください。

• [EC2 Security Group (EC2 セキュリティグループ)] で、「セキュリティグループを作成する (p. 10)」で以前作成したセキュリティグループを選択します。

• [IAM Role for ECS (ECS の IAM ロール)] で、「Amazon ECS および EC2 インスタンスプロファイルの IAM ロールを作成する (p. 12)」で以前作成した ECS ロールの ARN を入力します。

• [EC2 Instance Profile ARN (EC2 インスタンスプロファイル ARN)] で、「Amazon ECS および EC2インスタンスプロファイルの IAM ロールを作成する (p. 12)」で以前作成したインスタンスプロファイルを入力します。

• [Application Load Balancer Security Group (Application Load Balancer セキュリティグループ)] で、「セキュリティグループを作成する (p. 10)」で以前作成した Application Load Balancer のセキュリティグループを選択します。

• [ECS cluster configuration (ECS クラスターム設定)] をデフォルト設定のままにしておくと、3 つのEC2 インスタンスの ECS クラスターが作成されます。

• [EthStats] を、true に設定されているデフォルト設定のままにしておきます。• [EthStats Connection Secret (EthStats 接続シークレット)] に、6 文字以上の任意の値を入力しま

す。• [EthExplorer] を、true に設定されているデフォルト設定のままにしておきます。

3. 他のすべての設定をデフォルトのままにし、確認のチェックボックスをオンにして、[作成] を選択します。

AWS CloudFormation が起動するルートスタックの [Stack Detail (スタックの詳細)] ページが表示されます。

4. ルートスタックとネストされたスタックの進捗を監視するには、[スタック] を選択します。

17

AWS Blockchain Templates 開発者ガイドリソースのクリーンアップ

5. すべてのスタックで [ステータス] の [CREATE_COMPLETE] が表示されたら、Ethereum のユーザーインターフェイスに接続して、ネットワークが動作しアクセス可能であることを確認できます。ECS コンテナプラットフォームを使用する場合、Application Load Balancer を介してEthStats、EthExplorer、および EthJsonRPC に接続するための URLは、[Outputs( 出力)] タブで使用できます。Application Load Balancer は安全なので、踏み台ホストを使用して接続する必要があります。この 2 つは、Application Load Balancer への安全なアクセスを提供するための接続のプロキシとなります。詳細については、「Ethereum リソースへの接続 (p. 27)」を参照してください。

リソースのクリーンアップAWS CloudFormation を使用すると、スタックが作成したリソースを簡単にクリーンアップできます。スタックを削除すると、スタックが作成したすべてのリソースが削除されます。

テンプレートが作成したリソースを削除するには

• AWS CloudFormation コンソールを開き、以前作成したルートスタックを選択し、[アクション]、[削除] の順に選択します。

以前のステップで作成したルートスタックと関連するネストされたスタックの [ステータス] が[DELETE_IN_PROGRESS] に更新されます。

Ethereum ネットワーク用に作成した前提条件を削除することもできます。

VPC の削除

• Amazon VPC コンソールを開き、以前作成した VPC を選択し、[アクション]、[VPC の削除] の順に選択します。これにより、VPC に関連付けられたサブネット、セキュリティグループ、および NATゲートウェイも削除されます。

18

AWS Blockchain Templates 開発者ガイドリソースのクリーンアップ

IAM ロールと EC2 インスタンスプロファイルを削除する

• IAM コンソールを開き、[ロール] を選択します。以前作成した EC2 と ECS のロールを選択し、[削除]を選択します。

19

AWS Blockchain Templates 開発者ガイドEthereum 用 AWS Blockchain Template

AWS Blockchain Templates と機能このセクションでは、すぐにブロックチェーンネットワークを作成するためのリンクと、AWS でネットワークを設定するための設定オプションと前提条件に関する情報について説明します。

次のテンプレートを使用できます。

• Ethereum 用 AWS Blockchain Template• Hyperledger Fabric 用の AWS Blockchain Template

AWS Blockchain Templates は次のリージョンを使用できます。

• 米国西部 (オレゴン) リージョン (us-west-2)• 米国東部(バージニア北部) リージョン (us-east-1)• 米国東部 (オハイオ) リージョン (us-east-2)

Note

上にリストされていないリージョンでテンプレートを実行すると、米国東部(バージニア北部)リージョン (us-east-1) でリソースが起動されます。

Ethereum 用 AWS Blockchain Template を使用するEthereum は、Ethereum 固有の言語である Solidity を使用してスマート契約を実行するブロックチェーンフレームワークです。Homestead は Ethereum の最新のリリースです。詳細については、『EthereumHomestead Documentation』と「Solidity」のドキュメントを参照してください。

起動へのリンクEthereum 用 AWS Blockchain Template を使用して特定のリージョンで AWS CloudFormation を起動するには、次のリンクを使用します。

• 米国東部(バージニア北部) リージョン (us-east-1) で起動• 米国東部 (オハイオ) リージョン (us-east-2) で起動• 米国西部 (オレゴン) リージョン (us-west-2) で起動

ダウンロードへのリンクテンプレートをダウンロードするには、次のリンクを使用します。

• 米国東部(バージニア北部) リージョン (us-east-1) からテンプレート (YAML) をダウンロード• 米国東部 (オハイオ) リージョン (us-east-2) からテンプレート (YAML) をダウンロード• 米国西部 (オレゴン) リージョン (us-west-2) からテンプレート (YAML) をダウンロード

Ethereum オプションテンプレートを使用して Ethereum ネットワークを設定する場合は、後続の要件を決定する選択を行います。

20

AWS Blockchain Templates 開発者ガイドEthereum オプション

• コンテナプラットフォームの選択 (p. 21)• プライベートまたはパブリック Ethereum ネットワークの選択 (p. 22)

コンテナプラットフォームの選択AWS Blockchain Templates は、Amazon ECR に格納された Docker コンテナを使用してブロックチェーンソフトウェアをデプロイします。Ethereum 用 AWS Blockchain Template には、[Container Platform (コンテナプラットフォーム)] で 2 つの選択肢があります。

• [ecs] — Ethereum が Amazon EC2 インスタンスの Amazon ECS クラスター上で実行されるように指定します。

• [docker-local] — Ethereum が単一の EC2 インスタンス上で実行されるように指定します。

Amazon ECS コンテナプラットフォームの使用

Amazon ECS を使用して、Application Load Balancer と関連リソースとともに、複数の EC2 インスタンスで構成された ECS クラスターで Ethereum ネットワークを作成します。Amazon ECS の設定の詳細については、「AWS Blockchain Templates の使用開始 (p. 7)」チュートリアルを参照してください。

次の図は、テンプレートを使用して ECS コンテナプラットフォームオプションで作成された Ethereumネットワークを示しています。

Docker-Local プラットフォームの使用

または、単一の Amazon EC2 インスタンス内で Ethereum コンテナを起動することができます。すべてのコンテナが単一の EC2 インスタンスで実行されます。これは簡略化されたセットアップです。

21

AWS Blockchain Templates 開発者ガイド前提条件

次の図は、テンプレートを使用して docker-local コンテナプラットフォームオプションで作成されたEthereum ネットワークを示しています。

プライベートまたはパブリック Ethereum ネットワークの選択1 ~ 4 以外の [Ethereum Network ID (Ethereum ネットワーク ID)] 値を選択すると、指定したプライベートネットワークパラメーターを使用して、定義したネットワーク内で実行されるプライベート Ethereumノードが作成されます。

[Ethereum Network ID (Ethereum ネットワーク ID)] 1 ~ 4 を選択すると、作成した Ethereum ノードが公開されている Ethereum ネットワークに結合されます。プライベートネットワーク設定とそのデフォルト値は無視できます。Ethereum ノードをパブリック Ethereum ネットワークに参加させる場合は、ネットワーク内の適切なサービスがインターネットにアクセス可能であることを確認してください。

前提条件Ethereum 用 AWS Blockchain Template を使用して Ethereum ネットワークをセットアップする場合は、次に示す最小要件を満たす必要があります。テンプレートには、リストされた AWS コンポーネントを指定する必要があります。

22

AWS Blockchain Templates 開発者ガイド前提条件

前提条件 ECS プラットフォームの場合 Docker-Local の場合

EC2 インスタンスへのアクセスに使用できる Amazon EC2 キーペア。このキーは、ECS クラスターおよび他のリソースと同じリージョンに存在する必要があります。

✔ ✔

IAM の前提条件

関連するすべてのサービスを処理するアクセス許可を持つ IAMの原則 (ユーザーまたはグループ)。

✔ ✔

EC2 インスタンスが他のサービスとやりとりするための適切なアクセス許可を持つAmazon EC2 インスタンスプロファイル。詳細については、「To create an EC2 instanceprofile (p. 14)」を参照してください。

✔ ✔

Amazon ECS が他のサービスとやりとりするアクセス許可を持つ IAM ロール。詳細については、「ECS ロールとアクセス許可の作成 (p. 25)」を参照してください。

セキュリティグループの前提条件

EC2 インスタンスのセキュリティグループと、次の要件:

✔ ✔

• 0.0.0.0/0 (デフォルト) へのトラフィックを許可するアウトバウンドルール。

✔ ✔

• 同じセキュリティグループからのトラフィックを許可するインバウンドルール。

✔ ✔

• クライアントコンピュータの IP アドレスやカスタムアドレス範囲など、指定したソースからの HTTP (ポート80)、EthStats (ポート 8080 で提供)、および HTTP 経由のJSON RPC (ポート 8545) を許可するインバウンドルール。

  ✔

• Amazon ECS の同じセキュリティグループからのトラフィックを許可するインバウンドルール。

✔  

23

AWS Blockchain Templates 開発者ガイド前提条件

前提条件 ECS プラットフォームの場合 Docker-Local の場合

Application Load Balancer のセキュリティグループと、以下の要件:

• クライアントコンピュータのIP アドレスや信頼できる IP アドレス範囲または別のセキュリティグループなど、指定した信頼できるソースからのHTTP (ポート 80)、EthStats(ポート 8080 で提供)、およびHTTP 経由の JSON RPC (ポート 8545) を許可するインバウンドルール。

• EC2 インスタンスの同じセキュリティグループからのすべてのトラフィックを許可するインバウンドルール。

• アウトバウンドルールでは、EC2 インスタンスのセキュリティグループにのみすべてのトラフィックを許可する必要があります。詳細については、「セキュリティグループを作成する (p. 10)」を参照してください。

VPC の前提条件

Elastic IP アドレス。Ethereumサービスへのアクセスに使用されます。

✔ ✔

EC2 インスタンスを実行するサブネット。プライベートサブネットを強くお勧めします。

✔ ✔

異なるアベイラビリティーゾーンにあるパブリックにアクセス可能な 2 つのサブネット。Application Load Balancer に必要です。

EC2 インスタンスプロファイルと ECS ロールの IAM アクセス許可の例テンプレートを使用するときは、EC2 インスタンスプロファイル ARN をパラメータの 1 つとして指定します。ECS コンテナプラットフォームを使用する場合は、ECS ロールの ARN も指定します。これらのロールにアタッチされたアクセス権限ポリシーにより、クラスターの AWS リソースとインスタンスは、他の AWS リソースとやり取りすることができます。詳細については、『IAM ユーザーガイド』の「IAMロール」を参照してください。アクセス許可を作成するための出発点として、以下のポリシーステートメントと手順を使用してください。

24

AWS Blockchain Templates 開発者ガイド前提条件

EC2 インスタンスプロファイルのアクセス許可ポリシーの例

次のアクセス許可ポリシーは、ECS コンテナプラットフォームを選択したときに、EC2 インスタンスプロファイルに対して許可されるアクションを示しています。同じポリシーステートメントは、ドッカーローカルコンテナプラットフォームで使用可能で、アクセスを制限するために ecs コンテキストキーが削除されています。

{ "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": "*" } ]}

ECS ロールとアクセス許可の作成

ECS ロールにアタッチされるアクセス許可については、[AmazonEC2ContainerServiceRole] アクセス許可ポリシーから開始することをお勧めします。ロールを作成し、このアクセス許可ポリシーをアタッチするには、次の手順を実行します。IAM コンソールを使用して、このポリシーの最新のアクセス許可を表示します。

Amazon ECS の IAM ロールを作成するには

1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。2. ナビゲーションペインで [Roles]、[Create Role] の順に選択します。3. [Select type of trusted entity] で、[AWS service] を選択します。4. [このロールを使用するサービスを選択] で、[Elastic Container Service] を選択します。5. [ユースケースの選択] で [Elastic Container Service] を選択し、[Next: Permissions] (次へ: アクセス権

限) を選択します。

25

AWS Blockchain Templates 開発者ガイド前提条件

6. [アクセス権限ポリシー] で、デフォルトのアクセス権限ポリシー (AmazonEC2ContainerServiceRole)を選択したままにし、[次へ: レビュー] を選択します。

7. [ロール名] に、ロールを識別するのに役立つ値を入力します (例: ECSRoleForEthereum)。[ロールの説明] に、簡単な要約を入力します。後で使用できるようにロール名をメモしておきます。

8. [Create role] を選択します。9. リストから、作成したロールを選択します。アカウントに多くのロールがある場合は、ロール名を検

索できます。

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

26

AWS Blockchain Templates 開発者ガイドEthereum リソースへの接続

Ethereum リソースへの接続テンプレートで作成したルートスタックに [CREATE_COMPLETE] が表示されたら、AWSCloudFormation コンソールを使用して Ethereum リソースに接続できます。接続する方法は、選択したECS または docker-local のコンテナプラットフォームによって異なります。

• ECS — ルートスタックの [出力] タブは、Application Load Balancer で実行されているサービスへのリンクを提供します。セキュリティ上の理由から、これらの URL に直接アクセスすることはできません。接続するには、 踏み台ホストをセットアップして使用し、プロキシ接続します。詳細については、以下の踏み台ホストを使用したプロキシ接続 (p. 27) を参照してください。

• docker-local — 以下に示すように、Ethereum サービスをホストする EC2 インスタンスの IP アドレスを使用して接続します。EC2 コンソールを使用して、テンプレートが作成したインスタンスの ec2-IP-address を見つけます。• EthStats — http://ec2-IP-address を使用• EthExplorer — http://ec2-IP-address:8080 を使用• EthJsonRpc — http://ec2-IP-address:8545 を使用

[Ethereum Network Subnet ID (Ethereum ネットワークサブネット ID)] でパブリックのサブネット (テンプレート内の [List of VPC Subnets to use] (使用する VPC サブネットのリスト))を指定した場合は、直接接続することができます。クライアントは、SSH (ポート 22) のインバウンドトラフィックの信頼できる送信元である必要があります。これは Ethereum 用 AWS Blockchain Template で指定した [EC2 セキュリティグループ] によって決まります。

プライベートサブネットを指定した場合は、踏み台ホストをセットアップして使用し、これらのアドレスへのプロキシ接続を行うことができます。詳細については、以下の 踏み台ホストを使用したプロキシ接続 (p. 27) を参照してください。

踏み台ホストを使用したプロキシ接続一部の設定では、Ethereum サービスはパブリック利用が可能でない場合があります。このような場合は、踏み台ホストを通じて Ethereum リソースに接続できます。踏み台ホストの詳細については、Linux 踏み台ホストのクイックスタートガイドで「Linux 踏み台ホストアーキテクチャ」を参照してください。

踏み台ホストは EC2 インスタンスタイプです。次の要件を満たしていることを確認してください。

27

AWS Blockchain Templates 開発者ガイドHyperledger Fabric 用の AWS Blockchain Template

• 踏み台ホストの EC2 インスタンスは、自動割り当てパブリック IP が有効でインターネットゲートウェイがあるパブリックサブネット内にある。

• 踏み台ホストに SSH 接続を許可するキーペアがある。• 踏み台ホストは、接続するクライアントからのインバウンド SSH トラフィックを許可するセキュリティ

グループに関連付けられている。• Ethereum ホストに割り当てられたセキュリティグループ (たとえば、ECS がコンテナプラットフォーム

である場合は Application Load Balancer、docker-local がコンテナプラットフォームである場合はホストEC2 インスタンス) により、VPC 内のソースからすべてのポートでインバウンドトラフィックが許可されます。

踏み台ホストを設定したら、接続するクライアントがプロキシとして踏み台ホストを使用することを確認します。次の例は、Mac OS を使用したプロキシ接続の設定を示しています。BastionIP を踏み台ホストの EC2 インスタンスの IP アドレスと置き換え、MySshKey.pem を踏み台ホストにコピーしたキーペアファイルと置き換えます。

コマンドラインで、以下のように入力します。

ssh -i mySshKey.pem ec2-user@BastionIP -D 9001

これにより、ローカルマシンのポート 9001 のポート転送が踏み台ホストに設定されます。

続いて、localhost:9001 に SOCKS プロキシを使用するようにブラウザまたはシステムを設定します。たとえば、Mac OS を使用して、[システム環境設定]、[ネットワーク]、[詳細]、[SOCKS プロキシ] の順に選択し、「localhost:9001」と入力します。

Chrome で FoxyProxy Standard を使用して、[その他のツール]、[拡張機能] の順に選択します。[FoxyProxy Standard] で、[詳細]、[拡張機能のオプション]、[プロキシを新規追加] の順に選択します。[手動プロキシ設定] を選択します。[ホストまたは IP アドレス] に「localhost」と入力し、[ポート] に「9001」と入力します。[SOCKS プロキシ?]、[保存] の順に選択します。

これで、このトピックで前に示した Ethereum ホストアドレスに接続できるようになります。

Hyperledger Fabric 用の AWS Blockchain Templateを使用する

Hyperledger Fabric は、チェーンコード というスマートコントラクトを実行するブロックチェーンフレームワークで、Go に記述されています。Hyperledger Fabric を使用してプライベートネットワークを作成し、ネットワークに接続して参加できるピアを制限することができます。Hyperledger Fabric の詳細については、『Hyperledger Fabric documentation』を参照してください。チェーンコードの詳細については、『Hyperledger Fabric documentation』の「Chaincode for Developers (開発者向けのチェーンコード)」トピックを参照してください。

Hyperledger Fabric 用の AWS Blockchain Template は、docker-local コンテナプラットフォームのみをサポートしています。つまり、Hyperledger Fabric コンテナは単一の EC2 インスタンスにデプロイされています。

起動へのリンクテンプレートを使用して特定のリージョンで AWS CloudFormation を起動するには、次のリンクを使用します。

28

AWS Blockchain Templates 開発者ガイドダウンロードへのリンク

• 米国東部(バージニア北部) リージョン (us-east-1) で起動• 米国東部 (オハイオ) リージョン (us-east-2) で起動• 米国西部 (オレゴン) リージョン (us-west-2) で起動

ダウンロードへのリンクテンプレートをダウンロードするには、次のリンクを使用します。

• 米国東部(バージニア北部) リージョン (us-east-1) からテンプレート (YAML) をダウンロード• 米国東部 (オハイオ) リージョン (us-east-2) からテンプレート (YAML) をダウンロード• 米国西部 (オレゴン) リージョン (us-west-2) からテンプレート (YAML) をダウンロード

Hyperledger Fabric 用の AWS Blockchain Template コンポーネントHyperledger Fabric 用の AWS Blockchain Template は Docker で EC2 インスタンスを作成し、そのインスタンスのコンテナを使用して Hyperledger Fabric ネットワークを起動します。ネットワークには 1つの注文サービスと 3 つの組織が含まれており、それぞれが 1 つのピアサービスを持っています。テンプレートはまた、ブロックチェーンデータを参照するための Hyperledger Explorer コンテナも起動します。PostgreSQL サーバーコンテナが起動されて Hyperledger Explorer をサポートします。

次の図は、テンプレートを使用して作成された Hyperledger Fabric ネットワークを示します。

29

AWS Blockchain Templates 開発者ガイド前提条件

前提条件テンプレートを使用して Hyperledger Fabric ネットワークを起動する前に、以下の要件が満たされていることを確認します。

• 使用する IAM の原則 (ユーザーまたはグループ)には、関連するすべてのサービスを処理するアクセス許可が必要です。

• EC2 インスタンスにアクセスするために使用できるキーペア (たとえば、SSH を使用) にアクセスできる必要があります。キーは、インスタンスと同じリージョンに存在する必要があります。

• Amazon S3 へのアクセスと Amazon Elastic Container Registry (Amazon ECR) へのアクセスを許可するしてコンテナをプルするアクセス許可ポリシーがアタッチされた EC2 インスタンスプロファイルを持っている必要があります。アクセス許可ポリシーの例については、「EC2 インスタンスプロファイルの IAM アクセス許可の例 (p. 31)」を参照してください。

• Amazon S3、AWS CloudFormation、Amazon ECR にアクセスできるように、パブリックサブネットを持つ Amazon VPC ネットワーク、または NAT ゲートウェイと Elastic IP アドレスを持つプライベートサブネットが必要となります。

• SSH を使用してインスタンスに接続する必要のある IP アドレスから SSH トラフィック (ポート 22) を許可するインバウンドルールを持つ EC2 セキュリティグループが必要で、Hyperledger Explorer (ポート80) に接続する必要があるクライアントでも同様です。

30

AWS Blockchain Templates 開発者ガイドHyperledger Fabric リソースへの接続

EC2 インスタンスプロファイルの IAM アクセス許可の例Hyperledger Fabric 用の AWS Blockchain Template を使用するときは、EC2 インスタンスプロファイルARN をパラメータの 1 つとして指定します。EC2 のロールとインスタンスプロファイルにアタッチされているアクセス許可ポリシーの開始点として、次のポリシーステートメントを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:ListImages", "ecr:DescribeImages", "ecr:BatchGetImage", "s3:Get*", "s3:List*" ], "Resource": "*" } ]}

Hyperledger Fabric リソースへの接続テンプレートで作成したルートスタックに [CREATE_COMPLETE] が表示されたら、EC2 インスタンスのHyperledger Fabric リソースに接続できます。パブリックサブネットを指定した場合は、他の EC2 インスタンスと同じように EC2 インスタンスに接続できます。詳細については、「SSH を使用した Linux インスタンスへの接続」 (Linux インスタンス用 Amazon EC2 ユーザーガイド) を参照してください。

プライベートサブネットを指定した場合は、踏み台ホストをセットアップして使用し、Hyperledger Fabricリソースへのプロキシ接続を行うことができます。詳細については、以下の 踏み台ホストを使用したプロキシ接続 (p. 27) を参照してください。

Note

テンプレートは、パブリック IP アドレスを EC2 インスタンスをホスティングする HyperledgerFabric サービスに割り当てますが、指定したプライベートサブネット内のルーティングポリシーは、この IP アドレスとパブリックソースとの間のトラフィックを許可しないため、この IP アドレスはパブリックにアクセスすることはできません。

踏み台ホストを使用したプロキシ接続一部の設定では、Hyperledger Fabric サービスはパブリック利用が可能でない場合があります。このような場合は、踏み台ホストを通じて Hyperledger Fabric リソースに接続できます。踏み台ホストの詳細については、Linux 踏み台ホストのクイックスタートガイドで「Linux 踏み台ホストアーキテクチャ」を参照してください。

踏み台ホストは EC2 インスタンスタイプです。次の要件を満たしていることを確認してください。

• 踏み台ホストの EC2 インスタンスは、自動割り当てパブリック IP が有効でインターネットゲートウェイがあるパブリックサブネット内にある。

31

AWS Blockchain Templates 開発者ガイドHyperledger Fabric リソースへの接続

• 踏み台ホストに SSH 接続を許可するキーペアがある。• 踏み台ホストは、接続するクライアントからのインバウンド SSH トラフィックを許可するセキュリティ

グループに関連付けられている。• Hyperledger Fabric ホストに割り当てられたセキュリティグループ (たとえば、ECS がコンテナプラッ

トフォームである場合は Application Load Balancer、docker-local がコンテナプラットフォームである場合はホスト EC2 インスタンス) により、VPC 内のソースからすべてのポートでインバウンドトラフィックが許可されます。

踏み台ホストを設定したら、接続するクライアントがプロキシとして踏み台ホストを使用することを確認します。次の例は、Mac OS を使用したプロキシ接続の設定を示しています。BastionIP を踏み台ホストの EC2 インスタンスの IP アドレスと置き換え、MySshKey.pem を踏み台ホストにコピーしたキーペアファイルと置き換えます。

コマンドラインで、以下のように入力します。

ssh -i mySshKey.pem ec2-user@BastionIP -D 9001

これにより、ローカルマシンのポート 9001 のポート転送が踏み台ホストに設定されます。

続いて、localhost:9001 に SOCKS プロキシを使用するようにブラウザまたはシステムを設定します。たとえば、Mac OS を使用して、[システム環境設定]、[ネットワーク]、[詳細]、[SOCKS プロキシ] の順に選択し、「localhost:9001」と入力します。

Chrome で FoxyProxy Standard を使用して、[その他のツール]、[拡張機能] の順に選択します。[FoxyProxy Standard] で、[詳細]、[拡張機能のオプション]、[プロキシを新規追加] の順に選択します。[手動プロキシ設定] を選択します。[ホストまたは IP アドレス] に「localhost」と入力し、[ポート] に「9001」と入力します。[SOCKS プロキシ?]、[保存] の順に選択します。

これで、このトピックで前に示した Hyperledger Fabric ホストアドレスに接続できるようになります。

32

AWS Blockchain Templates 開発者ガイド

ドキュメント履歴以下の表は、このガイドのドキュメントの変更点をまとめたものです。

ドキュメントの最終更新日: 2018 年 4 月 19 日

変更 説明 日付

ガイドを作成。 AWS Blockchain Templates の初期リリースをサポートする新しい開発者ガイド。

2018 年 4 月 19 日

33

AWS Blockchain Templates 開発者ガイド

AWS の用語集最新の AWS の用語については、『AWS General Reference』の「AWS の用語集」を参照してください。

34