我正在使用 AWS Lambda 和 API Gateway 通过 Visual Studio 构建无服务器应用程序。我在 C# 中工作,并使用无服务器应用程序模型 (SAM) 部署我的 API。我在 Visual Studio 中构建代码,然后通过发布到 Lambda 进行部署。这是有效的,但每次我进行新的构建并尝试执行 API 调用时,都会出现以下错误:
由于配置错误,执行失败:Lambda 函数上的权限无效。
经过一些研究,我发现了解决方法(通过 AWS 控制台完成):
解决方法:进入 API Gateway > API 名称 > 资源 > 资源名称 > 方法 > 集成请求 > Lambda 函数,重新选择现有函数,然后使用小勾选符号“保存”它。
现在这对我来说可以工作,但它会中断使用 serverless.template(JSON)自动构建我的 API。有人知道如何在 serverless.template 文件内解决这个问题吗?以便我不需要在控制台上采取措施来解决?这是 serverless.template 文件中一个方法的示例:
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Transform" : "AWS::Serverless-2016-10-31",
"Description" : "An AWS Serverless Application.",
"Resources" : {
"Get" : {
"Type" : "AWS::Serverless::Function",
"Properties": {
"VpcConfig":{
"SecurityGroupIds" : ["sg-111a1476"],
"SubnetIds" : [ "subnet-3029a769","subnet-5ec0b928"]
},
"Handler": "AWSServerlessInSiteDataGw::AWSServerlessInSiteDataGw.Functions::Get",
"Runtime": "dotnetcore2.0",
"CodeUri": "",
"MemorySize": 256,
"Timeout": 30,
"Role": null,
"Policies": [ "AWSLambdaBasicExecutionRole","AWSLambdaVPCAccessExecutionRole","AmazonSSMFullAccess"],
"Events": {
"PutResource": {
"Type": "Api",
"Properties": {
"Path": "/",
"Method": "GET"
}
}
}
}
},
AWS::Serverless::Function
> Properties > Events > Event > path"中设置了错误的路径。 - mojave