gpt4 book ai didi

amazon-web-services - 仅保留从 API 网关到 Lambda 的正文

转载 作者:行者123 更新时间:2023-12-05 06:32:01 24 4
gpt4 key购买 nike

为什么我只想保留正文内容?

我们项目中的一个 lambda(我们称它为 X)正在被另一个 lambda 调用,这是我们希望执行 X 的唯一有机方式。

通过其 lambda 调用程序传递给 X 的输入:

{
"foo" : "foo_value",
"bar" : "bar_value"
}


-- 编写一般的集成测试,我们可以简单地用预期的事件调用 X,而且效果很好。
-- 但是,对于我们的验收测试,我们需要独立于 AWS 而不是在本地调用 X,这只能通过 API 网关来完成
-- ==> 所以 我们为 X 创建了一个仅用于测试目的的 POST 事件源。

API Gateway发送给X的事件:

{
headers : {
"some-headers1": "some-value1",
....
"some-headersn": "some-valuen",
},
body : {
"foo" : "foo_value",
"bar" : "bar_value"
},
.....
.....
}

我们要解决的问题:

有没有办法将 API 输入转换为我们对 lambda 调用程序的期望?

换句话说,是否可以为 POST 端点编写自定义请求集成映射模板,以便只保留 event.body
我的意思是:$util.escapeJavaScript($input.json('$')) 而不是 { body: $util.escapeJavaScript($input.json('$') ) }

为什么?

我们可以简单地在 X 中添加几行代码来忽略 API 网关生成的额外信息,但是由于 API 网关不是有机执行事件的一部分,我们不希望改变 X 转换接收到的事件。



怎么可能?

最佳答案

我建议您解耦 lambda 函数逻辑,以便它可以从多个服务调用。基本上,您将在 处理程序 中为每个调用您的 lambda 函数以消息提供的事件的服务创建一个单独的逻辑。因此,您的 lambda 函数中的业务逻辑变得与资源无关,并且始终获得预期的输入,该输入先前由相应的处理程序条件处理。如需灵感,请查看以下有关代码结构的文章 https://medium.com/@mitch.zorze/2-years-with-aws-lambda-f835bfedec9f

关于amazon-web-services - 仅保留从 API 网关到 Lambda 的正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51576850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com