如今,Amazon Web Services越来越受欢迎。 Java是AWS的一等公民,它很容易上手。
部署应用程序有些不同,但是仍然很容易和方便。

AWS Lambda是一种计算服务,您可以在其中将代码上传到AWS Lambda,并且该服务可以使用AWS基础架构代表您运行代码。 在您上传代码并创建我们称为Lambda函数的功能之后,AWS Lambda会负责调配和管理用于运行代码的服务器。

实际上,将lambda视为运行需要最多五分钟才能完成的任务。 如果简单的操作或工作不费时,并且不需要庞大的框架,则使用AWS lambda是可行的方法。 AWS lambda同样适用于水平扩展。

最简化的示例是创建一个lambda函数来响应请求。

我们将实现RequestHandler接口。

package com.gkatzioura.deployment.lambda;import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;import java.util.Map;
import java.util.logging.Logger;/*** Created by gkatzioura on 9/10/2016.*/
public class RequestFunctionHandler implements RequestHandler<Map<String,String>,String> {private static final Logger LOGGER = Logger.getLogger(RequestFunctionHandler.class.getName());public String handleRequest(Map <String,String> values, Context context) {LOGGER.info("Handling request");return "You invoked a lambda function";}}

不知何故,RequestHandler就像一个控制器。

要继续,我们将创建一个具有所需依赖关系的jar文件,因此我们将创建一个自定义gradle任务

apply plugin: 'java'repositories {mavenCentral()
}dependencies {compile ('com.amazonaws:aws-lambda-java-core:1.1.0','com.amazonaws:aws-lambda-java-events:1.1.0')
}task buildZip(type: Zip) {from compileJavafrom processResourcesinto('lib') {from configurations.runtime}
}build.dependsOn buildZip

那我们应该建立

gradle build

现在,我们必须将代码上传到我们的lambda函数。

我在Amazon上有一个s3存储桶,仅用于lambda函数。 假设我们的存储桶称为lambda函数(我很确定它已经被保留)。 我们将尽可能使用aws cli 。

aws s3 cp build/distributions/JavaLambdaDeployment.zip s3://lambda-functions/JavaLambdaDeployment.zip

现在,我们不是通过手动方式创建lambda函数,而是通过创建云形成模板来做到这一点。

{"AWSTemplateFormatVersion": "2010-09-09","Resources": {"LF9MBL": {"Type": "AWS::Lambda::Function","Properties": {"Code": {"S3Bucket": "lambda-functions","S3Key" : "JavaLambdaDeployment.zip",},"FunctionName": "SimpleRequest","Handler": "com.gkatzioura.deployment.lambda.RequestFunctionHandler","MemorySize": 128,"Role":"arn:aws:iam::274402012893:role/lambda_basic_execution","Runtime":"java8"},"Metadata": {"AWS::CloudFormation::Designer": {"id": "66b2b325-f19a-4d7d-a7a9-943dd8cd4a5c"}}}}
}

下一步是将我们的cloudformation模板上传到s3存储桶。 我个人使用一个单独的存储桶作为模板。 假设我们的存储桶称为cloudformation-templates

aws s3 cp cloudformationjavalambda.template s3://cloudformation-templates/cloudformationjavalambda.template

下一步是使用指定的模板创建我们的cloudformation堆栈

aws cloudformation create-stack --stack-name JavaLambdaStack --template-url https://s3.amazonaws.com/cloudformation-templates/cloudformationjavalambda.template

为了检查,我们将通过亚马逊cli调用lambda函数。

aws lambda invoke --invocation-type RequestResponse --function-name SimpleRequest --region eu-west-1 --log-type Tail --payload '{}' outputfile.txt

结果是预期的

"You invoked a lambda function"

您可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2016/10/java-aws-cloud-using-lambda.html

