首页 > 解决方案 > 函数中未使用 MemorySize 的 AWS SAM 全局设置

问题描述

我正在使用 eclipse 创建一个无服务器应用程序。在尝试清理我的部署模板时,我正在尝试使用 Globals。但是,我发现在部署我的 Java 函数时忽略了内存大小属性。

以下是我的 SAM 模板中的一部分:

"Globals":{
"Function": {
  "Tags" : {
    "Client" : { "Ref": "Client"},
    "Stage" : { "Ref" : "NameExt" }
  },
  "Runtime" : "java8",
  "MemorySize" : "1024",
  "Timeout" : 300,
  "Environment" : {
    "Variables" : {
      "REGION" : { "Ref" : "AWS::Region" },
      "STAGE" : { "Ref" : "NameExt" }
    }
  }
}
},
"Resources": {
"RunReports" : {
  "Type" : "AWS::Serverless::Function",
  "Properties" : {
    "Handler" : "APIReports",
    "FunctionName" : "RunReport",
    "Policies" :  [ "AmazonDynamoDBFullAccess", "AmazonS3FullAccess" ],
    "Events" : {
      "GetResource" : {
        "Type" : "Api",
        "Properties" : {
          "Path" : "/commands/report",
          "Method" : "Get"
        }
      }
    }
  }
},
},

部署项目时,使用eclipse,将Function的MemorySize设置为512。

任何帮助,非常感谢。干杯,

标签: amazon-web-servicesserverlesssam

解决方案


看起来你就在那里,你只需要做一个小的调整。我刚刚查看了我拥有的一个 SAM文件,并使用这个漂亮的工具template.yaml将其转换为 json 。

无论如何,问题似乎在于Memory属性的值是一个字符串。去掉周围的引号,你应该没问题。

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Transform": "AWS::Serverless-2016-10-31",
    "Description": "Something really descriptive",
    "Globals": {
        "Function": {
            "Timeout": 120,
            "MemorySize": 256
        }
    },

希望这可以帮助。


推荐阅读