AWS Lambda函数示例

今天沿微服务,另一个概念是非常受欢迎,是无服务器架构。无服务器是指具有弹性的云部署模型,您可以在其中将代码/服务部署到第三方云提供商(例如AWS),而不是手动管理服务器和平台。云提供商提供了所有基础架构和平台支持,您可以在其中托管使用​​您选择的编程语言编写的代码,其余一切由云基础架构负责。

通常,在无服务器体系结构中,托管成本也仅基于该功能的执行时间(即计算时间),即使您的使用量从每天几个请求扩展到每秒数千个。从成本,性能和易于维护的角度来看,这对于组织来说确实是极大的灵活性。这就是为什么这种开发微服务(而不是NanoservicesFaaS)的方法。

无服务器体系结构是指严重依赖第三方服务(称为后端即服务BaaS)或临时容器(函数即服务FaaS)中运行的自定义代码的应用程序,目前该应用程序是最知名的供应商主机。 AWS Lambda。–(马丁·弗劳德Martin Flower))

AWS是云计算领域的市场领导者,他们提供了一个名为“ AWS Lambda ”的平台。在Lambda中,我们可以使用多种语言支持来托管函数或代码,例如Java,Node,.Net,Python等。

今天,我们将讨论如何在eclipse中使用Java开发一个简单的函数,然后将其部署在AWS Lambda平台中。

目录

前提条件
开发Lambda函数将功能
部署到AWS Lambda 
从AWS控制台
Summery 测试Lambda函数

先决条件

  1. AWS帐户 –开始此练习之前,我们需要向AWS免费套餐帐户注册。AWS提供了这种类型的访问权限,为期一年,以针对不同的服务进行练习。这非常简单,您需要单击此链接https://aws.amazon.com/,然后单击主页本身右上角的“创建AWS账户”按钮。提供所需的注册详细信息。它将要求您提供一些信用卡,可以随时提供您自己的信用卡,除非您尝试了不属于免费套餐的服务,否则AWS不会收费。
  2. 在Eclipse中安装的AWS工具箱 –需要遵循有关此主题的AWS官方文档才能继续进行安装和配置。这就像另一个eclipse插件安装一样。安装完成后,我们需要使用从AWS Console下载的您自己的密钥对配置AWS凭证。官方文档已经明确提到了这些步骤,这就是我们跳过这些安装部分的原因。

开发Lambda函数

因此,我们的环境已准备就绪,我们现在将开发Lambda函数,然后将其部署在AWS中并从AWS控制台进行测试。

  1. 创建AWS Lambda Java项目

    我们需要首先创建一个Eclipse项目,以开始编写Lambda函数。在这里,我们将使用AWS工具箱创建AWS lambda项目。要创建项目,只需右键单击Project Explorer,然后创建一个新Project,然后选择AWS Lambda Java Project作为项目类型。输入所需的详细信息,将创建Lambda项目。这是我创建本文中使用的示例项目时的两个月食屏幕截图。

    AWS lambda项目创建–步骤1
    AWS lambda项目创建–步骤2
    AWS lambda项目创建–步骤3
    AWS lambda项目创建–步骤4
    Eclipse项目结构
  2. 添加Lambda函数代码

    现在,我们已经创建了lambda项目,并且所有必需的运行时依赖项都已由AWS工具箱提供,并且我们准备向lambada函数添加逻辑。

    打开在LambdaFunctionHandler创建项目时创建的类,然后在其中添加逻辑。在我们的例子中,函数MyLambdaRequest作为请求和MyLambdaResponse响应。Lambda将JSON在执行时将其转换为,并且对象到JSON序列化将在AWS端自动进行。

    在这种情况下,我们的逻辑非常简单,我们只打印请求并在响应中填充一些问候消息以及其他几个值。最终代码看起来像–

    LambdaFunctionHandler.java

    package com.example.howtodoinjava;
    
    import java.util.Date;
    import java.util.UUID;
    import com.amazonaws.services.lambda.runtime.Context;
    import com.amazonaws.services.lambda.runtime.RequestHandler;
    
    public class LambdaFunctionHandler implements RequestHandler<MyLambdaRequest, MyLambdaResponse> {
    
        @Override
        public MyLambdaResponse handleRequest(MyLambdaRequest input, Context context) {
            context.getLogger().log("Input: " + input);
            MyLambdaResponse lambdaResponse = new MyLambdaResponse();
            try {
    			lambdaResponse.setResponseMessage("Hello " + input.getName() + " Response Time : " + new Date());
    			lambdaResponse.setTransactionID(UUID.randomUUID().toString());
    		} catch (Exception e) {
    			e.printStackTrace();
    			lambdaResponse.setResponseMessage(e.getMessage());
    		}
            context.getLogger().log("Response : " + lambdaResponse);
            return lambdaResponse;
        }
    }
    

    MyLambdaRequest.java

    package com.example.howtodoinjava;
    
    public class MyLambdaRequest 
    {
    	String name;
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	@Override
    	public String toString() {
    		return "MyLambdaRequest [name=" + name + "]";
    	}
    }
    

    MyLambdaResponse.java

    package com.example.howtodoinjava;
    
    public class MyLambdaResponse {
    	String responseMessage;
    	String transactionID;
    
    	public String getResponseMessage() {
    		return responseMessage;
    	}
    
    	public void setResponseMessage(String responseMessage) {
    		this.responseMessage = responseMessage;
    	}
    
    	public String getTransactionID() {
    		return transactionID;
    	}
    
    	public void setTransactionID(String transactionID) {
    		this.transactionID = transactionID;
    	}
    
    	@Override
    	public String toString() {
    		return "MyLambdaResponse [responseMessage=" + responseMessage + "
    				, transactionID=" + transactionID + "]";
    	}
    }
    