使用Lambda在AWS云上使用Java相关推荐

  1. aws lambda使用_使用Lambda,Api Gateway和CloudFormation在AWS云上使用Java

    aws lambda使用 在上一篇文章中,我们实现了基于Java的aws lambda函数,并使用CloudFront进行了部署. 由于我们已经设置了lambda函数,因此我们将使用AWS API G ...

  2. 使用Lambda,Api Gateway和CloudFormation在AWS云上使用Java

    在上一篇文章中,我们实现了基于Java的aws lambda函数,并使用CloudFront进行了部署. 由于我们已经设置了lambda函数,因此我们将使用AWS API Gateway将其与http ...

  3. AWS云上部署Hadoop

    目录 一.实验目的 二.实验操作 1.创建EC2实例​编辑 2.使用putty连接实例​编辑 3.新增 Hadoop 用户.安装 Java 环境(master.slave01.slave02都需进行相 ...

  4. 结合 Authing 实现 AWS 云上的身份认证与授权

    身份认证与 Cognito 服务介绍 在 Web 或 App 开发过程中,用户的认证和权限处理是非常重要的一个模块,这里包括用户注册.登录认证及管理对应的权限.除了用户名密码登录外,通过第三方社交帐号 ...

  5. 如何在矩池云上安装java

    在矩池云上安装java其实非常简单,按照下面的办法安装即可 安装 OpenJDK 11 apt update apt install openjdk-11-jdk java -version 安装 O ...

  6. AWS云上基础服务体验课程

    上海-亚马逊 AWS 联合创新中心举办的 SA Immersion Day(Workshop)线上技术培训会圆满结课.此次培训主题为 AWS 云上基础服务介绍及体验,共邀请了两位 AWS 解决方案架构 ...

  7. 重塑云上的 Java 语言

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 Photo @  Toa Heftiba 文 |郁磊 音乐无国界, ...

  8. 拼不过 GO?阿里如何重塑云上的 Java

    阿里妹导读:Java 诞生于20年前,拥有大量优秀的企业级框架,践行 OOP 理念,更多体现的是严谨以及在长时间运行条件下的稳定性和高性能.反观如今,在要求快速迭代交付的云场景下,语言的简单性似乎成了 ...

  9. 码云上开源JAVA项目收藏

    一. 个人学习项目 1. BootDo面向学习型的开源框架 (可以当做 管理台脚手架) BootDo是高效率,低封装,面向学习型,面向微服的开源Java EE开发框架. BootDo是在SpringB ...

最新文章

  1. linux主机设置本地swap
  2. 什么是电子路径用于连接计算机主板上的芯片,计算机的组成部分及功能346.doc...
  3. 电设国赛获奖作品学习笔记
  4. 格密码教程(三):基础域概念,体积等;阿达马不等式,行列式
  5. v-for获取(循环次数)对象的length长度
  6. 为什么说 Julia 更优于 Python?
  7. 当动物保护用上AI……
  8. 记一次微信H5全屏播放视频的总结
  9. 简单自学机器学习理论——引言 (Part I )
  10. sqlplus登录指定服务器,sqlplus 指定数据库
  11. 华软计算机网络课程设计任务,计算机网络网络课程设计任务.doc
  12. 带你了解锂电池保护板的工作原理
  13. juce开发vst配置
  14. V2X方案之OBU介绍
  15. 记一次数据结构与算法作业:利用循环和递归输出1-N的正整数的程序分析比较
  16. element plus组件居中显示
  17. Learning to Rank(LTR)(转)
  18. 信道估计中的导频结构
  19. MATLAB虫害检测农业应用设计
  20. SQLServer常用快捷键汇总

热门文章

  1. NIO学习–核心概念与基本读写
  2. Struts文件上传与下载详解 _上传多个文件
  3. JS函数中的arguments
  4. dw怎么在框架中加入网页_怎样使用iframe,在网页中插入页面
  5. pivot sqlserver 条件_行转列之SQLSERVERPIVOT与用法详解
  6. python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...
  7. (转)使用IDEA将普通MAVEN项目转为WEB项目
  8. java安全——类加载器+字节码校验+安全管理器与访问权限
  9. 如何使用eclemma插件_如何集成和使用EclEmma插件来获得良好的Junit覆盖率
  10. 魔术方法 类 序列化_Java序列化魔术方法及其示例使用