如何解决使用CloudFormation的ECS + EC2卡在CREATE_IN_PRO中
堆栈创建将卡在CREATE_IN_PROGRESS中。资源服务专门。没有它,堆栈创建将完成。这就是cloudformation的样子。我检查了CloudTrail,但找不到任何异常。
AWSTemplateFormatVersion: '2010-09-09'
Description: Amazon ECS Preview Quickstart Template
Parameters:
SubnetID:
Type: String
SubnetID2:
Type: String
ClusterName:
Description: Name of your Amazon ECS Cluster
Type: String
ConstraintDescription: must be a valid Amazon ECS Cluster.
Default: TestCluster
KeyName:
Description: Name of an existing EC2 KeyPair to enable SSH access to the instance
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: must be the name of an existing EC2 KeyPair.
InstanceType:
Description: Container Instance type
Type: String
Default: t2.micro
AllowedValues:
- t2.micro
- t2.small
- t2.medium
- m3.medium
- m3.large
- m3.xlarge
- m3.2xlarge
- c3.large
- c3.xlarge
- c3.2xlarge
- c3.4xlarge
- c3.8xlarge
- r3.large
- r3.xlarge
- r3.2xlarge
- r3.4xlarge
- r3.8xlarge
- i2.xlarge
- i2.2xlarge
- i2.4xlarge
- i2.8xlarge
- hi1.4xlarge
- hs1.8xlarge
- cr1.8xlarge
- cc2.8xlarge
ConstraintDescription: must be a valid EC2 instance type.
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,2})"
ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.
Mappings:
AWSInstanceType2Arch:
t2.micro:
Arch: HVM64
t2.small:
Arch: HVM64
t2.medium:
Arch: HVM64
m3.medium:
Arch: HVM64
m3.large:
Arch: HVM64
m3.xlarge:
Arch: HVM64
m3.2xlarge:
Arch: HVM64
c3.large:
Arch: HVM64
c3.xlarge:
Arch: HVM64
c3.2xlarge:
Arch: HVM64
c3.4xlarge:
Arch: HVM64
c3.8xlarge:
Arch: HVM64
r3.large:
Arch: HVM64
r3.xlarge:
Arch: HVM64
r3.2xlarge:
Arch: HVM64
r3.4xlarge:
Arch: HVM64
r3.8xlarge:
Arch: HVM64
i2.xlarge:
Arch: HVM64
i2.2xlarge:
Arch: HVM64
i2.4xlarge:
Arch: HVM64
i2.8xlarge:
Arch: HVM64
hi1.4xlarge:
Arch: HVM64
hs1.8xlarge:
Arch: HVM64
cr1.8xlarge:
Arch: HVM64
cc2.8xlarge:
Arch: HVM64
AWSRegionArch2AMI:
us-east-1:
HVM64: ami-34ddbe5c
Resources:
Cluster:
Type: AWS::ECS::Cluster
Properties:
ClusterName: ClusterName
LogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: deployment-example-log-group
ContainerInstance:
Type: AWS::EC2::Instance
Properties:
IamInstanceProfile:
Ref: ECSIamInstanceProfile
ImageId:
Fn::FindInMap:
- AWSRegionArch2AMI
- Ref: AWS::Region
- Fn::FindInMap:
- AWSInstanceType2Arch
- Ref: InstanceType
- Arch
InstanceType:
Ref: InstanceType
SecurityGroups:
- Ref: ECSQuickstartSecurityGroup
KeyName:
Ref: KeyName
UserData:
Fn::Base64:
Fn::Join:
- ''
- - "#!/bin/bash -xe\n"
- echo ECS_CLUSTER=
- Ref: ClusterName
- " >> /etc/ecs/ecs.config\n"
ECSQuickstartSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable HTTP access via SSH
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp:
Ref: SSHLocation
ECSIamInstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
Path: "/"
Roles:
- Ref: ECSQuickstartRole
ECSQuickstartRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- ec2.amazonaws.com
Action:
- sts:AssumeRole
Path: "/"
Policies:
- PolicyName: ECSQuickstart
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action: ecs:*
Resource: "*"
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
Family: deployment-example-task
Cpu: 256
Memory: 512
# NetworkMode: awsvpc
TaskRoleArn: !Ref ECSQuickstartRole
ContainerDefinitions:
-
Name: engine
Image: gcr.io/xxxxx
Environment:
- Name: db_instance
Value: "clouform2"
- Name: LOG_LEVEL
Value: 1
- Name: HOST
Value: 0.0.0.0
- Name: HTTP_PORT
Value: 8181
PortMappings:
- ContainerPort: 8181
LogConfiguration:
LogDriver: awslogs
Options:
awslogs-region: !Ref AWS::Region
awslogs-group: !Ref LogGroup
awslogs-stream-prefix: ecs
-
Name: encyou
Image: gcr.io/xxxx3
DependsOn:
- Condition: START
ContainerName: engine
LogConfiguration:
LogDriver: awslogs
Options:
awslogs-region: !Ref AWS::Region
awslogs-group: !Ref LogGroup
awslogs-stream-prefix: ecs
-
Name: packager
Image: gcr.io/xxxxx
DependsOn:
- Condition: START
ContainerName: engine
LogConfiguration:
LogDriver: awslogs
Options:
awslogs-region: !Ref AWS::Region
awslogs-group: !Ref LogGroup
awslogs-stream-prefix: ecs
RequiresCompatibilities:
- EC2
Service:
Type: AWS::ECS::Service
DependsOn: ContainerInstance
Properties:
ServiceName: ServiceName
Cluster: !Ref Cluster
DeploymentConfiguration:
MaximumPercent: 200
MinimumHealthyPercent: 75
DesiredCount: 2
TaskDefinition: !Ref 'TaskDefinition'
LaunchType: EC2
我会看到,尽管服务是被卡住的资源,但可以成功地在集群中注册,但是任务却不会。
知道我在做什么错吗?
解决方法
似乎您使用的是错误的群集名称。您的群集将仅称为ClusterName
,而不是TestCluster
。随后,您的实例将尝试向不存在的群集注册。
这是因为,而不是:
ClusterName: ClusterName
应该是:
ClusterName: !Ref ClusterName
请注意,可能还存在其他问题,但尚不明显。此外,您使用的是自定义图片gcr.io/xxxxx
,女巫不允许重现可能的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。