-
首先我们先通过官网简单了解下lambda这个serverless的云服务吧。
-
通过了解官方文档,假设我们使用的是Java开发Function,那么首先需要先部署环境。由于工作上用了Intellij,所以这次分享就以Eclipse为IDE吧。具体可以参考详细文档。
(1) Eclipse安装插件,输入:https://aws.amazon.com/eclipse
(2) 配置Credentials,为了方便将代码上传到Lambda。

(3) 创建Lambda项目


(4) 如果需要提交代码到Lambda,直接在Function类右键,找到“AWS Web Services”然后选择“Upload Function to AWS Lambda”。注意Region尽量和你常用的云服务在同一个Region。

(5) 上传到Lambda的Function包会先存放到S3,所以点Next之后会要你选择一个Bucket,也就是说第2步的Credentials要设置正确不然只能在AWS Console上传了。值得注意的是,通常需要好几秒钟来加载已存在的Bucket名称。

(6) 接下来就可以进入AWS Console查看和测试你的Function了。 -
关于Function的写法,官网列举了几个demo可以参考下。以下我主要是以两个demo总结一下。
(1) 打印Function中所有相关的信息,如:event、context。
package com.amazonaws.lambda.demo;
import java.util.Map;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class LambdaFunctionHandlerTestJson implements RequestHandler<Map<String, String>, String> {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
@Override
public String handleRequest(Map<String, String> event, Context context) {
LambdaLogger logger = context.getLogger();
String response = new String("200 OK");
// log execution details
logger.log("ENVIRONMENT VARIABLES: " + gson.toJson(System.getenv()));
logger.log("CONTEXT: " + gson.toJson(context));
// process event
logger.log("EVENT: " + gson.toJson(event));
logger.log("EVENT TYPE: " + event.getClass().toString());
return response;
}
}
输出的ENVIRONMENT VARIABLES:

EVENT就是执行Test时输入的参数:

(2) 通过S3Trigger来监听S3文件删除,并且执行代码。
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.s3.AmazonS3;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class LambdaFunctionHandlerS3Trigger implements RequestHandler<S3Event, String> {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
public LambdaFunctionHandlerS3Trigger() {}
// Test purpose only.
LambdaFunctionHandlerS3Trigger(AmazonS3 s3) {
}
@Override
public String handleRequest(S3Event event, Context context) {
LambdaLogger logger = context.getLogger();
String response = new String("200 OK");
// log execution details
logger.log("ENVIRONMENT VARIABLES: " + gson.toJson(System.getenv()));
logger.log("CONTEXT: " + gson.toJson(context));
// process event
logger.log("EVENT: " + gson.toJson(event));
logger.log("EVENT TYPE: " + event.getClass().toString());
return response;
}
}

这个时候,当我们在S3删除Object的时候,就会触发LambdaFunctionHandlerS3Trigger了。当然也可以手动执行Test来触发。
创建trigger后,Bucket自动创建了Event,如果想要手动创建可以参考这个。
5. Function产生的日志可以通过Monitoring查看,详细的日志可以进入到CloudWatch。

注:
- 如果CloudWatch查看不了Function日志,可以先确认Region是同一个,如果是的话就得检查IAM Role的权限了。
参考:Why can’t I see logs in my lambda function?



本文详细介绍如何使用Java和Eclipse开发并部署AWS Lambda服务。从安装插件、配置凭证到创建项目,再到代码上传及S3触发器的使用,一步步引导读者掌握Lambda服务的开发流程。同时,通过两个实例演示了如何在Lambda函数中处理事件和日志。
2503

被折叠的 条评论
为什么被折叠?



