首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >云监控事件的C# .NET核心AWS Lambda函数处理程序签名

云监控事件的C# .NET核心AWS Lambda函数处理程序签名
EN

Stack Overflow用户
提问于 2020-05-07 08:08:20
回答 2查看 1.9K关注 0票数 0

我正在尝试用C# (.NET核心)编写一个Lambda函数,它将在我的帐户中发生CloudWatch事件时进行处理。我正在使用无服务器应用程序框架( https://www.serverless.com/ ),并且以前已经成功地编写了处理程序代码来响应ApiGateway请求/事件。对于ApiGateway请求处理程序,方法签名始终具有相同的两个参数:

公共APIGatewayProxyResponse SampleHandler(RequestAPIGatewayProxyRequest请求,ILambdaContext上下文)

根据文档( https://docs.aws.amazon.com/lambda/latest/dg/csharp-handler.html ),第一个参数被定义为"inputType“,并且通常特定于触发函数的事件,第二个参数是通用的Lambda函数上下文信息。目前,我找不到Cloudwatch事件的对应对象类型。

我的无服务器应用程序框架YAML文件有这样的事件:

代码语言:javascript
代码运行次数:0
运行
复制
functions:
  NewRevision:
    handler:  CsharpHandlers::AwsDotnetCsharp.Handlers::NewDataExchangeSubscriptionRevision
    memorySize: 1024 # optional, in MB, default is 1024
    timeout: 20 # optional, in seconds, default is 6
    events:
      - cloudwatchEvent:
          event:
            source:
              - 'aws.dataexchange'
            detail-type:
              - 'Revision Published To Data Set'

我的问题是,有没有人知道在CloudWatch事件的方法签名中应该使用什么适当的对象类型?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-07 15:36:40

Amazon.Lambda.CloudWatchEvents NuGet包中,可以使用CloudWatchEvent类型。诀窍是CloudWatchEvent是一个依赖于事件源的泛型类。在Amazon.Lambda.CloudWatchEvents中定义了一些事件详细信息类型,但是根据您的事件类型,您可能需要创建一个自己的POCO来用于泛型参数,其中包含您关心的字段。

票数 3
EN

Stack Overflow用户

发布于 2020-08-05 16:33:53

您只需将您自己想要接受的对象传递到FunctionHandler签名:

云手表事件输入:{"RegionId":"EMEA"}

我接受object的代码:

代码语言:javascript
代码运行次数:0
运行
复制
public class Payload
{
    public string RegionId { get; set; }
}

private static async Task Main(string[] args)
{
        Func<Payload, ILambdaContext, Task<string>> func = FunctionHandler;
        using (var handlerWrapper = HandlerWrapper.GetHandlerWrapper(func, new JsonSerializer()))
        using (var bootstrap = new LambdaBootstrap(handlerWrapper))
        {
            await bootstrap.RunAsync();
        }
    }
}

public async static Task<string> FunctionHandler(Payload payload, ILambdaContext context)
{
    // Do something
    return "{\"status\":\"Ok\"}";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61647614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档