Created
May 25, 2018 14:05
-
-
Save ajhodges/9da85d5e2360152ed1709e91ece75904 to your computer and use it in GitHub Desktop.
Prerequisites for AWS Blockchain for Ethereum
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"Description": "Template used to create the base network infrastructure for the Ethereum nodes", | |
"Outputs": { | |
"ALBSecurityGroup": { | |
"Description": "Security group for ETH ALB", | |
"Export": { | |
"Name": { | |
"Fn::Sub": "${AWS::StackName}-AlbSecurityGroup" | |
} | |
}, | |
"Value": { | |
"Ref": "EthAlbSecurityGroup" | |
} | |
}, | |
"EC2InstanceProfile": { | |
"Description": "Instance profile for ETH EC2", | |
"Export": { | |
"Name": { | |
"Fn::Sub": "${AWS::StackName}-Ec2InstanceProfile" | |
} | |
}, | |
"Value": { | |
"Fn::GetAtt": [ | |
"EthIamInstanceProfile", | |
"Arn" | |
] | |
} | |
}, | |
"EC2SecurityGroup": { | |
"Description": "Security group for ETH EC2", | |
"Export": { | |
"Name": { | |
"Fn::Sub": "${AWS::StackName}-Ec2SecurityGroup" | |
} | |
}, | |
"Value": { | |
"Ref": "EthEc2SecurityGroup" | |
} | |
}, | |
"ECSALBRole": { | |
"Description": "ALB Role for ETH Service", | |
"Export": { | |
"Name": { | |
"Fn::Sub": "${AWS::StackName}-EcsAlbRole" | |
} | |
}, | |
"Value": { | |
"Fn::GetAtt": [ | |
"EthEcsAlbRole", | |
"Arn" | |
] | |
} | |
}, | |
"StackName": { | |
"Value": { | |
"Fn::Sub": "${AWS::StackName}" | |
} | |
}, | |
"SubnetAPrivateId": { | |
"Description": "SubnetId for the private subnet in AZ A", | |
"Export": { | |
"Name": { | |
"Fn::Sub": "${AWS::StackName}-SubnetAPrivateID" | |
} | |
}, | |
"Value": { | |
"Ref": "EthSubnetAPrivate" | |
} | |
}, | |
"SubnetAPublicId": { | |
"Description": "SubnetId for the public subnet in AZ A", | |
"Export": { | |
"Name": { | |
"Fn::Sub": "${AWS::StackName}-SubnetAPublicID" | |
} | |
}, | |
"Value": { | |
"Ref": "EthSubnetAPublic" | |
} | |
}, | |
"SubnetBPrivateId": { | |
"Description": "SubnetId for the private subnet in AZ B", | |
"Export": { | |
"Name": { | |
"Fn::Sub": "${AWS::StackName}-SubnetBPrivateID" | |
} | |
}, | |
"Value": { | |
"Ref": "EthSubnetBPrivate" | |
} | |
}, | |
"SubnetBPublicId": { | |
"Description": "SubnetId for the public subnet in AZ B", | |
"Export": { | |
"Name": { | |
"Fn::Sub": "${AWS::StackName}-SubnetBPublicID" | |
} | |
}, | |
"Value": { | |
"Ref": "EthSubnetBPublic" | |
} | |
}, | |
"VpcId": { | |
"Description": "VpcId for the newly created VPC", | |
"Export": { | |
"Name": { | |
"Fn::Sub": "${AWS::StackName}-VPCID" | |
} | |
}, | |
"Value": { | |
"Ref": "EthVpc" | |
} | |
} | |
}, | |
"Parameters": { | |
"VpcCidr": { | |
"Description": "/16 Subnet to be used for this VPC (ex: 10.2)", | |
"Type": "String" | |
} | |
}, | |
"Resources": { | |
"ALBInboundFromALB": { | |
"Properties": { | |
"FromPort": -1, | |
"GroupId": { | |
"Ref": "EthAlbSecurityGroup" | |
}, | |
"IpProtocol": "-1", | |
"SourceSecurityGroupId": { | |
"Ref": "EthAlbSecurityGroup" | |
}, | |
"ToPort": -1 | |
}, | |
"Type": "AWS::EC2::SecurityGroupIngress" | |
}, | |
"ALBInboundFromEC2": { | |
"Properties": { | |
"FromPort": -1, | |
"GroupId": { | |
"Ref": "EthAlbSecurityGroup" | |
}, | |
"IpProtocol": "-1", | |
"SourceSecurityGroupId": { | |
"Ref": "EthEc2SecurityGroup" | |
}, | |
"ToPort": -1 | |
}, | |
"Type": "AWS::EC2::SecurityGroupIngress" | |
}, | |
"ALBOutboundToALB": { | |
"Properties": { | |
"DestinationSecurityGroupId": { | |
"Ref": "EthAlbSecurityGroup" | |
}, | |
"FromPort": -1, | |
"GroupId": { | |
"Ref": "EthAlbSecurityGroup" | |
}, | |
"IpProtocol": "-1", | |
"ToPort": -1 | |
}, | |
"Type": "AWS::EC2::SecurityGroupEgress" | |
}, | |
"ALBOutboundToEC2": { | |
"Properties": { | |
"DestinationSecurityGroupId": { | |
"Ref": "EthEc2SecurityGroup" | |
}, | |
"FromPort": -1, | |
"GroupId": { | |
"Ref": "EthAlbSecurityGroup" | |
}, | |
"IpProtocol": "-1", | |
"ToPort": -1 | |
}, | |
"Type": "AWS::EC2::SecurityGroupEgress" | |
}, | |
"EC2InboundFromALB": { | |
"Properties": { | |
"FromPort": -1, | |
"GroupId": { | |
"Ref": "EthEc2SecurityGroup" | |
}, | |
"IpProtocol": "-1", | |
"SourceSecurityGroupId": { | |
"Ref": "EthAlbSecurityGroup" | |
}, | |
"ToPort": -1 | |
}, | |
"Type": "AWS::EC2::SecurityGroupIngress" | |
}, | |
"EC2InboundFromEC2": { | |
"Properties": { | |
"FromPort": -1, | |
"GroupId": { | |
"Ref": "EthEc2SecurityGroup" | |
}, | |
"IpProtocol": "-1", | |
"SourceSecurityGroupId": { | |
"Ref": "EthEc2SecurityGroup" | |
}, | |
"ToPort": -1 | |
}, | |
"Type": "AWS::EC2::SecurityGroupIngress" | |
}, | |
"EC2OutboundToInternet": { | |
"Properties": { | |
"CidrIp": "0.0.0.0/0", | |
"FromPort": -1, | |
"GroupId": { | |
"Ref": "EthEc2SecurityGroup" | |
}, | |
"IpProtocol": "-1", | |
"ToPort": -1 | |
}, | |
"Type": "AWS::EC2::SecurityGroupEgress" | |
}, | |
"EthAclInPrivateAllowVpc": { | |
"Properties": { | |
"CidrBlock": "0.0.0.0/0", | |
"Egress": "false", | |
"NetworkAclId": { | |
"Ref": "EthPrivateAcl" | |
}, | |
"Protocol": -1, | |
"RuleAction": "allow", | |
"RuleNumber": 99 | |
}, | |
"Type": "AWS::EC2::NetworkAclEntry" | |
}, | |
"EthAclInPublicAllowAll": { | |
"Properties": { | |
"CidrBlock": "0.0.0.0/0", | |
"Egress": "false", | |
"NetworkAclId": { | |
"Ref": "EthPublicAcl" | |
}, | |
"Protocol": -1, | |
"RuleAction": "allow", | |
"RuleNumber": 99 | |
}, | |
"Type": "AWS::EC2::NetworkAclEntry" | |
}, | |
"EthAclOutPrivateAllowVpc": { | |
"Properties": { | |
"CidrBlock": "0.0.0.0/0", | |
"Egress": "true", | |
"NetworkAclId": { | |
"Ref": "EthPrivateAcl" | |
}, | |
"Protocol": -1, | |
"RuleAction": "allow", | |
"RuleNumber": 99 | |
}, | |
"Type": "AWS::EC2::NetworkAclEntry" | |
}, | |
"EthAclOutPublicAllowAll": { | |
"Properties": { | |
"CidrBlock": "0.0.0.0/0", | |
"Egress": "true", | |
"NetworkAclId": { | |
"Ref": "EthPublicAcl" | |
}, | |
"Protocol": -1, | |
"RuleAction": "allow", | |
"RuleNumber": 99 | |
}, | |
"Type": "AWS::EC2::NetworkAclEntry" | |
}, | |
"EthAlbSecurityGroup": { | |
"Properties": { | |
"GroupDescription": "Security group to manage access to ETH ALB", | |
"GroupName": "EthAlbSecurityGroup", | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::SecurityGroup" | |
}, | |
"EthEc2InstanceRole": { | |
"Properties": { | |
"AssumeRolePolicyDocument": { | |
"Statement": [ | |
{ | |
"Action": [ | |
"sts:AssumeRole" | |
], | |
"Effect": "Allow", | |
"Principal": { | |
"Service": [ | |
"ec2.amazonaws.com" | |
] | |
} | |
} | |
] | |
}, | |
"Path": "/", | |
"Policies": [ | |
{ | |
"PolicyDocument": { | |
"Statement": [ | |
{ | |
"Action": [ | |
"ecs:CreateCluster", | |
"ecs:DeregisterContainerInstance", | |
"ecs:DiscoverPollEndpoint", | |
"ecs:Poll", | |
"ecs:RegisterContainerInstance", | |
"ecs:StartTelemetrySession", | |
"ecs:Submit*", | |
"ecr:GetAuthorizationToken", | |
"ecr:BatchCheckLayerAvailability", | |
"ecr:GetDownloadUrlForLayer", | |
"ecr:BatchGetImage", | |
"logs:CreateLogStream", | |
"logs:PutLogEvents", | |
"dynamodb:BatchGetItem", | |
"dynamodb:BatchWriteItem", | |
"dynamodb:PutItem", | |
"dynamodb:DeleteItem", | |
"dynamodb:GetItem", | |
"dynamodb:Scan", | |
"dynamodb:Query", | |
"dynamodb:UpdateItem" | |
], | |
"Effect": "Allow", | |
"Resource": [ | |
"*" | |
] | |
} | |
] | |
}, | |
"PolicyName": "EthEc2InstanceRolePolicy" | |
} | |
] | |
}, | |
"Type": "AWS::IAM::Role" | |
}, | |
"EthEc2SecurityGroup": { | |
"Properties": { | |
"GroupDescription": "Security group to manage access to ETH EC2", | |
"GroupName": "EthEc2SecurityGroup", | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::SecurityGroup" | |
}, | |
"EthEcsAlbRole": { | |
"Properties": { | |
"AssumeRolePolicyDocument": { | |
"Statement": [ | |
{ | |
"Action": [ | |
"sts:AssumeRole" | |
], | |
"Effect": "Allow", | |
"Principal": { | |
"Service": [ | |
"ecs.amazonaws.com" | |
] | |
} | |
} | |
] | |
}, | |
"Path": "/", | |
"Policies": [ | |
{ | |
"PolicyDocument": { | |
"Statement": [ | |
{ | |
"Action": [ | |
"ecs:DescribeServices", | |
"ecs:UpdateService", | |
"cloudwatch:PutMetricAlarm", | |
"cloudwatch:DescribeAlarms", | |
"cloudwatch:DeleteAlarms", | |
"ec2:AuthorizeSecurityGroupIngress", | |
"ec2:Describe*", | |
"elasticloadbalancing:DeregisterInstancesFromLoadBalancer", | |
"elasticloadbalancing:DeregisterTargets", | |
"elasticloadbalancing:Describe*", | |
"elasticloadbalancing:RegisterInstancesWithLoadBalancer", | |
"elasticloadbalancing:RegisterTargets" | |
], | |
"Effect": "Allow", | |
"Resource": [ | |
"*" | |
] | |
} | |
] | |
}, | |
"PolicyName": "EthEcsTaskExecutionRolePolicy" | |
} | |
] | |
}, | |
"Type": "AWS::IAM::Role" | |
}, | |
"EthIamInstanceProfile": { | |
"Properties": { | |
"Roles": [ | |
{ | |
"Ref": "EthEc2InstanceRole" | |
} | |
] | |
}, | |
"Type": "AWS::IAM::InstanceProfile" | |
}, | |
"EthInternetGateway": { | |
"Properties": { | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthInternetGateway" | |
} | |
] | |
}, | |
"Type": "AWS::EC2::InternetGateway" | |
}, | |
"EthPrivateAcl": { | |
"Properties": { | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthPrivateAcl" | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::NetworkAcl" | |
}, | |
"EthPrivateRouteA": { | |
"Properties": { | |
"DestinationCidrBlock": "0.0.0.0/0", | |
"NatGatewayId": { | |
"Ref": "NatGatewayA" | |
}, | |
"RouteTableId": { | |
"Ref": "EthRouteTableAPrivate" | |
} | |
}, | |
"Type": "AWS::EC2::Route" | |
}, | |
"EthPrivateRouteB": { | |
"Properties": { | |
"DestinationCidrBlock": "0.0.0.0/0", | |
"NatGatewayId": { | |
"Ref": "NatGatewayB" | |
}, | |
"RouteTableId": { | |
"Ref": "EthRouteTableBPrivate" | |
} | |
}, | |
"Type": "AWS::EC2::Route" | |
}, | |
"EthPublicAcl": { | |
"Properties": { | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthPublicAcl" | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::NetworkAcl" | |
}, | |
"EthPublicInternetRouteA": { | |
"DependsOn": "EthVpcGateway", | |
"Properties": { | |
"DestinationCidrBlock": "0.0.0.0/0", | |
"GatewayId": { | |
"Ref": "EthInternetGateway" | |
}, | |
"RouteTableId": { | |
"Ref": "EthRouteTableAPublic" | |
} | |
}, | |
"Type": "AWS::EC2::Route" | |
}, | |
"EthPublicInternetRouteB": { | |
"DependsOn": "EthVpcGateway", | |
"Properties": { | |
"DestinationCidrBlock": "0.0.0.0/0", | |
"GatewayId": { | |
"Ref": "EthInternetGateway" | |
}, | |
"RouteTableId": { | |
"Ref": "EthRouteTableBPublic" | |
} | |
}, | |
"Type": "AWS::EC2::Route" | |
}, | |
"EthRouteTableAPrivate": { | |
"Properties": { | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthRouteTableAPrivate" | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::RouteTable" | |
}, | |
"EthRouteTableAPrivateAssociation": { | |
"Properties": { | |
"RouteTableId": { | |
"Ref": "EthRouteTableAPrivate" | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetAPrivate" | |
} | |
}, | |
"Type": "AWS::EC2::SubnetRouteTableAssociation" | |
}, | |
"EthRouteTableAPublic": { | |
"Properties": { | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthRouteTableAPublic" | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::RouteTable" | |
}, | |
"EthRouteTableAPublicAssociation": { | |
"Properties": { | |
"RouteTableId": { | |
"Ref": "EthRouteTableAPublic" | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetAPublic" | |
} | |
}, | |
"Type": "AWS::EC2::SubnetRouteTableAssociation" | |
}, | |
"EthRouteTableBPrivate": { | |
"Properties": { | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthRouteTableBPrivate" | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::RouteTable" | |
}, | |
"EthRouteTableBPrivateAssociation": { | |
"Properties": { | |
"RouteTableId": { | |
"Ref": "EthRouteTableBPrivate" | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetBPrivate" | |
} | |
}, | |
"Type": "AWS::EC2::SubnetRouteTableAssociation" | |
}, | |
"EthRouteTableBPublic": { | |
"Properties": { | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthRouteTableBPublic" | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::RouteTable" | |
}, | |
"EthRouteTableBPublicAssociation": { | |
"Properties": { | |
"RouteTableId": { | |
"Ref": "EthRouteTableBPublic" | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetBPublic" | |
} | |
}, | |
"Type": "AWS::EC2::SubnetRouteTableAssociation" | |
}, | |
"EthSubnetAPrivate": { | |
"Properties": { | |
"AvailabilityZone": { | |
"Fn::Select": [ | |
0, | |
{ | |
"Fn::GetAZs": "" | |
} | |
] | |
}, | |
"CidrBlock": { | |
"Fn::Sub": "${VpcCidr}.16.0/20" | |
}, | |
"MapPublicIpOnLaunch": "false", | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthSubnetAPrivate" | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::Subnet" | |
}, | |
"EthSubnetAPublic": { | |
"Properties": { | |
"AvailabilityZone": { | |
"Fn::Select": [ | |
0, | |
{ | |
"Fn::GetAZs": "" | |
} | |
] | |
}, | |
"CidrBlock": { | |
"Fn::Sub": "${VpcCidr}.0.0/20" | |
}, | |
"MapPublicIpOnLaunch": "true", | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthSubnetAPublic" | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::Subnet" | |
}, | |
"EthSubnetAclAPrivate": { | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "EthPrivateAcl" | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetAPrivate" | |
} | |
}, | |
"Type": "AWS::EC2::SubnetNetworkAclAssociation" | |
}, | |
"EthSubnetAclAPublic": { | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "EthPublicAcl" | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetAPublic" | |
} | |
}, | |
"Type": "AWS::EC2::SubnetNetworkAclAssociation" | |
}, | |
"EthSubnetAclBPrivate": { | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "EthPrivateAcl" | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetBPrivate" | |
} | |
}, | |
"Type": "AWS::EC2::SubnetNetworkAclAssociation" | |
}, | |
"EthSubnetAclBPublic": { | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "EthPublicAcl" | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetBPublic" | |
} | |
}, | |
"Type": "AWS::EC2::SubnetNetworkAclAssociation" | |
}, | |
"EthSubnetBPrivate": { | |
"Properties": { | |
"AvailabilityZone": { | |
"Fn::Select": [ | |
1, | |
{ | |
"Fn::GetAZs": "" | |
} | |
] | |
}, | |
"CidrBlock": { | |
"Fn::Sub": "${VpcCidr}.48.0/20" | |
}, | |
"MapPublicIpOnLaunch": "false", | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": { | |
"Fn::Sub": "EthSubnetBPrivate" | |
} | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::Subnet" | |
}, | |
"EthSubnetBPublic": { | |
"Properties": { | |
"AvailabilityZone": { | |
"Fn::Select": [ | |
1, | |
{ | |
"Fn::GetAZs": "" | |
} | |
] | |
}, | |
"CidrBlock": { | |
"Fn::Sub": "${VpcCidr}.32.0/20" | |
}, | |
"MapPublicIpOnLaunch": "true", | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthSubnetBPublic" | |
} | |
], | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::Subnet" | |
}, | |
"EthVpc": { | |
"Properties": { | |
"CidrBlock": { | |
"Fn::Sub": "${VpcCidr}.0.0/16" | |
}, | |
"EnableDnsHostnames": "true", | |
"EnableDnsSupport": "true", | |
"Tags": [ | |
{ | |
"Key": "Name", | |
"Value": "EthVpc" | |
} | |
] | |
}, | |
"Type": "AWS::EC2::VPC" | |
}, | |
"EthVpcGateway": { | |
"Properties": { | |
"InternetGatewayId": { | |
"Ref": "EthInternetGateway" | |
}, | |
"VpcId": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::VPCGatewayAttachment" | |
}, | |
"NatEIPA": { | |
"DependsOn": "EthVpcGateway", | |
"Properties": { | |
"Domain": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::EIP" | |
}, | |
"NatEIPB": { | |
"DependsOn": "EthVpcGateway", | |
"Properties": { | |
"Domain": { | |
"Ref": "EthVpc" | |
} | |
}, | |
"Type": "AWS::EC2::EIP" | |
}, | |
"NatGatewayA": { | |
"Properties": { | |
"AllocationId": { | |
"Fn::GetAtt": [ | |
"NatEIPA", | |
"AllocationId" | |
] | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetAPublic" | |
} | |
}, | |
"Type": "AWS::EC2::NatGateway" | |
}, | |
"NatGatewayB": { | |
"Properties": { | |
"AllocationId": { | |
"Fn::GetAtt": [ | |
"NatEIPB", | |
"AllocationId" | |
] | |
}, | |
"SubnetId": { | |
"Ref": "EthSubnetBPublic" | |
} | |
}, | |
"Type": "AWS::EC2::NatGateway" | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello ajhodges,
I am trying to use your template and based resources were created successfully.
When I try to create the Ethereum network using AWS template as explained in the tutorial, I am failing with the error below.
Couple of questions:
1- Which PKI key to use to access the resources (I reused the one I created)
2- You also have Network A and B public and private in your template. Whic one to use for AWS template
Any help to build this network successfully would be appreciated.
5 more events available to display
07:05:21 UTC-0500ROLLBACK_IN_PROGRESSAWS::CloudFormation::StackNATEthereumNetThe following resource(s) failed to create: [EthereumCommonStack]. . Rollback requested by user.07:05:21 UTC-0500CREATE_FAILEDAWS::CloudFormation::StackEthereumCommonStackEmbedded stack arn:aws:cloudformation:us-east-1:332195192401:stack/NATEthereumNet-EthereumCommonStack-9I0ZKV7O5CJ/54bc4010-f0aa-11e8-8e02-0a0bad6f0bfa was not successfully created: The following resource(s) failed to create: [EthereumECSStack]. | | 07:05:21 UTC-0500 | ROLLBACK_IN_PROGRESS | AWS::CloudFormation::Stack | NATEthereumNet | The following resource(s) failed to create: [EthereumCommonStack]. . Rollback requested by user. | | 07:05:21 UTC-0500 | CREATE_FAILED | AWS::CloudFormation::Stack | EthereumCommonStack | Embedded stack arn:aws:cloudformation:us-east-1:332195192401:stack/NATEthereumNet-EthereumCommonStack-9I0ZKV7O5CJ/54bc4010-f0aa-11e8-8e02-0a0bad6f0bfa was not successfully created: The following resource(s) failed to create: [EthereumECSStack].
| 07:05:21 UTC-0500 | ROLLBACK_IN_PROGRESS | AWS::CloudFormation::Stack | NATEthereumNet | The following resource(s) failed to create: [EthereumCommonStack]. . Rollback requested by user.
| 07:05:21 UTC-0500 | CREATE_FAILED | AWS::CloudFormation::Stack | EthereumCommonStack | Embedded stack arn:aws:cloudformation:us-east-1:332195192401:stack/NATEthereumNet-EthereumCommonStack-9I0ZKV7O5CJ/54bc4010-f0aa-11e8-8e02-0a0bad6f0bfa was not successfully created: The following resource(s) failed to create: [EthereumECSStack].
Thank you