GVKun编程网logo

AWS S3中的“ KeyError:'记录'”-Lambda触发器(aws lambda 定时触发)

5

在本文中,我们将详细介绍AWSS3中的“KeyError:'记录'”-Lambda触发器的各个方面,并为您提供关于awslambda定时触发的相关解答,同时,我们也将为您带来关于AWSLambas-从

在本文中,我们将详细介绍AWS S3中的“ KeyError:'记录'”-Lambda触发器的各个方面,并为您提供关于aws lambda 定时触发的相关解答,同时,我们也将为您带来关于AWS Lambas - 从 Lambda 或对 S3 对象的引用返回数据更有效?、AWS Lambda Java:Lambda无法解压缩文件、AWS Lambda 上的 Spring Boot 应用程序 - 使用 Docker 容器映像测量 Lambda 函数的冷启动和热启动部分、AWS Lambda 函数和触发器之间使用的通信协议和端口是什么?的有用知识。

本文目录一览:

AWS S3中的“ KeyError:'记录'”-Lambda触发器(aws lambda 定时触发)

AWS S3中的“ KeyError:'记录'”-Lambda触发器(aws lambda 定时触发)

我有以下lambda函数代码,用于简单地打印出S3存储桶的已上传事件的作者和元数据:

from __future__ import print_functionimport jsonimport urllibimport boto3print(''Loading function'')s3 = boto3.client(''s3'')def lambda_handler(event, context):    #print("Received event: " + json.dumps(event, indent=2))    # bucket = event[''Records''][0][''s3''][''bucket''][''name'']    for record in event[''Records'']:        bucket = record[0][''s3''][''bucket''][''name'']        key = record[0][''s3''][''object''][''key'']        response = s3.head_object(Bucket=bucket, Key=key)        logger.info(''Response: {}''.format(response))        print("Author : " + response[''Metadata''][''author''])        print("Description : " + response[''Metadata''][''description''])

但是,测试时出现以下错误:

{  "stackTrace": [    [      "/var/task/lambda_function.py",      17,      "lambda_handler",      "for record in event[''Records'']:"    ]  ],  "errorType": "KeyError",  "errorMessage": "''Records''"}

访问S3对象的存储桶名称和键名时,我做错什么了吗?如果没有,那我在做什么错呢?

答案1

小编典典

晚会有点晚。但是,这是我的第一篇文章!

说明:

在lambda面板中测试时-> def lambda_handler(event,context)<-事件将直接注入。

但是,在AWS API中, 添加映射模板 或其他必需的->事件<-为空,因此导致测验:

“ errorType”:“ KeyError”,“ errorMessage”:“’记录’”

这是空指针。记录不存在,因为->事件<-不存在。

解:

您需要在AWS API中配置 Integration Request 。单击“ 人体贴图模板” 。然后 将映射模板 集内容类型
添加application / json, 然后编辑生成的映射模板:

