AWS Fargate配置FargateECSTaskDefinition的Memory属性报错如何解决
问题根因
- 参数格式不符合CloudFormation规范
AWS::ECS::TaskDefinition资源的Memory属性要求传入纯整数值,单位默认是MiB,不允许携带任何单位后缀(包括MB、GB、空格等)。你配置的512 MB、512MB都是带后缀的字符串类型,不符合AWS的参数校验规则,因此触发InvalidParameterException报错。 - 1GB可正常部署的原因
部分Serverless Framework的Fargate适配插件仅对带GB后缀的内存值做了自动转换逻辑,会将1GB自动转为合法的整数值1024传入AWS接口,但没有适配MB后缀的转换逻辑,因此出现两种单位配置表现不一致的情况。
解决方案
直接将Memory字段的值修改为纯数字512即可,不需要加任何单位,修改后的配置片段如下:
FargateECSTaskDefinition: Type: "AWS::ECS::TaskDefinition" Properties: Cpu: 256 Memory: 512
修改后重新执行sls deploy -v即可完成部署,256 CPU单位搭配512MiB内存完全符合AWS Fargate的合规资源组合要求。
内容的提问来源于stack exchange,提问作者mmz
相关产品推荐
相关产品推荐

