日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 aws lambda使用_使用Lambda,Api Gateway和CloudFormation在AWS云上使用Java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

aws lambda使用

在上一篇文章中,我們實現了基于Java的aws lambda函數,并使用CloudFront進行了部署。 由于我們已經設置了lambda函數,因此我們將使用AWS API Gateway將其與http端點集成。

Amazon API Gateway是一項完全托管的服務,使開發人員可以輕松地創建,發布,維護,監控和保護各種規模的API。 在AWS管理控制臺中單擊幾下,您可以創建一個API,充當應用程序從您的后端服務(例如Amazon Elastic Compute Cloud上運行的工作負載)訪問數據,業務邏輯或功能的“前門”。 (Amazon EC2),在AWS Lambda或任何Web應用程序上運行的代碼

對于此示例,將API網關想象為一個HTTP連接器。 我們將更改原始功能以實現劃分。

package com.gkatzioura.deployment.lambda;import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler;import java.math.BigDecimal; 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 String NUMERATOR_KEY = "numerator";private static final String DENOMINATOR_KEY = "denominator";private static final Logger LOGGER = Logger.getLogger(RequestFunctionHandler.class.getName());public String handleRequest(Map <String,String> values, Context context) {LOGGER.info("Handling request");if(!values.containsKey(NUMERATOR_KEY)||!values.containsKey(DENOMINATOR_KEY)) {return "You need both numberator and denominator";}try {BigDecimal numerator = new BigDecimal(values.get(NUMERATOR_KEY));BigDecimal denominator= new BigDecimal(values.get(DENOMINATOR_KEY));return numerator.divide(denominator).toString();} catch (Exception e) {return "Please provide valid values";}}}

然后,我們將更改lambda代碼并在s3上對其進行更新。

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

下一步是更新我們的CloudFormation模板,并將api網關轉發請求添加到我們的lambda函數。

首先,我們必須聲明我們的Rest API

"AGRA16PAA": {"Type": "AWS::ApiGateway::RestApi","Properties": {"Name": "CalculationApi"}}

然后,我們需要添加一個休息資源。 在DependsOn元素內,我們可以看到rest api的ID。 因此,cloudwatch將在創建其余api之后創建資源。

"AGR2JDQ8": {"Type": "AWS::ApiGateway::Resource","Properties": {"RestApiId": {"Ref": "AGRA16PAA"},"ParentId": {"Fn::GetAtt": ["AGRA16PAA","RootResourceId"]},"PathPart": "divide"},"DependsOn": ["AGRA16PAA"]}

另一個關鍵部分是添加權限,以便能夠調用我們的lambda函數。

"LPI6K5": {"Type": "AWS::Lambda::Permission","Properties": {"Action": "lambda:invokeFunction","FunctionName": {"Fn::GetAtt": ["LF9MBL", "Arn"]},"Principal": "apigateway.amazonaws.com","SourceArn": {"Fn::Join": ["",["arn:aws:execute-api:", {"Ref": "AWS::Region"}, ":", {"Ref": "AWS::AccountId"}, ":", {"Ref": "AGRA16PAA"}, "/*"]]}}}

最后一步是添加api網關方法,以便能夠從api網關調用我們的lambda函數。 此外,我們將添加api網關部署指令。

"Deployment": {"Type": "AWS::ApiGateway::Deployment","Properties": {"RestApiId": { "Ref": "AGRA16PAA" },"Description": "First Deployment","StageName": "StagingStage"},"DependsOn" : ["AGM25KFD"]},"AGM25KFD": {"Type": "AWS::ApiGateway::Method","Properties": {"AuthorizationType": "NONE","HttpMethod": "POST","ResourceId": {"Ref": "AGR2JDQ8"},"RestApiId": {"Ref": "AGRA16PAA"},"Integration": {"Type": "AWS","IntegrationHttpMethod": "POST","IntegrationResponses": [{"StatusCode": 200}],"Uri": {"Fn::Join": ["",["arn:aws:apigateway:",{"Ref": "AWS::Region"},":lambda:path/2015-03-31/functions/",{"Fn::GetAtt": ["LF9MBL", "Arn"]},"/invocations"]]}},"MethodResponses": [{"StatusCode": 200}]}

因此,我們最終完成了新的cloudwatch配置。

{"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"}},"Deployment": {"Type": "AWS::ApiGateway::Deployment","Properties": {"RestApiId": { "Ref": "AGRA16PAA" },"Description": "First Deployment","StageName": "StagingStage"},"DependsOn" : ["AGM25KFD"]},"AGM25KFD": {"Type": "AWS::ApiGateway::Method","Properties": {"AuthorizationType": "NONE","HttpMethod": "POST","ResourceId": {"Ref": "AGR2JDQ8"},"RestApiId": {"Ref": "AGRA16PAA"},"Integration": {"Type": "AWS","IntegrationHttpMethod": "POST","IntegrationResponses": [{"StatusCode": 200}],"Uri": {"Fn::Join": ["",["arn:aws:apigateway:",{"Ref": "AWS::Region"},":lambda:path/2015-03-31/functions/",{"Fn::GetAtt": ["LF9MBL","Arn"]},"/invocations"]]}},"MethodResponses": [{"StatusCode": 200}]},"DependsOn": ["LF9MBL","AGR2JDQ8","LPI6K5"]},"AGR2JDQ8": {"Type": "AWS::ApiGateway::Resource","Properties": {"RestApiId": {"Ref": "AGRA16PAA"},"ParentId": {"Fn::GetAtt": ["AGRA16PAA","RootResourceId"]},"PathPart": "divide"},"DependsOn": ["AGRA16PAA"]},"AGRA16PAA": {"Type": "AWS::ApiGateway::RestApi","Properties": {"Name": "CalculationApi"}},"LPI6K5": {"Type": "AWS::Lambda::Permission","Properties": {"Action": "lambda:invokeFunction","FunctionName": {"Fn::GetAtt": ["LF9MBL", "Arn"]},"Principal": "apigateway.amazonaws.com","SourceArn": {"Fn::Join": ["",["arn:aws:execute-api:", {"Ref": "AWS::Region"}, ":", {"Ref": "AWS::AccountId"}, ":", {"Ref": "AGRA16PAA"}, "/*"]]}}}} }

最后但并非最不重要的一點是,我們必須更新以前的cloudformation堆棧。

所以我們上傳了我們的最新模板

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

我們要做的就是更新堆棧。

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

我們的堆棧剛剛更新。
我們可以到達我們的api網關端點并嘗試發布帖子。

curl -H "Content-Type: application/json" -X POST -d '{"numerator":1,"denominator":"2"}' https://{you api gateway endpoint}/StagingStage/divide "0.5"

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

翻譯自: https://www.javacodegeeks.com/2016/10/java-aws-cloud-using-lambda-api-gateway-cloudformation.html

aws lambda使用

總結

以上是生活随笔為你收集整理的aws lambda使用_使用Lambda,Api Gateway和CloudFormation在AWS云上使用Java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。