【问题标题】:AWS lambda java with Event invocation type具有事件调用类型的 AWS lambda java
【发布时间】:2018-04-15 13:25:54
【问题描述】:

我想编写一个使用 event 调用类型的 AWS Lambda。根据java-programming-model-handler-types,我应该执行以下操作:

如果您计划异步调用 Lambda 函数(使用 事件调用类型),则 outputType 应为 void。例如,如果 您将 AWS Lambda 与事件源(例如 Amazon S3、Kinesis 和 Amazon SNS,这些事件源使用 事件调用类型。

我正在寻找有关如何编写此类处理程序 (Java) 方法的示例。

有很多 Java 处理程序的示例可以使用 RequestResponse 调用类型(例如,public String myHandler(int myCount, Context context))。还有一些示例 for using streams(IIUC 也仅适用于 RequestResponse 调用类型)。我找不到任何处理程序正在处理 Event 调用类型的 Java Lambda 示例

【问题讨论】:

    标签: java aws-lambda


    【解决方案1】:

    看起来像这样:

    public class MyFunction implements RequestHandler<eventType, Void> {
    
        public Void handleRequest(eventType event, Context context) {
    
            ...
            return null;
        }
    
    }
    

    诀窍是知道你的事件类型是什么类。您可以将 eventType 设置为 Object,使您的函数被触发一次,并让它在函数中打印类名以找出事件类型将是什么。

    【讨论】:

    • 谢谢,我想使用 API Gateway 事件,所以 IIUC 将是一个 APIGatewayProxyRequestEvent 对象(参见github.com/aws/aws-lambda-java-libs/tree/master/…)。您是否知道用于发送回 APIGatewayProxyResponseEvent 类型的(异步)响应的 API 是什么?
    • 如果 API Gateway 正在调用 Lambda 函数,那么我认为您将获得 Map&lt;String,String&gt; 而不是事件类型,并且您的函数不会是 void。不确定“异步响应”是什么意思。顺便说一句,这一切在 NodeJS 或 Python 中要容易上百万倍,而且这些语言在 Lambda 上的表现也比 Java 好。
    • @MarkB "这些语言在 Lambda 上的表现也比 Java 好。" 是什么让你这么认为?
    • @cy3er Java 在 Lambda 上有冷启动问题。与 NodeJS 或 Python 函数相比,在新的 Lambda 容器中部署和启动 Java Lambda 函数所需的时间要长得多。
    猜你喜欢
    • 2019-08-12
    • 2016-08-31
    • 2018-05-18
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多