Help us understand the problem. What is going on with this article?

AWS Blockchain TemplatesでHyperledger Fabric基盤を構築する

More than 1 year has passed since last update.

Hyperledger FabricをAWS上にBlockchainTemplateを使って構築する。
バージョンは1.0を利用。

概要

BlockchainTemplateはCloudFormationのテンプレートの1つ。
Hyperledger Fabric用のBlockchainTemplateを使うと、
サブネット上にEC2インスタンスを作成してその中に分散ノードが構築される。
利用時には、構築する環境の指定とインスタンス作成に必要なものを渡すだけでよい。

事前準備

BlockchainTemplateを利用するために以下の環境準備が必要。
※パブリックサブネットはNATゲートウェイへのルーティングがあるプライベートサブネットでも可。

  • VPC
  • インターネットゲートウェイ
  • パブリックサブネット

BlockchainTemplateでのインスタンス作成のため、以下の用意が必要。

  • EC2キーペア
  • セキュリティグループ
  • IAMロール

VPC

BlockchainTemplateを利用できるリージョンで作成する。
CIDR blockは任意の値。
000.png
DNS hostnamesは有効にする。
ネットワークACLはデフォルト。(全てのトラフィックに制限なし)
033.png

インターネットゲートウェイ

作成後、VPCにアタッチする。
019.png
VPCからルートテーブルを選択し、作成したインターネットゲートウェイをルーティングに追加する。
034.png
035.png

パブリックサブネット

インターネットゲートウェイへのルーティングのあるメインルートテーブルを利用。
外部との通信ができない設定の場合、基盤構築時にエラーとなる。
001.png

EC2キーペア

作成したインスタンスにSSH接続する場合は、作成後にダウンロードできる鍵が必要になる。
今回はSSH接続を行わないので、作成してパラメータとして指定するのみ。
007.png

セキュリティグループ

構築することが目的なので、とりあえずすべてのトラフィックを許可。
※説明の入力も必要。
008.png
009.png

IAMロール

「AmazonEC2ContainerRegistryReadOnly」「AmazonS3ReadOnlyAccess」を指定する。
「SSHAmazonEC2RoleforSSM」は基盤構築に無関係のポリシー。
作成したインスタンスにSSH接続する場合、SSHAmazonEC2RoleforSSMは不要。
011.png
022.png

基盤構築

以下のURLにある起動へのリンクからCloudFormationを起動する。
https://docs.aws.amazon.com/ja_jp/blockchain-templates/latest/developerguide/blockchain-templates-hyperledger.html
今回はVPCを作成した「米国東部 (オハイオ) リージョン (us-east-2) で起動」を選択。

スタックの名前は任意。
027.png
デフォルト値そのまま。
028.png
作成したVPC、サブネット等を指定。
インスタンスプロファイル ARNはIAMロールから参照できる。
029.png
デフォルトはt2.mediumだが、他種類も指定可能。
030.png
5分ほどで「CREATE_COMPLETE」となる。
※失敗の場合はロールバックされる。
036.png
037.png

構築確認

SSMのセッションマネージャーを利用してインスタンスにログインする。
※IAMロールにAmazonEC2RoleforSSMを追加していること。
SSH接続でインスタンスにログインでも可。

エンドポイント作成

SSM用のエンドポイントを作成する。
031.png
作成したVPCとサブネットを指定。
038.png
セキュリティグループはEC2と同じもの(制限なし)とする。
032.png

セッションログイン

SSMセッションマネージャーから基盤構築したインスタンスのセッション開始。
023.png

以下、コマンドでノードが3つ、ordererが起動していることが分かる。

sudo docker ps

024.png

ログ確認(おまけ)

セッションマネージャーの設定でCloudWatchにコマンドログを出力する。
025.png
026.png

HYPERLEDGER EXPLORER

インスタンスのパブリックDSNのポート8080にアクセスする。

http://(パブリックDSN):8080/

ブロックの高さやノードを見ることができる。
039.png

おわりに

・基盤構築はできたが、チェーンコードの実行はできていない。
・1つのインスタンスの中に3つのノードを立てていて、リージョン、ネットワーク、サーバーが全て同じ環境。

セキュリティを担保しつつ、ノードを作成することは容易にできるものの、
選択できるHyperledger Fabricのバージョンが「v1」しかなく、構成的にノードが分散されていないことから
可用性や冗長性を確認するようなPoCには利用しにくいと思われる。

参考

https://docs.aws.amazon.com/ja_jp/blockchain-templates/latest/developerguide/blockchain-templates-hyperledger.html
https://medium.com/coinmonks/get-started-with-blockchain-using-the-aws-hyperledger-fabric-template-an-unofficial-guide-551bc46af710

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away