我在尝试捕获 AWS Step Functions 状态机中 Lambda 函数的响应时遇到问题。尽管进行了各种尝试,我仍无法正确检索响应正文。这是问题的概述:
描述:我有一个调用 Lambda 函数的 Step Functions 状态机。 Lambda 函数返回 JSON 响应正文。但是,当我执行状态机时,Step Functions 输出中捕获的响应并不符合预期。
预期行为:我希望 Step Functions 输出捕获 Lambda 函数返回的整个响应正文。
Java代码:
public ResponseEntity<Object> fetchCertificateStatus() {
String jsonData = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}";
// Parse the JSON data to a Java object
Gson gson = new Gson();
Person person = gson.fromJson(jsonData, Person.class);
return ResponseEntity.ok(person);
}
步骤功能代码:
{
"Comment": "A description of my state machine",
"StartAt": "Lambda Invoke",
"States": {
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-southeast-2:72806977b",
"ResultPath": "$.LambdaResponse", // Store the entire Lambda response here
"End": true
}
}
}
电流输出:
{
"LambdaResult": 200
}
电流输出**
Step 功能状态的预期结果:**
{
"name": "John",
"age": 30,
"city": "New York"
}
**
问题详情:**
Step Functions 输出仅捕获状态代码(例如 200),而不是整个响应正文。
尝试使用特定的
ResultPath
值,例如 LambdaResult
和 LambdaResponseBody
未产生预期结果。
通过 Postman 等工具进行独立测试时,Lambda 函数本身可以正确返回 JSON 响应正文。
仅供参考: Lambda 在运行时使用 java 进行部署和运行。
采取的故障排除步骤:
验证状态机配置中的Lambda函数ARN是否正确。
确保 Lambda 函数以预期的 JSON 格式返回响应正文。
检查 Lambda 函数和 Step Functions 执行的 CloudWatch 日志中是否有任何错误消息。
Expecting:状态机输出选项卡中的完整 json 响应正文。
有一个基于 Java 的开发人员教程,向您展示读取数据的正确方法。此示例应用程序分析并存储客户反馈卡。具体来说,它满足了纽约市一家虚构酒店的需求。酒店以各种语言以实体评论卡的形式收到客人的反馈。该反馈通过网络客户端上传到应用程序中。评论卡图片上传后。
此示例应用程序使用 Lambda/Step 函数。我建议查看此示例中的代码。