【发布时间】:2021-01-27 08:43:44
【问题描述】:
我正在尝试创建一个 ECS 任务定义作为 CloudFormation 堆栈的一部分。
到目前为止,我的任务定义如下所示...
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
RequiresCompatibilities:
- EC2
ExecutionRoleArn: !Ref MyTaskRole
ContainerDefinitions:
- Name: !Ref ServiceName
Image: amazon/amazon-ecs-sample
PortMappings:
- ContainerPort: 3000
HostPort: 0
Protocol: tcp
MemoryReservation: 128
当我尝试运行它时,我收到以下错误...
#/ContainerDefinitions/0/MemoryReservation: expected type: Number, found: String
看来CloudFormation是在将128转成字符串,然后栈失败了。
定义此值以使其保持数字的正确方法是什么?
【问题讨论】:
-
验证的完整错误信息是什么?
#/ContainerDefinitions/0/MemoryReservation: expected type: Number, found: String是唯一的验证错误吗?主要是由于类型不匹配。例如使用字符串作为地图或列表。 -
您可以提供您的堆栈 ID(或发送电子邮件至 (libruce AT amazon.com)),以便我帮助您找出根本原因。
-
感谢@WenbingLi 我实际上找到了根本原因。这是日志记录部分定义的问题。我只能通过首先删除 MemoryReservation 和 PortMappings 才能找到它,因此它不会错误地抱怨类型转换。之后,它显示了一个与问题实际相关的错误。
标签: yaml amazon-cloudformation