如何在AWS Cloudformation中调试“资源创建超时等待完成”?

ell*_*len 11 amazon-web-services amazon-ecs aws-cloudformation amazon-cloudtrail

我是 AWS 的新手,我有一个脚本,我相信它应该创建一个 ECS 集群。

当我运行脚本时,我的堆栈在该CREATE_IN_PROGRESS状态下挂起一个多小时。最终,它失败并进入ROLLBACK_COMPLETE.

当我在 AWS 控制台中的 Cloudformation 中时,我可以转到“事件”并看到我尝试创建的两个服务导致堆栈创建失败。然而,唯一的错误消息是Resource creation timed out waiting for completion

我已经尝试了此处概述的步骤,即包括进入 CloudTrail,但我不太确定要查找什么,也没有找到任何可以帮助我解决问题的内容。再说一遍,我是 AWS 菜鸟。

我可以采取哪些步骤来获取更详细的错误消息?如何在 AWS 中进行调试?

感谢任何帮助,如果我需要提供更多信息,请告诉我。

axe*_*ire 8

我在使用 CDK 时遇到了同样的情况,我的 ECS 在 3 小时后就会失败CREATE_IN_PROGRESS。调试和故障排除的一个大问题是,当ROLLBACK发生时,它会擦除​​您的 ECS 集群和事件历史记录。但是,如果您转到 ECS 控制台的任务列表,您应该会看到一个任务,我敢打赌它会陷入某种PENDING状态。造成这种情况的原因有很多。当任务未能达到所需状态时,它会将失败的原因添加到服务的事件中。到那里:

集群 > 服务 > 服务名称

在此页面上有一个“事件”选项卡

服务事件选项卡

选择一个任务,它会显示它STOPPED。在我下面的例子中,它似乎找不到 ECS 容器模板图像

无法拉取容器错误

  • 出现有关 ECS 服务无法拉取映像的错误。请参阅 https://aws.amazon.com/premiumsupport/knowledge-center/ecs-unable-to-pull-secrets/。问题是 ECS 任务没有自动分配公共 IP,以便它可以访问 AWS ECR(搜索“确保在启动新任务或创建新服务时启用自动分配公共 IP”)。通过添加修复Fargate ALB 服务配置的标志,请参见下面的 CDK 代码: const service = new ecs_patterns.ApplicationLoadBalancedFargateService(this, 'AcmeFulfillmentService', { allocatePublicIp: true,certificate: 'certArn' (2认同)