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

起動へのリンク

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

ダウンロードへのリンク

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

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 にアクセスできるように、パブリックサブネットを持つ Amazon VPC ネットワーク、または NAT ゲートウェイと Elastic IP アドレスを持つプライベートサブネットが必要となります。

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

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 リソースへのプロキシ接続を行うことができます。詳細については、以下の 踏み台ホストを使用したプロキシ接続 を参照してください。

注記

テンプレートは、パブリック 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 プロキシ?]、[保存] の順に選択します。

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