【发布时间】:2020-06-22 02:50:39
【问题描述】:
如何用 Java 编写“AWS Lambda 响应”以使 Cognito 满意?
这样的东西被传递给 lambda 函数
{
"version": number,
"triggerSource": "string",
"region": AWSRegion,
"userPoolId": "string",
"callerContext":
{
"awsSdkVersion": "string",
"clientId": "string"
},
"request":
{
"userAttributes": {
"string": "string",
....
}
},
"response": {}
}
现在我需要用 Java 做出响应.. 并发送回 Cognito。目前 Cognito 抛出 "InvalidLambdaResponseException"。
下面的 Java 代码只是返回事件..
public class LambdaFunctionHandler implements RequestHandler<CognitoEvent, CognitoEvent>
{
@Override
public CognitoEvent handleRequest(CognitoEvent arg0, Context arg1)
{
return arg0;
}
}
【问题讨论】:
-
您忽略了使用响应数据丰富事件。 Cognito 期望的数据因它发送的事件类型而异。
-
@TrentBartlem 它不期望任何响应数据。在 node.js 中你可以只返回事件。
-
这取决于事件,请参阅:docs.aws.amazon.com/cognito/latest/developerguide/…。像
CustomMessage_SignUp这样的一些事件需要响应,但像PreAuthentication_Authentication这样的其他事件则不需要。 -
@TrentBartlem 好吧,我的错,但我使用的事件没有。引发异常的是 lambda 函数。
-
AWS 文档的一部分 (docs.aws.amazon.com/lambda/latest/dg/…) 说您可以将 AWS 事件用作输入和输出;另一部分 (docs.aws.amazon.com/lambda/latest/dg/…) 没有。尝试输出一个字符串 (JSON) 并查看它是否有效,然后使用输入和输出类。
标签: java amazon-web-services aws-lambda aws-sdk amazon-cognito