use*_*825 5 yaml aws-cloudformation
我正在尝试创建 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 可能没有被正确解析,可能导致误导性的类型不匹配错误。
| 归档时间: | 
 | 
| 查看次数: | 2914 次 | 
| 最近记录: |