【问题标题】:Define lambda function in cloudformation template在 cloudformation 模板中定义 lambda 函数
【发布时间】:2020-07-19 19:23:47
【问题描述】:

我创建了一个无服务器的 .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 函数。

【问题讨论】:

  • 你用你的 lambda 做什么?通过在 cloudformation 堆栈中重用,提供一些您想要对 lambda 执行的操作的代码。
  • 我正在尝试使用 VS Studio AWS 工具包将代码发布到 lambda 函数。

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


【解决方案1】:

将现有资源导入 cloudformation 堆栈时有多种方法。您可以手动删除您的函数并再次运行您的 cloudformation 文件,这样它将创建一个全新的函数,并且您应该不会再出现错误。

或者如果那是不可能的。按照文档指南,您应该添加属性: "DeletionPolicy": "Retain" 给您的资源。

例子:

"testapi": {
  "Type": "AWS::Serverless::Function", 
  "DeletionPolicy": "Retain",
... }

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 2019-01-17
    • 2020-06-10
    • 2021-09-28
    • 1970-01-01
    • 2016-07-17
    • 2021-09-16
    相关资源
    最近更新 更多