AWS lambda示例
1. 简介
AWS Lambda 是亚马逊提供的一种无服务器计算服务,用于减少服务器、操作系统、可扩展性等的配置。AWS Lambda 能够在 AWS Cloud 上执行代码。
它运行以响应不同 AWS 资源上的事件,这会触发 AWS Lambda 函数。定价是现收现付的,这意味着我们不会把钱花在空闲的 lambda 函数上。
本教程需要一个有效的 AWS 账户;你可以在这里 创建一个。
2. Maven依赖
要启用 AWS lambda,我们的项目中需要以下依赖项:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
</dependency>
可以在Maven 存储库 中找到此依赖项。
我们还需要Maven Shade 插件 来构建 lambda 应用程序:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
3. 创建处理程序
简单地说,要调用 lambda 函数,我们需要指定一个处理程序;有 3 种创建处理程序的方法:
- 创建自定义MethodHandler
- 实现RequestHandler接口
- 实现RequestStreamHandler接口
让我们看看如何使用代码示例来做到这一点。
3.1. 自定义MethodHandler
我们将创建一个处理程序方法,它将作为传入请求的入口点。我们可以使用 JSON 格式或原始数据类型作为输入值。 此外,可选的Context对象将允许我们访问 Lambda 执行环境中可用的有用信息:
public class LambdaMethodHandler {
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input);
return "Hello World - " + input;
}
}
3.2. RequestHandler接口
我们还可以在我们的类中实现RequestHandler并覆盖handleRequest方法,这将是我们请求的入口点:
public class LambdaRequestHandler
implements RequestHandler<String, String> {
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input);
return "Hello World - " + input;
}
}
在这种情况下,输入将与第一个示例中的相同。
3.3. RequestStreamHandler接口
我们还可以在我们的类中实现RequestStreamHandler并简单地覆盖handleRequest方法。
不同之处在于InputStream、ObjectStream和Context对象作为参数传递:
public class LambdaRequestStreamHandler
implements RequestStreamHandler {
public void handleRequest(InputStream inputStream,
OutputStream outputStream, Context context) {
String input = IOUtils.toString(inputStream, "UTF-8");
outputStream.write(("Hello World - " + input).getBytes());
}
}
4. 构建部署文件
配置好所有东西后,我们可以通过简单地运行来创建部署文件:
mvn clean package shade:shade
jar文件将在target文件夹下创建。
5. 通过管理控制台创建 Lambda 函数
登录AWS Amazon ,然后单击服务下的 Lambda。此页面将显示已创建的 lambda 函数列表。
以下是创建 lambda 所需的步骤:
- “选择蓝图”,然后选择“空白功能”
- “配置触发器”(在我们的例子中,我们没有任何触发器或事件)
- “配置功能”:
-
名称:提供MethodHandlerLambda,
-
描述:任何描述我们的 lambda 函数的东西
-
运行时:选择java8
-
代码输入类型和功能包:选择“ **Upload a .ZIP and Jar file”**并点击“ **Upload”**按钮。选择包含 lambda 代码的文件。
-
在Lambda 函数处理程序和角色下:
- 处理程序名称:提供 lambda 函数处理程序名称com.blogdemo.MethodHandlerLambda::handleRequest
- 角色名称:如果在 lambda 函数中使用了任何其他 AWS 资源,则通过创建/使用现有角色提供访问权限,并定义策略模板。
-
在高级设置下:
- 内存:提供我们的 lambda 函数将使用的内存。
- 超时:为每个请求选择执行 lambda 函数的时间。
-
- 完成所有输入后,单击“下一步”,这将显示您查看配置。
- 审核完成后,单击“创建函数”。
6. 调用函数
创建 AWS lambda 函数后,我们将通过传入一些数据对其进行测试:
- 从列表中单击您的 lambda 函数,然后单击“**测试”**按钮
- 将出现一个弹出窗口,其中包含用于发送数据的虚拟值。**用“Blogdemo”**覆盖数据
- 点击“**保存并测试”**按钮
在屏幕上,您可以看到成功返回输出的执行结果部分:
"Hello World - Blogdemo"