Hyperledger Fabric on Amazon Managed Blockchain
This repository contains a CDK construct to deploy a Hyperledger Fabric network
running on Amazon Managed Blockchain. It builds out a member and its nodes, a VPC
and associated endpoint to access them, and a set of users enrolled on the network.
The following functionality is planned for future releases:
- Create channels on nodes
- Instantiate chaincode on nodes
Installation
Note that this construct requires AWS CDK v2.
JavaScript
npm install --save @cdklabs/cdk-hyperledger-fabric-network
Python
pip3 install cdklabs.cdk-hyperledger-fabric-network
Java
Add the following to pom.xml
:
<dependency>
<groupId>io.github.cdklabs</groupId>
<artifactId>cdk-hyperledger-fabric-network</artifactId>
</dependency>
.NET
dotnet add package Cdklabs.CdkHyperledgerFabricNetwork
Usage
A minimally complete deployment is shown below. By default, a standard network
will be created running Hyperledger Fabric 1.4 with a single bc.t3.small
node.
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { HyperledgerFabricNetwork } from '@cdklabs/cdk-hyperledger-fabric-network';
class MyStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
new HyperledgerFabricNetwork(this, 'Example', {
networkName: 'MyNetwork',
memberName: 'MyMember',
});
}
}
The equivalent Python code is as follows:
from aws_cdk import Stack
from cdklabs.cdk_hyperledger_fabric_network import HyperledgerFabricNetwork
class MyStack(Stack):
def __init__(self, scope, id, **kwargs):
super().__init__(scope, id, **kwargs)
HyperledgerFabricNetwork(
self, 'Example',
network_name='MyNetwork',
member_name='MyMember',
)
The following is a more complex instantiation illustrating some of the options available.
new HyperledgerFabricNetwork(this, 'Example', {
networkName: 'MyNetwork',
networkDescription: 'This is my Hyperledger Fabric network',
memberName: 'MyMember',
networkDescription: 'This is my Hyperledger Fabric member',
frameworkVersion: hyperledger.FrameworkVersion.VERSION_1_2,
proposalDurationInHours: 48,
thresholdPercentage: 75,
nodes: [
{
availabilityZone: 'us-east-1a',
instanceType: hyperledger.InstanceType.STANDARD5_LARGE,
},
{
availabilityZone: 'us-east-1b',
instanceType: hyperledger.InstanceType.STANDARD5_LARGE,
},
],
users: [
{ userId: 'AppUser1', affilitation: 'MyMember' },
{ userId: 'AppUser2', affilitation: 'MyMember.department1' },
],
});
See the API Documentation for details on all available input and output parameters.
References
Contributing
Pull requests are welcomed. Please review the Contributing Guidelines
and the Code of Conduct.
Security
See CONTRIBUTING for more information.
Authors
License
This project is licensed under the MIT-0 License. See the LICENSE file for details.