AWS CDK创建Fargate服务时资源卡在CREATE_IN_PROGRESS,求助排查
排查思路与解决方案
首先明确:日志里的NextToken: undefined不是问题根源。这个参数是CloudFormation的分页标记,第一次调用describeStackEvents时没有上一页的令牌,所以会显示undefined,属于正常现象,不用纠结这个点。
下面是针对Fargate资源创建卡住的排查步骤:
镜像与权限检查
- 确认ECR仓库
repo-name中存在latest标签的镜像(你的代码里没指定镜像标签,默认用latest),如果镜像标签不是latest,要在EcrImage.fromEcrRepository里补充指定,比如ecs.EcrImage.fromEcrRepository(repo, "your-tag") - 检查Fargate任务执行角色是否有拉取ECR镜像的权限,需要附加
AmazonEC2ContainerRegistryReadOnly策略,或者自定义包含ecr:GetDownloadUrlForLayer、ecr:BatchGetImage、ecr:BatchCheckLayerAvailability权限的策略 - 本地拉取该ECR镜像测试启动,确认镜像本身没有启动失败的问题(比如缺少依赖、端口未暴露等)
- 确认ECR仓库
网络配置排查
- 确认Fargate任务所在的子网配置:如果是私有子网,必须配置NAT网关让任务能访问互联网拉取ECR镜像;如果是公有子网,要开启任务的公共IP(CDK中
assignPublicIp设为true) - 检查安全组:任务的安全组要允许出站443端口(用于拉取ECR镜像),负载均衡的安全组要允许与任务安全组的对应端口通信
- 确认Fargate任务所在的子网配置:如果是私有子网,必须配置NAT网关让任务能访问互联网拉取ECR镜像;如果是公有子网,要开启任务的公共IP(CDK中
查看详细CloudFormation/ECS事件
- 直接登录AWS控制台,进入CloudFormation服务找到对应堆栈,查看事件列表,里面会显示具体哪个子资源卡在创建中(比如ECS服务、任务定义、目标组等)
- 如果是ECS服务卡住,进入ECS控制台找到对应服务,查看服务事件,里面会有更具体的报错信息(比如任务启动失败原因、镜像拉取超时等)
CDK配置验证
- 检查
ApplicationLoadBalancedFargateService的配置:确认容器端口与负载均衡监听端口匹配,任务的CPU和内存规格符合Fargate的要求(比如最小0.25vCPU、0.5GB内存) - 用
cdk synth生成CloudFormation模板,检查模板中资源配置是否符合预期,有没有遗漏的必要参数
- 检查
内容的提问来源于stack exchange,提问作者FRMR
相关产品推荐
相关产品推荐

