在cloudformation模板中定义lambda函数

时间:2020-04-07 14:48:11

标签: asp.net-core aws-lambda amazon-cloudformation

我创建了一个无服务器.Net核心API。 Lambda函数是使用控制台创建的。现在,我想在发布时使用相同的lambda。但是云的形成在部署时会创建一个新的lambda函数。是否可以在云形成模板中定义相同的lambda函数?

这是用于发布的模板

`{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Transform": "AWS::Serverless-2016-10-31",
  "Description": "An AWS Serverless Application that uses the ASP.NET Core 
 framework running in Amazon Lambda.",
"Resources": {
"testapi": {
  "Type": "AWS::Serverless::Function", 
  "Properties": {
    "FunctionName" : "arn:aws:lambda:ap-south- 
 1:721092682477:function:testapi",
        "Handler": "Syngenta.Global.TPTool.WebApi::Syngenta.Global.TPTool.WebApi.LambdaEntryPoint 
::FunctionHandlerAsync",
        "Runtime": "dotnetcore2.1",
        "CodeUri": "",
        "MemorySize": 512,
        "Timeout": 30,
        "Role": null,
        "Policies": [
          "AWSLambdaFullAccess"
        ],
        "Environment": {
          "Variables": {
          }
        },
        "Events": {
          "ProxyResource": {
            "Type": "Api",
            "Properties": {
              "Path": "/{proxy+}",
              "Method": "ANY"
            }
          }
        }
      }
    }
  }
}`

此处testapi是已经使用AWS控制台创建的lambda函数。发布时收到错误“功能名称已存在”。如果更改名称,则会创建新的lambda函数。

1 个答案:

答案 0 :(得分:0)

将现有资源导入到cloudformation堆栈中时,有几种方法。您可以手动删除功能,然后再次运行您的cloudformation文件,这样它将创建一个全新的功能,并且从那里开始您不会再出现错误了。

或者如果不可能的话。按照文档指南,您应该添加属性: "uppercase".send("u#{:pcase}") 移至您的资源。

示例:

"DeletionPolicy": "Retain"

还有其他方法可以将现有资源导入到特定的cloudformation堆栈(即通过控制台或cli)。您可以在此处找到更多信息:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import-existing-stack.html