当前位置: 首页 > 面试题库 >

适用于Cognito的Java中的AWS Lambda响应

益和雅
2023-03-14
问题内容

如何用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;
    }
}

问题答案:

您只需要一个这样的类:

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Map;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@JsonSerialize
public class Example {
    private int version;
    private String triggerSource;
    private String region;
    private String userPoolId;
    private Map<String, String> callerContext;
    private Request request;
    private Response response;

    @Getter
    @Setter
    @JsonSerialize
    public static class Request {
        private Map<String, String> userAttributes;
        public Request(Map<String, String> userAttr) {
            userAttributes = userAttr;
        }
    }

    @Getter
    @Setter
    @JsonSerialize
    public static class Response { }

}

序列化后将如下所示:

{
  "version" : 1,
  "triggerSource" : "trigger",
  "region" : "us-east-1",
  "userPoolId" : "user-pool-id",
  "callerContext" : {
    "some-key" : "some-value"
  },
  "request" : {
    "userAttributes" : {
      "name" : "Michael J Leonard"
    }
  },
  "response" : { }
}

并将其作为您的lambda的输入。它可能需要进行一些更改,但这是PostAuthentication lambda模板的示例



 类似资料:
  • 问题内容: 我应该为XPath使用什么软件包?我想查询元素,然后在这些节点周围提取一些值。也许一个或多个级别更高,有些属性。 是XPath 1.0。是和走正道,还是有更现代的实现?非常尴尬,JDOM似乎容易得多。 问题答案: 您可能会考虑基于Java的XPath 2.0或XQuery实现(XSLT 2.0选项提供了更强大的功能),例如 Saxon9.x 。 Saxon是开源的,并且是迄今为止基于J

  • 问题内容: 我一直在使用和关闭Lisp,而我正在赶上Clojure。clojure的好处是我可以自然地使用所有java函数,而clojure的坏处也是我必须自然地了解java函数。 例如,我不得不花一些时间(查找)来查找Java中的平方函数(clojure表示法中的Math / sqrt)。 您能为我不太熟悉Java的Clojure用户推荐一些有关Java函数(库)的良好信息资源吗? 它可以是任何

  • 问题内容: 由于GAE具有严格的限制,例如-“ Java应用程序无法使用任何用于写入文件系统的类”。 是否有一个好的Java PDF库可以将PDF写入内存以流式传输到云? 问题答案: 根据这个在Google网上论坛上的主题(需要身份验证),PDFjet可以在GAE上使用(已进行了少许修改,以在某些地方用流替换文件)。正如他们在线程中所说: 这是一个相当低级的库,但是对于简单的任务应该可以。 到目前

  • 问题内容: 我正在尝试为Android创建一个仅向SSH服务器发送命令的应用程序。无需响应,我只需要能够发送命令即可。我想知道是否可以使用任何Java库? 不需要高级的东西,只需一个纯粹的连接即可发送命令。 问题答案: 您正在搜索JSch。 其他库是jaramiko,paramiko和trilead- ssh2 。connectbot项目是您可以浏览Trilead源代码的地方。请注意,connec

  • 我正在设置Amazon Cognito用户池,以验证我的用户。Cognito发送验证电子邮件(密码重置、确认电子邮件地址等)。)。Cognito使用亚马逊SES发送电子邮件,亚马逊SES每天限制在200个每日电子邮件配额。我担心一旦我把我所有的用户都导入到亚马逊Cognito,导致他们每个人在下次登录时会收到几封电子邮件,我会远远超过配额,他们将无法收到这些电子邮件。有人知道这个配额是否适用于亚马

  • 问题内容: 我想知道是否有一种从Java方法调用属性的方法。我没有在Android文档中找到任何方法来做到这一点。这是我要实现的布局图: http://www.anddev.org/resources/image/2234 我知道可以通过XML进行操作,如下所示: 但是在我的情况下,我需要通过Java代码来完成此操作,因为我将动态实现另一个布局视图。为了避免将XML布局与Java代码合并,我宁愿使