我想为具有自动扩展功能的AWS ECS集群创建云形成脚本。
我尝试通过控制台进行创建,然后从AWS Cloud形成复制了生成的Cloud Formation脚本。
AWSTemplateFormatVersion: 2010-09-09
Description: >
AWS CloudFormation template to create a new VPC or use an existing VPC for ECS
deployment in Create Cluster Wizard. Requires exactly 1 Instance Types for a
Spot Request.
Parameters:
EcsClusterName:
Type: String
Description: >
Specifies the ECS Cluster Name with which the resources would be
associated
Default: default
KeyName:
Type: String
Description: >
Optional - Specifies the name of an existing Amazon EC2 key pair to enable
SSH access to the EC2 instances in your cluster.
Default: ''
VpcId:
Type: String
Description: >
Optional - Specifies the ID of an existing VPC in which to launch your
container instances. If you specify a VPC ID, you must specify a list of
existing subnets in that VPC. If you do not specify a VPC ID, a new VPC is
created with atleast 1 subnet.
Default: ''
ConstraintDescription: |
VPC Id must begin with 'vpc-' or leave blank to have a new VPC created
SecurityGroupId:
Type: String
Description: >
Optional - Specifies the Security Group Id of an existing Security Group.
Leave blank to have a new Security Group created
Default: ''
AsgMaxSize:
Type: Number
Description: >
Specifies the number of instances to launch and register to the cluster.
Defaults to 1.
Default: '1'
SecurityIngressFromPort:
Type: Number
Description: >
Optional - Specifies the Start of Security Group port to open on ECS
instances - defaults to port 0
Default: '0'
SecurityIngressToPort:
Type: Number
Description: >
Optional - Specifies the End of Security Group port to open on ECS
instances - defaults to port 65535
Default: '65535'
SecurityIngressCidrIp:
Type: String
Description: >
Optional - Specifies the CIDR/IP range for Security Ports - defaults to
0.0.0.0/0
Default: 0.0.0.0/0
EcsEndpoint:
Type: String
Description: |
Optional - Specifies the ECS Endpoint for the ECS Agent to connect to
Default: ''
DeviceName:
Type: String
Description: Optional - Specifies the device mapping for the Volume
UserData:
Type: String
IsWindows:
Type: String
Default: 'false'
Conditions:
CreateEC2LCWithKeyPair: !Not
- !Equals
- Ref: KeyName
- ''
SetEndpointToECSAgent: !Not
- !Equals
- !Ref EcsEndpoint
- ''
CreateNewSecurityGroup: !Equals
- Ref: SecurityGroupId
- ''
CreateNewVpc: !Equals
- Ref: VpcId
- ''
Resources:
Vpc:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: 'true'
EnableDnsHostnames: 'true'
Metadata:
'AWS::CloudFormation::Designer':
id: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
PubSubnetAz1:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref Vpc
CidrBlock: 10.0.1.0/24
AvailabilityZone: 'ap-southeast-1a'
MapPublicIpOnLaunch: true
Metadata:
'AWS::CloudFormation::Designer':
id: 6c7ca021-4114-4ec8-acf8-4f103ff7011f
PubSubnetAz2:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref Vpc
CidrBlock: 10.0.2.0/24
AvailabilityZone: 'ap-southeast-1b'
MapPublicIpOnLaunch: true
Metadata:
'AWS::CloudFormation::Designer':
id: cfe07e5c-e00f-4918-b877-f567fa08c802
InternetGateway:
Type: 'AWS::EC2::InternetGateway'
Metadata:
'AWS::CloudFormation::Designer':
id: 46bddd21-3027-4ccb-9e5d-ebf887429453
AttachGateway:
Type: 'AWS::EC2::VPCGatewayAttachment'
Properties:
VpcId: !Ref Vpc
InternetGatewayId: !Ref InternetGateway
Metadata:
'AWS::CloudFormation::Designer':
id: 11b7e802-d5ba-437a-8695-4bd5406d4db7
RouteViaIgw:
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId: !Ref Vpc
Metadata:
'AWS::CloudFormation::Designer':
id: 1a2f2b53-09d3-4c2c-8286-295870b8c602
PublicRouteViaIgw:
Type: 'AWS::EC2::Route'
DependsOn:
- AttachGateway
Properties:
RouteTableId: !Ref RouteViaIgw
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway
Metadata:
'AWS::CloudFormation::Designer':
id: 4b7c941a-8498-4e70-886b-9339018cc18a
PubSubnet1RouteTableAssociation:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
SubnetId: !Ref PubSubnetAz1
RouteTableId: !Ref RouteViaIgw
Metadata:
'AWS::CloudFormation::Designer':
id: cea0d60a-6d91-4922-90ea-f6db9f4378a9
PubSubnet2RouteTableAssociation:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
SubnetId: !Ref PubSubnetAz2
RouteTableId: !Ref RouteViaIgw
Metadata:
'AWS::CloudFormation::Designer':
id: c3b3c8e1-a9c8-47c6-8d26-b6f272bcd9e1
EcsSecurityGroup:
Condition: CreateNewSecurityGroup
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: ECS Allowed Ports
SecurityGroupIngress:
IpProtocol: tcp
FromPort: !Ref SecurityIngressFromPort
ToPort: !Ref SecurityIngressToPort
CidrIp: !Ref SecurityIngressCidrIp
Metadata:
'AWS::CloudFormation::Designer':
id: 493fdb30-54ce-4e4e-9cd6-c9faa6e3f93b
EcsInstanceLc:
# DependsOn
Type: 'AWS::AutoScaling::LaunchConfiguration'
Properties:
ImageId: 'ami-050865a806e0dae53'
InstanceType: 't2.large'
# AssociatePublicIpAddress: false
SecurityGroups:
- !If
- CreateNewSecurityGroup
- !Ref EcsSecurityGroup
- !Ref SecurityGroupId
# BlockDeviceMappings:
# - DeviceName: !Ref DeviceName
# Ebs:
# VolumeSize: '22'
# VolumeType: 'standard'
# UserData:
# 'Fn::Base64': !Ref UserData
Metadata:
'AWS::CloudFormation::Designer':
id: 0e8e3b5a-7b14-4ffc-92af-ef9be7e51689
EcsInstanceAsg:
Type: 'AWS::AutoScaling::AutoScalingGroup'
Properties:
LaunchConfigurationName: !Ref EcsInstanceLc
AvailabilityZones:
- ap-southeast-1a
- ap-southeast-1b
MinSize: '2'
MaxSize: '3'
DesiredCapacity: '2'
Tags:
- Key: Name
Value: !Sub 'ECS Instance - ${AWS::StackName}'
PropagateAtLaunch: 'true'
- Key: Description
Value: >-
This instance is the part of the Auto Scaling group which was
created through ECS Console
PropagateAtLaunch: 'true'
Metadata:
'AWS::CloudFormation::Designer':
id: 80731e0b-a9e5-461c-9049-e215aed2ad3d
Outputs:
EcsInstanceAsgName:
Description: Auto Scaling Group Name for ECS Instances
Value: !Ref EcsInstanceAsg
UsedByECSCreateCluster:
Description: Flag used by ECS Create Cluster Wizard
Value: 'true'
TemplateVersion:
Description: The version of the template used by Create Cluster Wizard
Value: 2.0.0
Metadata:
'AWS::CloudFormation::Designer':
46bddd21-3027-4ccb-9e5d-ebf887429453:
size:
width: 60
height: 60
position:
x: 720
'y': 90
z: 1
embeds: []
0e3933ae-23c2-44e1-a0d9-82fcfba93511:
size:
width: 600
height: 600
position:
x: 60
'y': 90
z: 1
embeds:
- 1a2f2b53-09d3-4c2c-8286-295870b8c602
- cfe07e5c-e00f-4918-b877-f567fa08c802
- 6c7ca021-4114-4ec8-acf8-4f103ff7011f
493fdb30-54ce-4e4e-9cd6-c9faa6e3f93b:
size:
width: 60
height: 60
position:
x: 900
'y': 540
z: 1
embeds: []
0e8e3b5a-7b14-4ffc-92af-ef9be7e51689:
size:
width: 60
height: 60
position:
x: 810
'y': 350
z: 1
embeds: []
80731e0b-a9e5-461c-9049-e215aed2ad3d:
size:
width: 60
height: 60
position:
x: 720
'y': 450
z: 1
embeds: []
isassociatedwith:
- 0e8e3b5a-7b14-4ffc-92af-ef9be7e51689
1a2f2b53-09d3-4c2c-8286-295870b8c602:
size:
width: 240
height: 240
position:
x: 90
'y': 150
z: 2
parent: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
embeds: []
iscontainedinside:
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
11b7e802-d5ba-437a-8695-4bd5406d4db7:
source:
id: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
target:
id: 46bddd21-3027-4ccb-9e5d-ebf887429453
z: 1
4b7c941a-8498-4e70-886b-9339018cc18a:
size:
width: 60
height: 60
position:
x: 480
'y': -20
z: 1
embeds: []
isassociatedwith:
- 46bddd21-3027-4ccb-9e5d-ebf887429453
iscontainedinside:
- 1a2f2b53-09d3-4c2c-8286-295870b8c602
- 1a2f2b53-09d3-4c2c-8286-295870b8c602
dependson:
- 11b7e802-d5ba-437a-8695-4bd5406d4db7
cfe07e5c-e00f-4918-b877-f567fa08c802:
size:
width: 150
height: 150
position:
x: 450
'y': 360
z: 2
parent: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
embeds: []
iscontainedinside:
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
c3b3c8e1-a9c8-47c6-8d26-b6f272bcd9e1:
source:
id: 1a2f2b53-09d3-4c2c-8286-295870b8c602
target:
id: cfe07e5c-e00f-4918-b877-f567fa08c802
z: 2
6c7ca021-4114-4ec8-acf8-4f103ff7011f:
size:
width: 150
height: 150
position:
x: 390
'y': 150
z: 2
parent: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
embeds: []
iscontainedinside:
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
- 0e3933ae-23c2-44e1-a0d9-82fcfba93511
cea0d60a-6d91-4922-90ea-f6db9f4378a9:
source:
id: 1a2f2b53-09d3-4c2c-8286-295870b8c602
target:
id: 6c7ca021-4114-4ec8-acf8-4f103ff7011f
z: 2
然后我根据需要使用特定参数对其进行了更改,当我上传脚本时,出现以下错误和过程回滚。
集团不稳定。 {current / minSize / maxSize}组大小= {0/1/3}。扩展活动失败:可用性区域没有默认子网:“ ap-southeast-1b”。 EC2实例启动失败。
答案 0 :(得分:1)
由于在区域ap-southeast-1中没有可用的默认子网ap-southeast-1b而发生此问题。您可以检查默认VPC以及该区域中的默认子网是否存在。如果其中任何一个被删除,则可以按照link中提到的步骤创建默认子网。