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

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 インスタンスにデプロイされます。

起動へのリンク

Hyperledger Fabric テンプレートを使用して特定のリージョンで AWS CloudFormation を起動するためのリンクについては、「AWS Blockchain Templates の開始方法」を参照してください。

Hyperledger Fabric 用の AWS Blockchain Template コンポーネント

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

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

前提条件

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

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

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

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

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

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

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 インスタンスに接続できます。詳細については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「SSH を使用した Linux インスタンスへの接続」を参照してください。

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

注記

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

踏み台ホストを使用したプロキシ接続

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

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

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

  • 踏み台ホストに 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 Proxy?]、[保存] を選択します。

これで、テンプレート出力で示した Hyperledger Fabric ホストアドレスに接続できるようになります。