博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 中上下文对象_Java 中的 AWS Lambda 上下文对象 - AWS Lambda
阅读量:6691 次
发布时间:2019-06-25

本文共 3220 字,大约阅读时间需要 10 分钟。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Java 中的 AWS Lambda 上下文对象

当 Lambda 运行您的函数时,它会将上下文对象传递到处理程序。此对象提供的方法和属性包含有关调用、函数和执行环境的信息。

上下文方法

getRemainingTimeInMillis() – 返回在执行超时以前剩余的毫秒数。

getFunctionName() – 返回 Lambda 函数的名称。

getFunctionVersion() – 返回函数的版本。

getInvokedFunctionArn() – 返回用于调用函数的 Amazon 资源名称 (ARN)。指示调用方是否已指定版本或别名。

getMemoryLimitInMB() – 返回为函数分配的内存量。

getAwsRequestId() – 返回调用请求的标识符。

getLogGroupName() – 返回函数的日志组。

getLogStreamName() – 返回函数实例的日志流。

getIdentity() – (移动应用程序)返回有关授权请求的 Amazon Cognito 身份的信息。

getClientContext() – (移动应用程序)返回客户端应用程序向 Lambda 提供的客户端上下文。

getLogger() – 返回函数的记录器对象。

以下示例显示一个使用上下文对象访问 Lambda 记录器的函数。

package example;

import com.amazonaws.services.lambda.runtime.Context

import com.amazonaws.services.lambda.runtime.RequestHandler

import com.amazonaws.services.lambda.runtime.LambdaLogger

...

// Handler value: example.Handler

public class Handler implements RequestHandler, String>{

Gson gson = new GsonBuilder().setPrettyPrinting().create();

@Override

public String handleRequest(Map event, Context context)

{

LambdaLogger logger = context.getLogger();

String response = new String("200 OK");

// log execution details

logger.log("ENVIRONMENT VARIABLES: " + gson.toJson(System.getenv()));

logger.log("CONTEXT: " + gson.toJson(context));

// process event

logger.log("EVENT: " + gson.toJson(event));

logger.log("EVENT TYPE: " + event.getClass().toString());

return response;

}

}

该函数将上下文对象序列化为 JSON 并将其记录在其日志流中。

例 日志输出

START RequestId: 6bc28136-xmpl-4365-b021-0ce6b2e64ab0 Version: $LATEST

...

CONTEXT:

{

"memoryLimit": 512,

"awsRequestId": "6bc28136-xmpl-4365-b021-0ce6b2e64ab0",

"functionName": "java-console",

...

}

...

END RequestId: 6bc28136-xmpl-4365-b021-0ce6b2e64ab0

REPORT RequestId: 6bc28136-xmpl-4365-b021-0ce6b2e64ab0Duration: 198.50 msBilled Duration: 200 msMemory Size: 512 MBMax Memory Used: 90 MBInit Duration: 524.75 ms

上下文对象的接口在 aws-lambda-java-core 库中可用。您可以实现此接口来创建用于测试的上下文类。以下示例显示一个上下文类,该类返回大多数属性的虚拟值和一个有效的测试记录器。

package example;

import com.amazonaws.services.lambda.runtime.Context;

import com.amazonaws.services.lambda.runtime.CognitoIdentity;

import com.amazonaws.services.lambda.runtime.ClientContext;

import com.amazonaws.services.lambda.runtime.LambdaLogger

public class TestContext implements Context{

public TestContext() {}

public String getAwsRequestId(){

return new String("495b12a8-xmpl-4eca-8168-160484189f99");

}

public String getLogGroupName(){

return new String("/aws/lambda/my-function");

}

...

public LambdaLogger getLogger(){

return new TestLogger();

}

}

示例应用程序中的上下文

本指南的 GitHub 存储库包括演示如何使用上下文对象的示例应用程序。每个示例应用程序都包含用于轻松部署和清理的脚本、一个 AWS 无服务器应用程序模型 (AWS

SAM) 模板和支持资源。

Java 中的示例 Lambda 应用程序

blank-java – 一个 Java 函数,用于显示 Lambda 的 Java 库、日志记录、环境变量、层、AWS X-Ray 跟踪、单元测试和 AWS 开发工具包的使用情况。

java-basic – 具有单元测试和可变日志记录配置的最小 Java 函数。

java-events – 一个最小的 Java 函数,它将 aws-lambda-java-events 库与不需要 AWS 开发工具包作为依赖项的事件类型(例如 Amazon API Gateway)结合使用。

java-events-v1sdk – 一个 Java 函数,它将 aws-lambda-java-events 库与需要 AWS 开发工具包作为依赖项的事件类型(Amazon Simple Storage Service (Amazon S3)、Amazon DynamoDB

和 Amazon Kinesis)结合使用。

s3-java – 一个 Java 函数,它处理来自 Amazon S3 的通知事件,并使用 Java 类库 (JCL) 从上传的图像文件创建缩略图。

所有示例应用程序都有一个用于单元测试的测试上下文类。java-basic 应用程序显示您如何使用上下文对象获取记录器。它使用 SLF4J 和 Log4J 2 提供适用于本地单元测试的记录器。

转载地址:http://stdoo.baihongyu.com/

你可能感兴趣的文章
SVN Cleanup failed to process the following paths错误的解决
查看>>
使用button的:after伪类选择器内容的跳动
查看>>
Java从小白到入门,Day8,JAVAOO-多态
查看>>
CSS之各种居中
查看>>
poj 2594 Treasure Exploration
查看>>
bzoj千题计划297:bzoj3629: [JLOI2014]聪明的燕姿
查看>>
iOS简单实现毛玻璃效果
查看>>
maven学习(5)-Maven 聚合与继承特性
查看>>
可以设置命令执行的超时时间的脚本
查看>>
SQL server权限管理和备份实例
查看>>
sql server中的用户临时表和全局临时表的区别
查看>>
大整数算法[06] 绝对值加法
查看>>
2018-2019-1 20165325 《信息安全系统设计基础》第五周学习总结
查看>>
Python 列表(list)操作
查看>>
洛谷P1417 烹调方案
查看>>
Bzoj3652 大新闻
查看>>
GridView之数据邦定(HYPERLINK)小技巧与从数据库取汇总参数传值
查看>>
面试问题总结
查看>>
HTML特殊转义字符列表
查看>>
2、NIO--缓冲区(Buffer)
查看>>