读取存储桶文件时,AWS Lambda函数超时

时间:2020-03-23 21:40:17

标签: python-3.x amazon-web-services amazon-s3

下面的最后两行代码是问题所在。正如下面的打印输出所示,我对存储桶中的csv文件有视线,存储桶中的文件是使用键/值约定返回的对象。问题是.read()。总是超时。根据我初次发布此问题时的指针,我已将AWS中的设置更改为函数超时之前的3分钟,我也尝试下载它,但返回None。我想主要的问题是为什么.read()函数要花这么长时间,而download_file命令中缺少什么?文件很小:1KB。任何帮助表示感谢

72.27 / 25.4

打印输出为:

import boto3
import csv

s3 = boto3.resource('s3')
bucket = s3.Bucket('polly-partner')
obj = bucket.Object(key='CyclingLog.csv')

def lambda_handler(event, context):

    response = obj.get()
    print(response)
    key = obj.key
    filepath = '/tmp/' + key
    print(bucket.download_file(key, filepath))
    lines = response['Body'].read()
    print(lines)

2 个答案:

答案 0 :(得分:1)

错误消息显示:Task timed out after 3.00 seconds

您可以通过以下方法来增加Lambda函数的超时时间:在控制台中打开该函数,转到基本设置部分,然后单击编辑

虽然您说增加了此超时设置,但实际上是在 3秒后超时,这一事实表明该设置没有更改。

答案 1 :(得分:0)

我知道这是一篇旧帖子,(希望很久以前就解决了!),但我最终来到这里,所以我会分享我的发现。

这些通用的运行时错误消息:

"Error: Runtime exited with error: signal: killed Runtime.ExitError"

...当在 REPORT 行出现类似这样的内容时:

Memory Size: 128 MB Max Memory Used: 129 MB Init Duration: 362.26 ms  

...看起来像是内存不足的问题。特别是当“使用的最大内存”>=“内存大小”

据我所知,Lambda 可以而且经常会毫无问题地使用高达 100% 的内存 (Discussed in this post)。但是,当您尝试将数据加载到内存中,或执行内存密集型处理(复制存储在变量中的大型数据集?)时,Python 运行时可能会遇到内存错误并退出。 不幸的是,它没有很好地记录、记录或使用 CloudWatch 指标捕获。

我相信 NodeJS 运行时中的相同错误如下:

"Error: Runtime exited with error: signal: aborted (core dumped)"