Skip to content

SCB-TechX-Saber-Labs/terraform-aws-ecs-private-ethereum-blockchain

Repository files navigation

terraform-aws-ecs-private-ethereum-blockchain

A terraform module to setup a private Ethereum network, using Go Ethereum, including Ethereum Network Stats and Ethereum Lite Explorer on Amazon ECS.

Usage

module "private_ethereum" {
    source                  = "SCB-TechX-Saber-Labs/ecs-private-ethereum-blockchain/aws"
    version                 = "0.1.0"

    region                  = "ap-southeast-1"

    network_name            = "devel"

    subnet_ids              = [
        "subnet-0d3dd066f35696746",
        "subnet-0233a4b40b131621b",
        "subnet-05580a63c0e79abd2"
    ]

    is_public_subnets       = false

    vpc_id                  = "vpc-0204ec5c6f7ad746e"

    initial_eth_allocations = {
        "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7": "100"
    }

}

output "status" {
    value = module.private_ethereum._status
}

output "chain_id" {
     value = module.private_ethereum.chain_id
}

output "ecs_cluster_name" {
     value = module.private_ethereum.ecs_cluster_name
}

output "ethereum_explorer_endpoint" {
     value = module.private_ethereum.ethereum_explorer_endpoint
}

output "ethstats_endpoint" {
     value = module.private_ethereum.ethstats_endpoint
}

output "geth_rpc_endpoint" {
     value = module.private_ethereum.geth_rpc_endpoint
}

output "nlb_dns" {
     value = module.private_ethereum.nlb_dns
}

Requirements

Name Version
terraform ~> 1.0

Providers

Name Version
hashicorp/aws ~> 4
hashicorp/local ~> 2.1
hashicorp/random ~> 3.1

Modules

No modules.

Resources

Name Type
aws_cloudwatch_log_group.go_ethereum resource
aws_ecs_cluster.ethereum resource
aws_ecs_service.ethereum_explorer resource
aws_ecs_service.ethstats resource
aws_ecs_service.go_ethereum resource
aws_ecs_task_definition.ethereum_explorer resource
aws_ecs_task_definition.ethstats resource
aws_ecs_task_definition.go_ethereum resource
aws_iam_policy.ecs_task resource
aws_iam_role.ecs_task resource
aws_iam_role_policy_attachment.ecs_task_cloudwatch resource
aws_iam_role_policy_attachment.ecs_task_execution resource
aws_iam_role_policy_attachment.ecs_task_s3 resource
aws_lb.nlb_ethereum resource
aws_lb_listener.nlb_listener_ethereum_explorer resource
aws_lb_listener.nlb_listener_ethstats resource
aws_lb_listener.nlb_listener_go_ethereum resource
aws_lb_target_group.nlb_tg_ethereum_explorer resource
aws_lb_target_group.nlb_tg_ethstats resource
aws_lb_target_group.nlb_tg_go_ethereum resource
aws_s3_bucket.ethereum resource
aws_security_group.ethereum_exlorer resource
aws_security_group.ethstats resource
aws_security_group.go_ethereum resource
random_id.bucket_postfix resource
random_id.ethstat_secret resource
random_integer.network_id resource
aws_caller_identity.this data source
aws_iam_policy_document.bucket_policy data source
aws_iam_policy_document.ecs_task data source

Inputs

Name Description Type Default Required
aws_cli_docker_image The AWS CLI image to work with AWS services string "amazon/aws-cli" no
ethereum_explorer_port The port number to expose the ethereum explorer endpoint number 80 no
ethereum_lite_explorer_docker_image The Ethereum Lite Explorer docker image string "alethio/ethereum-lite-explorer:v1.0.0-beta.10" no
ethstats_docker_image The Ethereum ethstats monitoring tool docker image string "puppeth/ethstats:latest" no
ethstats_port The port number to expose the ethstats endpoint number 3000 no
go_ethereum_docker_image The Go Ethereum docker image to run Ethereum client node string "ethereum/client-go:alltools-v1.10.8" no
go_ethereum_p2p_port The port number to expose the ethereum rpc endpoint number 21000 no
go_ethereum_rpc_port The port number for ethereum p2p communication number 22000 no
initial_eth_allocations The map of wallet addresses and amounts in ETH to allocate the initial funds map {} no
is_public_subnets Indicate that if subnets supplied in subnet_ids are public subnets bool n/a yes
network_name The network name to distinguish this deployment from others string n/a yes
number_of_nodes Number of Ethereum nodes number 2 no
region The target AWS region string n/a yes
subnet_ids The AWS subnets for ECS tasks deployments and Load Balancer provisioning list n/a yes
vpc_id The target AWS VPC string n/a yes

Outputs

Name Description
_status n/a
chain_id n/a
ecs_cluster_name n/a
ethereum_explorer_endpoint n/a
ethstats_endpoint n/a
geth_rpc_endpoint n/a
nlb_dns n/a

Credits

This terraform module is modified from the ConsenSys's Quorum Cloud repository.