使用Lambda在AWS云上使用Java
如今,Amazon Web Services越來(lái)越受歡迎。 Java是AWS的一等公民,它很容易上手。
部署應(yīng)用程序有些不同,但是仍然很容易和方便。
AWS Lambda是一種計(jì)算服務(wù),您可以在其中將代碼上傳到AWS Lambda,并且該服務(wù)可以使用AWS基礎(chǔ)架構(gòu)代表您運(yùn)行代碼。 在您上傳代碼并創(chuàng)建我們稱為L(zhǎng)ambda函數(shù)的功能之后,AWS Lambda會(huì)負(fù)責(zé)調(diào)配和管理用于運(yùn)行代碼的服務(wù)器。
實(shí)際上,將lambda視為運(yùn)行需要最多五分鐘才能完成的任務(wù)。 如果簡(jiǎn)單的操作或工作不費(fèi)時(shí),并且不需要龐大的框架,則使用AWS lambda是可行的方法。 AWS lambda同樣適用于水平擴(kuò)展。
最簡(jiǎn)化的示例是創(chuàng)建一個(gè)lambda函數(shù)來(lái)響應(yīng)請(qǐng)求。
我們將實(shí)現(xiàn)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就像一個(gè)控制器。
要繼續(xù),我們將創(chuàng)建一個(gè)具有所需依賴關(guān)系的jar文件,因此我們將創(chuàng)建一個(gè)自定義gradle任務(wù)
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那我們應(yīng)該建立
gradle build現(xiàn)在,我們必須將代碼上傳到我們的lambda函數(shù)。
我在Amazon上有一個(gè)s3存儲(chǔ)桶,僅用于lambda函數(shù)。 假設(shè)我們的存儲(chǔ)桶稱為lambda函數(shù)(我很確定它已經(jīng)被保留)。 我們將盡可能使用aws cli 。
aws s3 cp build/distributions/JavaLambdaDeployment.zip s3://lambda-functions/JavaLambdaDeployment.zip現(xiàn)在,我們不是通過(guò)手動(dòng)方式創(chuàng)建lambda函數(shù),而是通過(guò)創(chuàng)建云形成模板來(lái)做到這一點(diǎn)。
{"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存儲(chǔ)桶。 我個(gè)人使用一個(gè)單獨(dú)的存儲(chǔ)桶作為模板。 假設(shè)我們的存儲(chǔ)桶稱為cloudformation-templates
aws s3 cp cloudformationjavalambda.template s3://cloudformation-templates/cloudformationjavalambda.template下一步是使用指定的模板創(chuàng)建我們的cloudformation堆棧
aws cloudformation create-stack --stack-name JavaLambdaStack --template-url https://s3.amazonaws.com/cloudformation-templates/cloudformationjavalambda.template為了檢查,我們將通過(guò)亞馬遜cli調(diào)用lambda函數(shù)。
aws lambda invoke --invocation-type RequestResponse --function-name SimpleRequest --region eu-west-1 --log-type Tail --payload '{}' outputfile.txt結(jié)果是預(yù)期的
"You invoked a lambda function"您可以在github上找到源代碼。
翻譯自: https://www.javacodegeeks.com/2016/10/java-aws-cloud-using-lambda.html
總結(jié)
以上是生活随笔為你收集整理的使用Lambda在AWS云上使用Java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金蝶中核销单的作用(金蝶核销单是什么意思
- 下一篇: javafx游戏_JavaFX游戏(四连