aws-lambdaaws-lambda入门


备注

AWS Lambda是一种无服务器设置,用于在云中执行功能。它利用现有的Amazon Web Services技术进行无限扩展,并在必要时在其自己的隔离环境中运行。使用Lambda,您可以上传代码,将其配置为基于各种触发器运行,然后在完成时自动停用该进程。它采用按使用付费模式运行,极具成本效益且易于扩展。


AWS Lambda支持用Node.js(JavaScript),Python,Java(Java 8兼容)和C#(.NET Core)编写的代码。您的代码可以包含现有库,甚至是原生库。

触发器可包括:

HTTP端点

  • 移动应用
  • 其他AWS服务(包括使用Amazon API Gateway的REST实施)

Lambda最适合实时无服务器数据处理,例如:

  • 上传文件处理
    • 转码
    • 索引
    • 验证
    • 调整大小和过滤
  • 流数据分析
  • 遥测
  • 作为基于方法的移动和Web后端运行
  • 扩展和链接其他AWS产品

安装或设置

  1. 登录AWS控制台并单击“ 服务”选项卡下的“ Lambda ”。

  2. 函数下,您将能够使用相同标记的按钮创建Lambda函数在此处输入图像描述

  3. 您将看到一个可以选择蓝图的屏幕。这些只是现有Lambda函数的起点,可以快速启动Lambda。 在此处输入图像描述

  4. 在下一个屏幕上,您可以配置任何您想用来“设置”此Lambda函数的触发器。您可以选择无触发器(稍后通过手动设置,具体取决于您的任务),API网关(用于创建无服务器REST客户端),Alexa技能或许多其他其他触发您将创建的功能。 在此处输入图像描述

  5. 您将在下一个屏幕上完成配置,方法是设置名称描述 ,选择运行时 ,选择内联编辑函数,上传.zip文件或从Amazon S3上传文件,选择一个角色 (对于基于权限的用途很有用) AWS服务之间的交互),设置内存和限制,并准备好您的应用程序以供实时使用。 在此处输入图像描述 在此处输入图像描述

  6. 最后,您将查看您的功能并创建它。由于Lambda使用按使用付费模式,因此在您开始使用新创建的功能之前不会产生任何充电器。 在此处输入图像描述

Java AWS-Lambda S3已触发

AWS-Lambda函数可以附加到某个桶事件。无论何时创建或删除文件/文件夹,事件都可以触发lambda函数执行。

一个简单的Lambda函数,用于打印上传文件的名称

这是一个用于打印上传文件名称的lambda项目。对于maven,我们需要添加这些依赖项:

    <dependencies>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-core</artifactId>
        <version>1.1.0</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-events</artifactId>
        <version>1.3.0</version>
        <type>jar</type>
    </dependency>
</dependencies>
 

现在让我们转到我们的HelloWorld类:

package com;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.s3.event.S3EventNotification;

public class HelloWorld implements RequestHandler< S3Event, String> {
    @Override
    public String handleRequest(S3Event event, Context ctx) {
     S3EventNotification.S3EventNotificationRecord record=event.getRecords().get(0);
     System.out.println("Bucket Name is "+record.getS3().getBucket().getName());
     System.out.println("File Path is "+record.getS3().getObject().getKey());
     return null;
    }
}
 

下一步是使用mvn构建项目。

构建项目后,我们需要将其上传到AWS-Lambda。转到Lambda,选择“创建lambda函数”。跳过选择蓝图的部分,因为Java通常不存在。

此外,跳过“配置触发器”,因为我们将从其他位置配置它。在下一页中,输入第一个lambda函数的名称,然后输入一个小描述,并选择Java作为运行时。

对于“代码输入类型”,选择“从.ZIP文件上传”,然后在下一个位置选择.zip文件进行上传。

这个页面上棘手的部分是Handler字段。在处理程序字段中,您必须指定实现RequestHandler的类的位置。此类是lambda的入口点,如果未正确指定,则Lambda函数将不起作用。我们的案件处理程序是“com.HelloWorld”

将S3触发器附加到Lambda:

在这里,我们将附加一个S3文件上传的触发器

  • 转到S3,选择存储桶,然后选择“属性”。
  • 在“属性”部分中,转到“事件”。
  • 添加活动详情。在“事件”字段中,选择要触发Lambda的方式。我们将选择“ObjectCreated(All)”注意lambda函数和bucket需要在同一个亚马逊地区
  • 对于“Sends to”,请检查Lambda函数,然后从列表中选择lambda函数。

监控Lambda输出

现在,我们将文件上传到具有lambda触发器的存储桶。要查看lambda输出和日志,请转到“CloudWatch”,然后选择“Logs”,然后选择Lambda函数。您可能会在“Log Streams”下看到许多条目,选择最新的条目并将其打开。你应该能够在那里看到lambda执行的输出。