amazon-web-services - LambdaCall 未在 InvokeResult 中返回有效负载
问题描述
我在 AWS lambda 中创建了一个函数,该函数使用 LambdaCall 调用第二个 lambda 函数。
public InvokeResult invokeResponse() {
InvokeResult invokeResult = lambdaCall.invokeLambda(invokeRequestParameters.getFunctionName(), invokeRequestParameters.getPayload());
return invokeResult;
}
有效载荷是一个字符串“版本”。在第二个 lambda 中,handleRequest 代码包含的是:
public String handleRequest(InputStream inputStream, Context context) {
ObjectMapper mapper = new ObjectMapper();
try {
String text = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("\n"));
if (text.equals("\"Version\"")) {
VersionResponse versionResponse = getVersion();
return mapper.writeValueAsString(versionResponse);
}
return null;
} catch (Exception error) {
LOGGER.info(error);
return null;
}
VersionResponse 是一个简单的 POJO,我已经确认 getVersion 正在返回 VersionResponse 对象。目前 Lambda 正在检索“版本字符串”并且 getVersion 工作正常。但是,当返回字符串时, InvokeResult 的有效负载为空。知道我做错了什么吗?
解决方案
这发生在我身上(在 NodeJS 中),因为在使用异步函数的 lambda 中,我忘记添加 areturn resultValue
来返回正确的值,所以 lambda 没有一个好的返回值,并用作null
返回值。我认为如果在使用回调参数的 lambda 中您忘记调用,这也可能发生callback(null, result)
推荐阅读
- r - R; 对于 A 列中的每个级别,替换 B 列中的值,遵循 C 列中的条件
- python - 我遇到了 OnehotEncoder 的问题
- laravel - Laravel eloquent 获取当前查询的模型属性
- javascript - Angular 7:单击外部时关闭菜单
- angular - Jspdf v3 autotable colspan 功能不起作用
- mysql - MySql 分区表 - 与日期 IN (...) 子句相比,使用 PK 在日期范围之间进行选择非常慢
- javascript - 使用过滤器和每个删除数组中的对象
- c++ - 不可复制类型的 std::initializer_list 替代方案
- javascript - 完成承诺后渲染 [ React Native ]
- python - Python Flask XSS 中和(Veracode 警报)