我在c#中执行AWS Lambda函数时遇到问题

时间:2017-04-14 07:29:48

标签: c# amazon-web-services aws-lambda

enter image description here在C#中部署lambda时出现错误 - “errorType”:“LambdaException”,“errorMessage”:“无法找到文件名为'/ var / task /的指定处理程序程序集AWSLambda1.dll'或'/var/task/AWSLambda1.ni.dll'。程序集应位于您上传的.zip文件的根目录中。“  作为初学者可以任何人为我提供在C#中执行lambda的步骤吗?

3 个答案:

答案 0 :(得分:0)

我正在使用Serverless Framework来运行Lambda函数。我可以调用该函数,但是当我尝试通过API网关调用它时它没有工作。尝试了几天之后我就这样解决了:

Handler.cs:

using System; 
using Amazon.Lambda.Core;
using Amazon.Lambda.Serialization.Json;
using Amazon.Lambda.APIGatewayEvents;

[assembly:LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

namespace AwsDotnetCsharp { 
    public class Handler { 
        public APIGatewayProxyResponse Hello(APIGatewayProxyRequest request) { 
            return new APIGatewayProxyResponse() {
                StatusCode = 200, 
                Body = "Go Serverless v1.0! Your function executed successfully!", 
            }; 
        }    
    } 
}

serverless.yml:

service: csharpExample

provider:
  name: aws
  runtime: dotnetcore1.0

package:
  artifact: bin/release/netcoreapp1.0/deploy-package.zip

functions:
  hello:
    handler: CsharpHandlers::AwsDotnetCsharp.Handler::Hello
    events:
        - http:
            path: hello
            method: GET
            cors: true

我不确定这是不是你要求的,但由于我在这个问题上花了很多时间,我想分享给遇到同样问题的人。 。

答案 1 :(得分:0)

重命名项目并尝试发布到AWS时遇到了此错误。
 您可以通过更改“程序集名称”以匹配项目/生成的程序集的名称,在功能上载屏幕中解决此问题。

由于已选择了“保存设置以备将来部署”选项,因此这些设置将保存到aws-lambda-tools-defaults.json中,因此您可以在以下位置搜索缺少的文件名(在这种情况下为“ AWSLambda1”):您的整个解决方案,请查看上面提到的json文件中是否存在它,然后更改它以匹配您的程序集名称。

答案 2 :(得分:0)

聚会迟到了,但让我把我的解决方案放在这里,以节省其他人的时间。 我也遇到了这种类型的错误,并通过将 AWS Lambda 函数处理程序名称与代码/zip 文件中处理程序函数的程序集名称进行匹配来修复该错误。 可以在代码选项卡的运行时设置下找到 AWS Lambda 处理程序。