Created
March 30, 2016 01:56
-
-
Save Twinuma/cce97a2c86c00aca41d35c5e7ce718ff to your computer and use it in GitHub Desktop.
elasticbeanstalk in vpc bestpractice template for development
This file contains 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
{ | |
"AWSTemplateFormatVersion": "2010-09-09", | |
"Description": "ElasticBeanstalk in VPC Bestpractice Template For MonstarLab,Inc.", | |
"Parameters": { | |
"SSHLocation" : { | |
"Description" : " The IP address range that can be used to SSH to the EC2 instances", | |
"Type": "String", | |
"MinLength": "9", | |
"MaxLength": "18", | |
"Default": "0.0.0.0/0", | |
"AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", | |
"ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." | |
}, | |
"VPCName": { | |
"Description": "select your VPC Name", | |
"Type": "String", | |
"Default": "dev-vpc", | |
"AllowedValues" : [ | |
"dev-vpc", | |
"stg-vpc", | |
"prod-vpc" | |
], | |
"ConstraintDescription" : "" | |
}, | |
"VPCCidr": { | |
"Description": "input your VPC cidr", | |
"Type": "String", | |
"Default": "10.2.0.0/16", | |
"AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/16", | |
"ConstraintDescription": "" | |
}, | |
"FrontendSubnetACidr": { | |
"Description": "input your VPC FrontendSubnetA cidr", | |
"Type": "String", | |
"Default": "10.2.10.0/24", | |
"AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/24", | |
"ConstraintDescription": "" | |
}, | |
"FrontendSubnetCCidr": { | |
"Description": "input your VPC FrontendSubnetC cidr", | |
"Type": "String", | |
"Default": "10.2.20.0/24", | |
"AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/24", | |
"ConstraintDescription": "" | |
}, | |
"BackendSubnetACidr": { | |
"Description": "input your VPC BackendSubnetA cidr", | |
"Type": "String", | |
"Default": "10.2.50.0/24", | |
"AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/24", | |
"ConstraintDescription": "" | |
}, | |
"BackendSubnetCCidr": { | |
"Description": "input your VPC BackendSubnetC cidr", | |
"Type": "String", | |
"Default": "10.2.60.0/24", | |
"AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/24", | |
"ConstraintDescription": "" | |
} | |
}, | |
"Conditions" : {}, | |
"Mappings": {}, | |
"Resources": { | |
"VPC" : { | |
"Type" : "AWS::EC2::VPC", | |
"Properties" : { | |
"CidrBlock" : {"Ref": "VPCCidr"}, | |
"EnableDnsSupport" : "true", | |
"EnableDnsHostnames" : "true", | |
"InstanceTenancy" : "default", | |
"Tags" : [ | |
{"Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } }, | |
{"Key" : "Network", "Value" : "Public" }, | |
{"Key" : "Name", "Value" : { "Ref" : "VPCName" } } | |
] | |
} | |
}, | |
"InternetGateway" : { | |
"Type" : "AWS::EC2::InternetGateway", | |
"Properties" : { | |
"Tags" : [ | |
{"Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } }, | |
{"Key" : "Network", "Value" : "Public" }, | |
{"Key" : "Name", "Value" : "vpc-igw" } | |
] | |
} | |
}, | |
"AttachGateway" : { | |
"Type" : "AWS::EC2::VPCGatewayAttachment", | |
"Properties" : { | |
"VpcId" : {"Ref" : "VPC"}, | |
"InternetGatewayId" : {"Ref" : "InternetGateway"} | |
} | |
}, | |
"PublicRouteTable" : { | |
"Type" : "AWS::EC2::RouteTable", | |
"DependsOn" : "AttachGateway", | |
"Properties" : { | |
"VpcId" : { "Ref" : "VPC" }, | |
"Tags" : [ | |
{"Key" : "Application", "Value" : { "Ref" : "AWS::StackId"} }, | |
{"Key" : "Network", "Value" : "Public" }, | |
{"Key" : "Name", "Value" : "public-route-table" } | |
] | |
} | |
}, | |
"PrivateRouteTable" : { | |
"Type" : "AWS::EC2::RouteTable", | |
"DependsOn" : "AttachGateway", | |
"Properties" : { | |
"VpcId" : { "Ref" : "VPC" }, | |
"Tags" : [ | |
{ "Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } }, | |
{ "Key" : "Network", "Value" : "Private" }, | |
{"Key" : "Name", "Value" : "private-route-table" } | |
] | |
} | |
}, | |
"PublicRoute" : { | |
"Type" : "AWS::EC2::Route", | |
"DependsOn" : "AttachGateway", | |
"Properties" : { | |
"RouteTableId" : { "Ref" : "PublicRouteTable" }, | |
"DestinationCidrBlock" : "0.0.0.0/0", | |
"GatewayId" : { "Ref" : "InternetGateway" } | |
} | |
}, | |
"FrontendSubnetA": { | |
"Type": "AWS::EC2::Subnet", | |
"DependsOn" : "AttachGateway", | |
"Properties" : { | |
"VpcId": { "Ref": "VPC" }, | |
"AvailabilityZone" : "ap-northeast-1a", | |
"CidrBlock": {"Ref": "FrontendSubnetACidr"}, | |
"MapPublicIpOnLaunch" : true, | |
"Tags" : [ | |
{"Key" : "Application", "Value" : { "Ref" : "AWS::StackId"} }, | |
{"Key" : "Network", "Value" : "Public" }, | |
{"Key" : "Name", "Value" : "front-a" } | |
] | |
} | |
}, | |
"FrontendSubnetC": { | |
"Type": "AWS::EC2::Subnet", | |
"DependsOn" : "AttachGateway", | |
"Properties": { | |
"VpcId": { "Ref": "VPC" }, | |
"AvailabilityZone" : "ap-northeast-1c", | |
"CidrBlock": {"Ref": "FrontendSubnetCCidr"}, | |
"MapPublicIpOnLaunch" : true, | |
"Tags" : [ | |
{"Key" : "Application", "Value" : { "Ref" : "AWS::StackId"} }, | |
{"Key" : "Network", "Value" : "Public" }, | |
{"Key" : "Name", "Value" : "front-c" } | |
] | |
} | |
}, | |
"BackendSubnetA" : { | |
"Type" : "AWS::EC2::Subnet", | |
"DependsOn" : "AttachGateway", | |
"Properties" : { | |
"VpcId" : { "Ref" : "VPC" }, | |
"CidrBlock" : {"Ref": "BackendSubnetACidr"}, | |
"AvailabilityZone" : "ap-northeast-1a", | |
"Tags" : [ | |
{"Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } }, | |
{"Key" : "Network", "Value" : "Private" }, | |
{"Key" : "Name", "Value" : "backend-a" } | |
] | |
} | |
}, | |
"BackendSubnetC" : { | |
"Type" : "AWS::EC2::Subnet", | |
"DependsOn" : "AttachGateway", | |
"Properties" : { | |
"VpcId" : { "Ref" : "VPC" }, | |
"CidrBlock" : {"Ref": "BackendSubnetCCidr"}, | |
"AvailabilityZone" : "ap-northeast-1c", | |
"Tags" : [ | |
{"Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } }, | |
{"Key" : "Network", "Value" : "Private" }, | |
{"Key" : "Name", "Value" : "backend-c" } | |
] | |
} | |
}, | |
"FrontendSubnetARouteTableAssociation" : { | |
"Type" : "AWS::EC2::SubnetRouteTableAssociation", | |
"Properties" : { | |
"SubnetId" : { "Ref" : "FrontendSubnetA" }, | |
"RouteTableId" : { "Ref" : "PublicRouteTable" } | |
} | |
}, | |
"FrontendSubnetCRouteTableAssociation" : { | |
"Type" : "AWS::EC2::SubnetRouteTableAssociation", | |
"Properties" : { | |
"SubnetId" : { "Ref" : "FrontendSubnetC" }, | |
"RouteTableId" : { "Ref" : "PublicRouteTable" } | |
} | |
}, | |
"SSHSecurityGroup" : { | |
"Type" : "AWS::EC2::SecurityGroup", | |
"Properties" : { | |
"VpcId" : { "Ref" : "VPC" }, | |
"GroupDescription" : "Enable SSH access via port 22", | |
"SecurityGroupIngress" : [ | |
{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" } } | |
], | |
"Tags" : [ | |
{"Key" : "Name", "Value" : "ssh-only" } | |
] | |
} | |
}, | |
"ELBSecurityGroup1" : { | |
"Type" : "AWS::EC2::SecurityGroup", | |
"Properties" : { | |
"VpcId" : { "Ref" : "VPC" }, | |
"GroupDescription" : "ELB SECURITY GROUP", | |
"SecurityGroupIngress" : [ | |
{ "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0" }, | |
{ "IpProtocol" : "tcp", "FromPort" : "443", "ToPort" : "443", "CidrIp" : "0.0.0.0/0" } | |
], | |
"Tags" : [ | |
{"Key" : "Name", "Value" : "elb-sg" } | |
] | |
} | |
}, | |
"ELBSecurityGroup2" : { | |
"Type" : "AWS::EC2::SecurityGroup", | |
"Properties" : { | |
"VpcId" : { "Ref" : "VPC" }, | |
"GroupDescription" : "ADMIN ELB SECURITY GROUP", | |
"SecurityGroupIngress" : [ | |
{ "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0" }, | |
{ "IpProtocol" : "tcp", "FromPort" : "443", "ToPort" : "443", "CidrIp" : "0.0.0.0/0" } | |
], | |
"Tags" : [ | |
{"Key" : "Name", "Value" : "admin-elb-sg" } | |
] | |
} | |
}, | |
"WEBAPPSecurityGroup1" : { | |
"Type" : "AWS::EC2::SecurityGroup", | |
"Properties" : { | |
"VpcId" : {"Ref" : "VPC"}, | |
"GroupDescription" : "WEBAPP SECURITY GROUP", | |
"SecurityGroupIngress" : [ | |
{ "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "SourceSecurityGroupId": {"Fn::GetAtt": ["ELBSecurityGroup1", "GroupId"]}}, | |
{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "SourceSecurityGroupId": {"Fn::GetAtt": ["SSHSecurityGroup", "GroupId"]}} | |
], | |
"Tags" : [ | |
{"Key" : "Name", "Value" : "web-sg" } | |
] | |
} | |
}, | |
"WEBAPPSecurityGroup2" : { | |
"Type" : "AWS::EC2::SecurityGroup", | |
"Properties" : { | |
"VpcId" : {"Ref" : "VPC"}, | |
"GroupDescription" : "ADMIN WEBAPP SECURITY GROUP", | |
"SecurityGroupIngress" : [ | |
{ "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "SourceSecurityGroupId": {"Fn::GetAtt": ["ELBSecurityGroup2", "GroupId"]}}, | |
{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "SourceSecurityGroupId": {"Fn::GetAtt": ["SSHSecurityGroup", "GroupId"]}} | |
], | |
"Tags" : [ | |
{"Key" : "Name", "Value" : "admin-web-sg" } | |
] | |
} | |
}, | |
"DBSecurityGroupForMySQL" : { | |
"Type" : "AWS::EC2::SecurityGroup", | |
"Properties" : { | |
"VpcId" : {"Ref" : "VPC"}, | |
"GroupDescription" : "DB SECURITY GROUP", | |
"SecurityGroupIngress" : [ | |
{ "IpProtocol" : "tcp", "FromPort" : "3306", "ToPort" : "3306", "SourceSecurityGroupId": {"Fn::GetAtt": ["WEBAPPSecurityGroup1", "GroupId"]}}, | |
{ "IpProtocol" : "tcp", "FromPort" : "3306", "ToPort" : "3306", "SourceSecurityGroupId": {"Fn::GetAtt": ["WEBAPPSecurityGroup2", "GroupId"]}} | |
], | |
"Tags" : [ | |
{"Key" : "Name", "Value" : "mysql-db-sg" } | |
] | |
} | |
}, | |
"DBSecurityGroupForPostgreSQL" : { | |
"Type" : "AWS::EC2::SecurityGroup", | |
"Properties" : { | |
"VpcId" : {"Ref" : "VPC"}, | |
"GroupDescription" : "DB SECURITY GROUP", | |
"SecurityGroupIngress" : [ | |
{ "IpProtocol" : "tcp", "FromPort" : "5432", "ToPort" : "5432", "SourceSecurityGroupId": {"Fn::GetAtt": ["WEBAPPSecurityGroup1", "GroupId"]}}, | |
{ "IpProtocol" : "tcp", "FromPort" : "5432", "ToPort" : "5432", "SourceSecurityGroupId": {"Fn::GetAtt": ["WEBAPPSecurityGroup2", "GroupId"]}} | |
], | |
"Tags" : [ | |
{"Key" : "Name", "Value" : "postgre-db-sg" } | |
] | |
} | |
}, | |
"CACHESecurityGroupForMemcached" : { | |
"Type" : "AWS::EC2::SecurityGroup", | |
"Properties" : { | |
"VpcId" : {"Ref" : "VPC"}, | |
"GroupDescription" : "CACHE SECURITY GROUP for Memcached", | |
"SecurityGroupIngress" : [ | |
{ "IpProtocol" : "tcp", "FromPort" : "11212", "ToPort" : "11212", "SourceSecurityGroupId": {"Fn::GetAtt": ["WEBAPPSecurityGroup1", "GroupId"]}} | |
], | |
"Tags" : [ | |
{"Key" : "Name", "Value" : "memcached-cache-sg" } | |
] | |
} | |
}, | |
"CACHESecurityGroupforRedis" : { | |
"Type" : "AWS::EC2::SecurityGroup", | |
"Properties" : { | |
"VpcId" : {"Ref" : "VPC"}, | |
"GroupDescription" : "CACHE SECURITY GROUP for Redis", | |
"SecurityGroupIngress" : [ | |
{ "IpProtocol" : "tcp", "FromPort" : "6379", "ToPort" : "6379", "SourceSecurityGroupId": {"Fn::GetAtt": ["WEBAPPSecurityGroup1", "GroupId"]}} | |
], | |
"Tags" : [ | |
{"Key" : "Name", "Value" : "redis-cache-sg" } | |
] | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment