用 Java 编写您的第一个 AWS Lambda

本文介绍了如何在Java中为AWSLambda项目创建一个简单的HelloWorld处理程序,包括设置环境、添加依赖、编写和部署处理程序代码,以及在AWS控制台测试Lambda函数的过程。
摘要由CSDN通过智能技术生成

到目前为止,我一直在为我的所有 AWS 项目编写 Python Lambda 函数。在 Python 中,这很简单,只需导入 boto3 模块并开始编码。当您在 Java 中编写 Lambda 处理程序时,情况会有所不同。让我们探索并了解如何在 Java 中编写简单的 HelloWorld Lambda 处理程序。我已经计划了几个操作方法项目,我将用 Java 编写这些项目。因此,我想在我们深入研究复杂的处理程序之前先做 HelloWorld 帖子。请随时在Twitter上关注我,以获取即将到来的更新。

为了实现处理程序,我们将使用 Maven、Eclipse 和 AWS SDK for Java。以下是版本:

Java:1.8。
Eclipse:版本:2020-06 (4.16.0)。
AWS 开发工具包:2.14.11。
Maven:3.6.3(包含在 eclipse 中)。
首先,在 eclipse 中创建一个新的空 maven 项目。转到 File-> New-> Maven 项目。在新建项目对话框中,选择“创建简单项目”并点击下一步。在下一个屏幕上。添加有关项目的适当信息并点击完成。例如:
在这里插入图片描述
现在,您的项目已创建。打开pom.xml并添加以下代码。

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>net.rajanpanchal</groupId>
    <artifactId>lambda-java-demo</artifactId>
    <version>1</version>
    <name>Lambda-Java-Demo</name>
    <description>HelloWorld Lambda handler in java</description>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <aws.java.sdk.version>2.14.11</aws.java.sdk.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>bom</artifactId>
                <version>${aws.java.sdk.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-lambda-java-core</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

我们正在标签中设置一些属性,例如 AWS 开发工具包版本和 Java 版本。我们正在添加所需版本的 AWS 开发工具包依赖项和 Lambda 核心依赖项。添加了 Google JSON 依赖项以在 JSON 和 Java 对象之间进行转换,反之亦然。在插件中,我们定义了 maven 编译器插件来编译代码,另一个重要的插件称为 .这个插件有助于创建胖罐又名 Uber 罐子。此 jar 将包含成功运行 lambda 函数所需的所有依赖项。maven-shade-plugin

现在,让我们创建处理程序。


package net.rajanpanchal.handlers;
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 HelloWorldHandler implements RequestHandler<Map<String,String>, String>{
      Gson gson = new GsonBuilder().setPrettyPrinting().create();
      @Override
      public String handleRequest(Map<String,String> event, Context context)
      {
        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;
      }
    }

在这里,我们正在实现将接受 of 并输出响应。处理程序没有做太多事情。只是记录一些东西,作为响应,它会发送字符串。在此之后,右键单击项目,转到“运行方式”,然后单击“Maven 构建”。将打开一个配置窗口。在“目标”中输入并点击“运行”。构建应该会成功,并且会在文件夹中创建一个胖罐。RequestHandlerMapStringStringcontextevent200 OKpackagetarget

现在,转到 AWS 控制台,创建一个使用 Java 8 作为运行时的新 Lambda 函数,然后从 Function Code (函数代码) 部分上传此 jar。在“基本设置”中,必须在处理程序文本框中指定。要测试此 Lambda,请创建测试事件并执行测试。package.class::methodName
在这里插入图片描述
输出可能如下所示:

START RequestId: c40b4095-27f5-4153-ac37-fd2c103f4476 Version: $LATEST ENVIRONMENT VARIABLES: {   "PATH": "/usr/local/bin:/usr/bin/:/bin:/opt/bin",   "_AWS_XRAY_DAEMON_ADDRESS": "169.254.79.2",   "LAMBDA_TASK_ROOT": "/var/task",   "AWS_LAMBDA_FUNCTION_MEMORY_SIZE": "128",   "TZ": ":UTC",   "AWS_SECRET_ACCESS_KEY": "<keyid>",   "AWS_EXECUTION_ENV": "AWS_Lambda_java8",   "AWS_DEFAULT_REGION": "us-east-1",   "AWS_LAMBDA_LOG_GROUP_NAME": "/aws/lambda/helloworldjava",   "_HANDLER": "net.rajanpanchal.handlers.HelloWorldHandler::handleRequest",   "LANG": "en_US.UTF-8",   "LAMBDA_RUNTIME_DIR": "/var/runtime",   "AWS_SESSION_TOKEN": "<session token>",   "LD_LIBRARY_PATH": "/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib",   "_X_AMZN_TRACE_ID": "Root\u003d1-5f545c5d-22c8a803badd636859a0f387;Parent\u003d23df427f78bc46e4;Sampled\u003d0",   "AWS_SECRET_KEY": "<secret key>",   "AWS_REGION": "us-east-1",   "AWS_LAMBDA_LOG_STREAM_NAME": "2020/09/06/[$LATEST]57c598b33b164acf8e8151660249e50e",   "AWS_XRAY_DAEMON_ADDRESS": "169.254.79.2:2000",   "_AWS_XRAY_DAEMON_PORT": "2000",   "AWS_XRAY_CONTEXT_MISSING": "LOG_ERROR",   "AWS_LAMBDA_FUNCTION_VERSION": "$LATEST",   "AWS_ACCESS_KEY": "<access key>",   "AWS_LAMBDA_FUNCTION_NAME": "helloworldjava" }CONTEXT: {   "memoryLimit": 128,   "awsRequestId": "c40b4095-27f5-4153-ac37-fd2c103f4476",   "logGroupName": "/aws/lambda/helloworldjava",   "logStreamName": "2020/09/06/[$LATEST]57c598b33b164acf8e8151660249e50e",   "functionName": "helloworldjava",   "functionVersion": "$LATEST",   "invokedFunctionArn": "arn:aws:lambda:us-east-1:<AccountId>:function:helloworldjava",   "cognitoIdentity": {     "identityId": "",     "poolId": ""   },   "logger": {} }EVENT: {   "key1": "value1",   "key2": "value2",   "key3": "value3" }EVENT TYPE: class java.util.LinkedHashMapEND RequestId: c40b4095-27f5-4153-ac37-fd2c103f4476 REPORT RequestId: c40b4095-27f5-4153-ac37-fd2c103f4476    Duration: 516.04 ms    Billed Duration: 600 ms    Memory Size: 128 MB    Max Memory Used: 79 MB    Init Duration: 393.54 ms

在这里,我们完成了第一个 Java 中的 Lambda 处理程序。在下一篇文章中,我们将了解如何使用 AWS 开发工具包实现 API。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值