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