当前位置: 首页 > 知识库问答 >
问题:

是否值得使用Lambda代理集成“测试”Lambda函数?

章海
2023-03-14

如果使用“Lambda代理集成”(这里也是

1) 数据映射到event.body(而不是直接映射到需要映射模板的event对象上)

2)event.body是字符串化的,需要JSON. parse'd

下面是一个简单Lambda函数的示例,该函数期望输入符合API网关(node10x)的Lambda代理集成--

exports.handler = async (event, context) => {

    if (event && event.body) {
    try {
        event.body = JSON.parse(event.body);
    } catch(e) {
        return {
            statusCode: 200,
            body: JSON.stringify({message: 'Hit error in try/catch'})
        }
    }
}
    return {
        statusCode: 200,
        body: JSON.stringify({message: event})
    }

}

问:如何(或应该)使用Lambda的内置测试输入功能,用于以Lambda代理集成的方式期望数据的Lambda脚本?

测试输入直接来自事件对象(不是event.body),数据不会从测试有效负载中字符串化

我们可以解决#1,如果函数是预期的event.body,我们可以通过测试,但event.body是预期的字符串化。我们可以默默地跳过尝试/接球,但这似乎有点笨拙

有没有更好的技术将“测试”输入数据发送到Lambda函数?除非我忽略了什么,否则您似乎要么需要获得更好的解决方案,要么手工制作测试输入,以“匹配”来自API网关调用的预期有效负载,w/Lambda代理集成

共有1个答案

乐正宜人
2023-03-14

在尝试测试Lambda函数时,您是否尝试过选择预定义的测试事件模板,而不是尝试使用建议的默认事件配置

您可以尝试使用事件模板--

 类似资料:
  • 如果在API网关中使用“lambda代理集成”(这里也是&这里),则会发生两个重要的变化: 1)数据映射到(而不是直接映射到需要映射模板的对象上) 2)是stringized的,需要json.parse id 是否有更好的技术将“测试”输入数据发送到Lambda函数?除非我忽略了什么,否则您似乎需要得到一个更好的解决方案,或者手工制作测试输入,以“匹配”API网关调用的预期有效负载,该API网关调

  • lambda函数在给定bool函数时是否可能返回假值? 例如,此lambda函数产生True:

  • 目前我正在使用SQS-Lambda集成 Lambda的并发可用。SQS批次设置为1记录,0延迟。 SQS的可见性超时为15分钟,Lambda最大执行时间为15分钟 我会注意到,有时SQS消息在飞行中被卡住,根本没有被任何Lambda处理(它们在15分钟后落入死信队列,CloudWatch显示没有Lambda被消息调用) 有人面临过同样的问题吗? 我在VPC内部运行Lambda,如果这很重要的话

  • 有时您可能只需要在程序中的一个位置使用一个函数,并且该函数非常简单,您可能不会给它命名,或者可能不想将它存储在符号表中,而宁愿编写一个未命名或匿名的函数。 LISP允许您编写仅在程序中遇到它们时才计算的匿名函数。 这些函数称为Lambda functions. 您可以使用lambda表达式创建此类函数。 lambda表达式的语法如下 - (lambda (parameters) body) 无法

  • 4.7. 使用 lambda 函数 4.7.1. 真实世界中的 lambda 函数 Python 支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做 lambda 的函数,是从 Lisp 借用来的,可以用在任何需要函数的地方。 例 4.20. lambda 函数介绍 >>> def f(x): ... return x*2 ... >>> f(3) 6 >>> g =

  • 我有一个lambda函数,它成功地执行了一个名为的意图,该意图返回一个特定的字符串。为了测试目的,我已经为这个意图创建了一个话语(一个简单的话语,不需要任何可选的插槽来调用这个技能),但是当使用服务模拟器用这个话语测试lambda函数时,我会遇到表示的lambda响应。下面是交互模型的样子: 使用适当的自定义技能类型语法, 当向Alexa提供语句时,lambda响应应该像在执行中一样输出字符串。我