python-3.x - 我们可以使用 boto3 库调用具有大负载的 lambda 函数吗
问题描述
我想知道如何使用具有大负载的 boto3 库调用 lambda 函数。到目前为止,我可以使用小于 6 mb 的有效负载调用它。另外我想知道有效载荷的最大限制是多少。
一旦上述问题得到解决......我还有另一个疑问......我应该如何在调用函数中传递这个有效负载.. 早些时候我这样做如下:
lambda_payload = open('fileName.txt','r').read()
lambda_client.invoke( FunctionName='##FName', InvocationType='Request Response', Payload=lambda_payload)
# arn copied is in the below format :
# arn:aws:s3:::dev-abc/fileName.txt
现在应该是什么我的新有效载荷..
解决方案
lambda 的调用负载在同步调用时只能为 6MB,在异步调用时只能为 256KB。一个简单的解决方法是将您的有效负载上传到 S3 并将 S3 对象位置作为有效负载传递给您的 lambda。然后,您的 lambda 可以读取或流式传输 S3 对象的内容。
您可以将 S3 URI、S3 对象 ARN 或只是存储桶的名称和对象的名称作为字符串值添加到调用负载。然后,您可以在 lambda 函数中使用 boto3 来读出该文件的内容。
如果您需要更大的有效负载来执行上传,请查看预签名 S3 URL。这将允许您返回可用于直接上传到 S3 位置的 URL。
推荐阅读
- powershell - Powershell 按组获取数据
- vue.js - Vue 可拖动下一个自定义列
- javascript - 如果 API 调用中不存在数据,如何忽略数据?
- java - 如何通过复合键 ID 在 JPA 中找到对象
- sql - 根据 R Shiny App 中的用户输入创建动态 SQL 查询
- sql - 如何从 BigQuery 中存储的大型线串数据集中查找所有道路交叉口
- python - 如何在此新闻 api 语法中设置循环
- c++ - 使用 C++ 将 tesseract API 的 TessBaseAPI 初始化为 api 指针,给出错误
- javascript - 将 JavaScript 组件包含到 Blazor 组件中
- anaconda - Anaconda 报告名称“dateutil”未定义,但已安装 python-dateutil