{  "body" : $input.json(''$''),  "headers": {    #foreach($header in $input.params().header.keySet())    "$header": "$util.escapeJavaScript($input.params().header.get($header))" #if($foreach.hasNext),#end    #end  },  "method": "$context.httpMethod",  "params": {    #foreach($param in $input.params().path.keySet())    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end    #end  },  "query": {    #foreach($queryParam in $input.params().querystring.keySet())    "$queryParam": "$util.escapeJavaScript($input.params().querystring.get($queryParam))" #if($foreach.hasNext),#end    #end  }}

编辑Lambda函数

更换:

用于事件[‘Records’]中的记录:

与:

记录事件[‘query’] [‘Records’]

不知道堆栈是否会用这个答案对您执行ping操作-所以我称呼您@ Dawny33 @KevinOelen @franklinsijo

至于解释,我自己想了一下。但是,“映射模板”来自https://medium.com/simple-thoughts-amplified/passing-
variables-from-aws-api-gateway-to-
lambda-3c5d8602081b

AWS Lambas - 从 Lambda 或对 S3 对象的引用返回数据更有效?

AWS Lambas - 从 Lambda 或对 S3 对象的引用返回数据更有效?

如何解决AWS Lambas - 从 Lambda 或对 S3 对象的引用返回数据更有效??

所以我有一个 lambda 构建一个 PDF 文件。它将数据存储在 S3 中以用于缓存目的。如果文件不是太大而无法从 lambda 执行中作为字节数组返回,是否应该以这种方式返回,或者返回对 s3 对象的引用并将其下载到另一端是否更有效?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

AWS Lambda Java:Lambda无法解压缩文件

AWS Lambda Java:Lambda无法解压缩文件

我正在尝试将Java与AWS Lambda结合使用。我创建了一个具有所有依赖项的jar文件(使用maven-assembly-
plugin)。上传后,我无法调用lambda。我收到错误消息Calling the Invoke API failed with message:Lambda was not able to unzip the file。jar文件为11 MB。我可以用java -jar

答案1

小编典典

maven-assemply-plugin需要被告知输出a zip而不是a jar。(我什至不知道有什么区别!)

将此添加到其配置中:

<plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-assembly-plugin</artifactId>     ...     <configuration>         ...         <formats>            <format>zip</format>         </formats>     </configuration></plugin>

AWS Lambda 上的 Spring Boot 应用程序 - 使用 Docker 容器映像测量 Lambda 函数的冷启动和热启动部分

AWS Lambda 上的 Spring Boot 应用程序 - 使用 Docker 容器映像测量 Lambda 函数的冷启动和热启动部分

aws lambda 上的 spring boot 应用程序 - 使用 docker 容器映像测量 lambda 函数的冷启动和热启动部分

介绍

在如何使用 Docker 容器镜像和 Java (21) 运行时开发和部署 Lambda 函数一文中,我逐步介绍了如何使用 Docker 容器镜像和 Java 21 运行时开发和部署 Lambda 函数,而不使用任何框架。由于 Docker 容器镜像是通用格式,因此我们可以简单地采用使用 Spring Cloud Function AWS 开发应用程序一文中介绍的 Spring Cloud Function 应用程序,并使用相同的步骤进行部署。因此,我在此处发布了该应用程序的重新设计版本(添加 Dockerfle 并更改 SAM 模板)以将其部署为 Docker 映像。对于所有 Lambda 函数,我们使用 JAVA_TOOL_OPTIONS:“-XX:+TieredCompilation -XX:TieredStopAtLevel=1”(这在冷启动时间和热启动时间之间进行了合理的权衡)并为其提供 1024 MB 内存。使用 AWS Serverless Java Container 也可以实现同样的效果。

使用 Spring Cloud Function 和 Docker 容器镜像作为部署格式测量 Lambda 函数的冷启动和热启动

下面的实验结果基于使用 Lambda 函数 GetProductByIdWithSpringBootJava21DockerImage 在 1 小时内重现超过 100 次冷启动和大约 100.000 次热启动,该函数映射到负责检索产品(存储)的 Java Lambda 处理程序类在 DynamoDB 中)通过其 id。为此,我使用了负载测试工具,但是您可以使用任何您想要的工具,例如 Serverless-artillery 或 Postman。

冷 (c) 和暖 (m) 开始时间(以毫秒为单位):

c p50 c p75 c p90 c p99 c p99.9 c max w p50 w p75 w p90 w p99 w p99.9 w max
4558.68 4622.92 4749.37 5002.74 7183.64 7185.5 7.16 7.94 9.09 20.99 52.47 1313.08

结论

在本文中,我们使用 AWS Lambda 基础 Docker 容器映像的方法测量了 Lambda 函数的冷启动和热启动。与使用 Docker 容器映像和 Java (21) 运行时而不使用 Spring (Boot) 框架的 Lambda 函数进行测量相比,我们经历了更高的冷启动时间和略高的热启动时间,而且与使用 Spring Boot 的其他方法测量冷启动时间相比:本系列之前的文章中介绍了 AWS Serverless Java Container、AWS Lambda Adapter 和 Spring Cloud Functions。

AWS Lambda SnapStart 可显着缩短冷启动时间,目前仅适用于 Java Corretto 托管运行时(11、17 和 21),不适用于 Docker 容器映像。您可以探索 jlink 工具,将一组模块及其依赖项组装和优化为更小的自定义运行时映像和类数据共享 (CDS),但这有助于减少 Java 编程语言应用程序(特别是较小的应用程序)的启动时间,以及减少占地面积。使用 Docker 映像作为 Java 部署工件的优点是能够使用最新的 Java 运行时,例如将于 9 月发布的 Java 23。

以上就是AWS Lambda 上的 Spring Boot 应用程序 - 使用 Docker 容器映像测量 Lambda 函数的冷启动和热启动部分的详细内容,更多请关注php中文网其它相关文章!

AWS Lambda 函数和触发器之间使用的通信协议和端口是什么?

AWS Lambda 函数和触发器之间使用的通信协议和端口是什么?

如何解决AWS Lambda 函数和触发器之间使用的通信协议和端口是什么??

我需要这个来限制安全组中的端口,以避免打开所有端口的所有流量。是 HTTPS 还是其他协议?

解决方法

AWS Lambda 没有任何开放的入站端口。 Lambda 函数不会持续运行,监听传入流量的端口。当某项调用 AWS Lambda 函数时,它会调用 AWS API,然后执行您的函数。如果您将 AWS Lambda 函数配置为在 VPC 中运行,则入站安全组规则将不起作用。将安全组分配给 Lambda 函数主要是为了拥有一个安全组 ID,您可以在其他安全组规则中引用,例如在授予 Lambda 函数访问 RDS 服务器的权限时。

今天关于AWS S3中的“ KeyError:'记录'”-Lambda触发器aws lambda 定时触发的分享就到这里,希望大家有所收获,若想了解更多关于AWS Lambas - 从 Lambda 或对 S3 对象的引用返回数据更有效?、AWS Lambda Java:Lambda无法解压缩文件、AWS Lambda 上的 Spring Boot 应用程序 - 使用 Docker 容器映像测量 Lambda 函数的冷启动和热启动部分、AWS Lambda 函数和触发器之间使用的通信协议和端口是什么?等相关知识,可以在本站进行查询。

本文标签: