Node Runners Blueprints
The Node Runner Blueprints are TypeScript applications built using the AWS Cloud Development Kit (CDK). These blueprints implement the infrastructure-as-code (IaC) paradigm, allowing you to deploy your own blockchain nodes on AWS in various configurations, including solo nodes and highly available setups, for development, testing, or proof-of-concept purposes.
Most of the applications in the Node Runner Blueprints suite rely on an .env
file located in the root directory to retrieve input parameters. These parameters determine the compute resources, storage options, and node setup configurations to be used during the deployment process.
👈 Use navigation bar on the left for the setup guides for different protocols.
Adding new Node Runner Blueprints
First of all, THANK YOU! The easier it is to run a blockchain node on AWS the simpler it is for the ecosystem to build with it. Here are the major steps to contribute a Node Runner Blueprint:
- Check with our list of Issues if someone is already working on the node type you are after. If yes - join the forces! If no, go to the next step.
- Create a new issue to propose a new node type to let everyone know that you are going ot work on it. Use
Feature request
template for that. - Fork this repository.
- Use one of the existing blueprints as a baseline. Choose the one that has architecture closest to the one you want to create.
- Once you are happy with how your blueprint works, follow our Contribution Guide to create a pull request for our team to review it.
- Once merged, let your community know that the new Node Runner Blueprint is ready for them to use!
Recommended directory and file structure for a Node Runner Blueprint
lib/your-chain/doc/
- Documentation specific to the Node Runner Blueprintlib/your-chain/lib/
- Place for CDK stacks and other blueprint assetslib/your-chain/lib/assets/
- Place for everything that needs to be within the provisioned EC2 instance (user-data scripts, docker-compose files, etc.)lib/your-chain/lib/config/
- Your version of the config reader to parse values from.env
filelib/your-chain/lib/constructs/
- All CDK constructs specific to this Node Runner Blueprintlib/your-chain/lib/*-stack.ts
- All CDK stacks for this Node Runner Blueprintlib/your-chain/sample-configs/
- Place for sample configurations to deploy Node Runner Blueprint to your environmentlib/your-chain/test/
- Place for unit tests to verify the Node Runner Blueprint creates all necessary infrastructurelib/your-chain/.env-sample
- A sample configuration filelib/your-chain/app.ts
- Entry point to your AWS CDK applicationlib/your-chain/cdk.json
- Config file for feature flags for your AWS CDK applicationlib/your-chain/jest.config.json
- Configuration file for Jestlib/your-chain/README.md
- All information and usage instructions for your Node Runner Blueprint
Reusable imports and CDK constructs for stacks in Node Runner Blueprints
lib/constructs/config.interface.ts
- Interface classes to implement your own configuration module. Compatible withha-rpc-nodes-with-alb
andsingle-node
constructs (see below).lib/constructs/constants.ts
- Useful constants to use in configuration files and to set up infrastructure.lib/constructs/ha-rpc-nodes-with-alb.ts
- Provisions up to 4 identical EC2 instances to run nodes managed by an Auto Scaling Group and behind an Application Load Balancer.lib/constructs/single-node.ts
- Creates a single EC2 instance to run a blockchain node.lib/constructs/snapshots-bucket.ts
- Creates an S3 bucket to store a copy of blockchain node state to speed up syncing process.lib/constructs/amb-ethereum-single-node.ts
- Creates a single Ethereum node with Amazon Managed Blockchain Access.