关于AWS Lambda的使用 小结

  1. 首先我们先通过官网简单了解下lambda这个serverless的云服务吧。

  2. 通过了解官方文档,假设我们使用的是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了。

  3. 关于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;
	}
}

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

  1. 如果CloudWatch查看不了Function日志,可以先确认Region是同一个,如果是的话就得检查IAM Role的权限了。
    参考:Why can’t I see logs in my lambda function?
    进去之后Attach CloudWatch的Policies就可以了
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值