Hyperledger Fabric 用の AWS Blockchain Template の使用 - AWS Blockchain Templates

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

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

Hyperledger Fabric 用の AWS Blockchain Template の使用

Hyperledger Fabric は、チェーンコードというスマートコントラクトを実行するブロックチェーンフレームワークであり、Go で記述されます。Hyperledger Fabric を使用してプライベートネットワークを作成し、ネットワークに接続して参加できるピアを制限することができます。Hyperledger Fabric の詳細については、Hyperledger Fabric のドキュメントを参照してください。チェーンコードの詳細については、Hyperledger Fabric のドキュメントの 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 アドレスを Hyperledger Fabric サービスをホスティングする EC2 インスタンスに割り当てますが、指定したプライベートサブネット内のルーティングポリシーは、この IP アドレスとパブリックソースとの間のトラフィックを許可しないため、この IP アドレスはパブリックにアクセスすることはできません。

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

一部の構成では、Hyperledger Fabric サービスが一般公開されない場合があります。このような場合は、踏み台ホストを介して Hyperledger Fabric リソースに接続できます。踏み台ホストの詳細については、Linux 踏み台ホストクイックスタートガイドLinux 踏み台ホストアーキテクチャを参照してください。

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

  • 踏み台ホストの EC2 インスタンスが、[Auto-assign Public IP] (自動割り当てパブリック 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 標準 を使用する場合は、その他のツール、拡張機能 を選択します。FoxyProxy 標準 で、詳細 拡張オプション 新しいプロキシの追加 を選択します。[手動プロキシ設定] を選択します。[ホストまたは IP アドレス] に「localhost」と入力し、[ポート] に「9001」と入力します。[SOCKS Proxy?]、[保存] を選択します。

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