You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从EventBridge规则传递并获取常量JSON数据至Lambda函数

在Lambda中获取EventBridge规则传入的常量JSON值(.NET)

问题描述

我已定义一条EventBridge规则,并在目标中配置了Lambda函数,通过「配置目标输入」传入常量JSON。请问在Lambda函数中,如何获取「目标/配置输入/常量(JSON文本)」中定义的值?

附Lambda代码示例:

public void EventHandler<T>(CloudWatchEvent<T> inputEvent, ILambdaContext context)
{
    // Get constant json argument passed from event rule
    ...
}

解决方案

当EventBridge通过「配置目标输入」的常量JSON传递数据时,该JSON内容会直接映射到CloudWatchEvent<T>的Detail属性中,你可以通过以下两种方式获取值:

方法1:定义匹配JSON结构的实体类

  1. 先创建一个与你传入的常量JSON结构完全匹配的实体类,比如假设你传入的常量JSON为:
{"OrderId": "ORD-12345", "Amount": 99.9}

对应的实体类:

public class OrderConstantInput
{
    public string OrderId { get; set; }
    public decimal Amount { get; set; }
}
  1. 在Lambda的处理方法中指定泛型参数为该实体类,直接从inputEvent.Detail中读取属性:
public void EventHandler<OrderConstantInput>(CloudWatchEvent<OrderConstantInput> inputEvent, ILambdaContext context)
{
    // 获取常量JSON中的值
    string orderId = inputEvent.Detail.OrderId;
    decimal amount = inputEvent.Detail.Amount;
    
    // 业务逻辑示例
    context.Logger.LogInformation($"收到订单ID:{orderId},金额:{amount}");
}

方法2:使用dynamic类型(无需定义实体类)

如果你的常量JSON结构简单,也可以直接用dynamic作为泛型参数,省去定义实体类的步骤:

public void EventHandler<dynamic>(CloudWatchEvent<dynamic> inputEvent, ILambdaContext context)
{
    string orderId = inputEvent.Detail.OrderId;
    decimal amount = inputEvent.Detail.Amount;
    // 后续逻辑处理
}

注意事项

  • 实体类的属性名称要和JSON的键名大小写完全匹配(默认JSON序列化规则是大小写敏感的)
  • 若JSON包含嵌套结构,实体类也需要对应定义嵌套的类或属性

内容的提问来源于stack exchange,提问作者BMD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:35:20