如何解决CloudFormation yaml-如何强制数字类型?
我正在尝试创建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转换为字符串,然后堆栈失败。
定义此值以使其保持数字的正确方法是什么?
解决方法
事实证明,CloudFormation报告的错误实际上与故障无关。上面的代码非常好。
就我而言,问题在于我定义了日志记录部分的方式,该部分随后出现在模板中。
由此得出的结论是,CloudFormation非常难以调试,并且,如果您收到这样的错误,请不要以为这实际上是导致堆栈失败的原因。
要找到实际的问题,我必须首先删除导致类型转换错误的属性MemoryReservation和PortMappings,然后显示有关定义日志记录部分的方式的错误。修复该错误后,我能够重新添加其他属性,并且工作正常。
我现在怀疑,因为我的日志记录部分不正确,因此可能没有正确地解析整个ContainerDefinitions,从而可能导致误导类型不匹配错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。