将功能部署到AWS Lambda

因此,我们开发了lambda函数。对于演示而言,这非常简单,但是我们可以在此处添加任何复杂的业务逻辑。我们可以添加代码以与其他AWS服务(如RDS, SNS, S3, SQSetc)进行交互。

现在,我们将通过AWS工具箱部署此功能。部署步骤为–

  1. 右键点击项目
  2. 单击Amazon Web Services菜单并选择Upload Function to AWS Lambda选项。
  3. 选择所需的详细信息,例如将在其中部署AWS区域,lambda函数名称,所需的内存等,然后单击Finish。此后,将上传并部署Lambda函数。

这是我在上载此示例项目时捕获的屏幕截图。

Lambda函数上传到AWS –步骤1
Lambda函数上传到AWS –步骤2
Lambda函数上传到AWS –步骤3
Lambda函数上传到AWS –步骤4

所有这些都在Eclipse方面,我们现在将登录到AWS控制台并进行一些配置,并从AWS控制台本身测试上传的功能。

从AWS控制台测试Lambda函数

使用您的凭证登录到AWS控制台,然后将区域更改为从Eclipse上传项目时选择的区域。在我的情况下是美国西部(俄勒冈),然后通过单击服务菜单上的Lambda链接转到Lambda服务主页。这是转到Lambda主页的“服务”菜单。

转到Lambda登陆页面的AWS服务菜单

这是Lambda Landing屏幕,其中包含该AWS区域已经可用的所有Lambda函数。我们可以使用Lambda函数名称进行过滤,以找到我们要查找的特定lambda函数。

Lambda函数着陆页以及新开发的Lambda

现在单击lambda名称,我们将进入详细信息页面,我们需要配置测试数据以测试该功能,然后单击Test此页面上的按钮以调用该功能并在屏幕上查看结果。本身。

Lambda功能详细信息屏幕

现在,我们将通过单击菜单来配置测试数据Actions --> configure test event。在这里,我们需要选择模板作为模板,Hello World并需要提供相应的JSON请求,该请求可以编组为实际的请求类型(在我们的示例中MyLambdaRequest)。该屏幕看起来像

配置输入以进行调用

现在,一旦配置了测试数据,我们就可以单击“测试”按钮,并在下面的同一页面中查看响应以及日志。

Lambda函数的测试结果

摘要

您会看到,我们的第一个Lambda功能已启动并在生产级基础架构中运行,只需30分钟。是不是很棒!因此,今天我们看到了如何在eclipse中创建AWS lambda项目,开发Lambda函数,将其部署到某些AWS区域以及如何从AWS控制台进行测试。

请注意,许多AWS服务都可以触发此lambda函数,以构建一个相互调用的微服务和纳米服务的完整生态系统。

在下一个主题中,我们将学习如何使用API​​网关调用Lambda函数。

学习愉快!

This entry was posted in   Aws.
Bookmark the   permalink.

saigon has written 1440 articles

Leave a Reply