【发布时间】:2021-07-06 08:31:52
【问题描述】:
我正在尝试将 S3 存储桶中的 PDF 文件从一个 lambda 发送到一秒。为此,我正在从 S3 存储桶中下载 tmp 文件夹中的 PDF,然后调用第二个 lambda。
我的代码:
s3r = boto3.resource('s3')
client = boto3.client('lambda')
s3r.meta.client.download_file(
Bucket='my_bucket',
Key='pdf_folder' + '/{}'.format(pdf_name),
Filename='/tmp/'+pdf_name
)
然后我尝试调用第二个 lambda 并将 PDF 作为有效负载发送,如下所示:
client.invoke(
FunctionName='second_lambda',
InvocationType="RequestResponse",
Payload={
'pdf': '/tmp/'+pdf_name,
'email': receiver_email,
}
)
但我收到以下错误:
botocore.exceptions.ParamValidationError:参数验证失败: 参数有效负载的类型无效,值:{'pdf': '/tmp/test_pdf_ff9cf3167ae6fc1552f340a7abc529970fb8cf5a65f8bc825d772fa5e707c81d.pdf', 'email':receiver_email},类型:
,有效类型: , , 类文件对象
我做错了什么?
【问题讨论】:
-
为什么 lambda #2 不能从 s3 读取 pdf?
-
@balderman 这是最初的想法,但我试图使 lambda #2 尽可能通用,以防 pdf 不在 S3 存储桶中。还连接了其他功能,这就是为什么将 pdf 从 #1 发送到 #2 是有意义的
-
pdf 文件可能很大。您有信心永远不会达到有效负载大小的限制吗?
-
@Marcin 你能告诉我最大有效载荷限制是多少吗?同步是 6MB,异步是 256KB?
-
@Junkrat 是的,没错。
标签: python amazon-web-services amazon-s3 aws-lambda boto3