使用Lambda在AWS云上使用Java
如今,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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金蝶中核销单的作用(金蝶核销单是什么意思
- 下一篇: javafx游戏_JavaFX游戏(四连