Amazon web services Lambda S3 Put函数不触发较大文件
我目前正在探索将电子邮件附件与.eml文件本身分开存储。我有一个SES规则集,可以将入站电子邮件发送到bucket。当bucket检索电子邮件时,S3 Put Lambda函数解析原始电子邮件(MIME格式),base64解码附件缓冲区,并为每个附件和原始.eml文件创建一个putObject到新的bucket 我的问题是,对于附件超过~3-4 MB的电子邮件,此Lambda函数不会触发。电子邮件会被接收并存储在初始存储桶中,但收到时不会触发该功能。此外,该事件不会出现在CloudWatch中。但是,当使用硬编码的S3 Put有效负载手动测试它时,以及当手动将.eml文件上载到指定的存储桶时,该功能工作得非常好Amazon web services Lambda S3 Put函数不触发较大文件,amazon-web-services,amazon-s3,aws-lambda,amazon-ses,Amazon Web Services,Amazon S3,Aws Lambda,Amazon Ses,我目前正在探索将电子邮件附件与.eml文件本身分开存储。我有一个SES规则集,可以将入站电子邮件发送到bucket。当bucket检索电子邮件时,S3 Put Lambda函数解析原始电子邮件(MIME格式),base64解码附件缓冲区,并为每个附件和原始.eml文件创建一个putObject到新的bucket 我的问题是,对于附件超过~3-4 MB的电子邮件,此Lambda函数不会触发。电子邮件会被接收并存储在初始存储桶中,但收到时不会触发该功能。此外,该事件不会出现在CloudWatch中。
你知道为什么会有这种限制吗?这可能是bucket的权限问题,也可能是分配的Lambda角色的问题?当手动测试时,我发现这绝不是一个超时或超过最大内存使用量的问题 更大的文件几乎肯定是通过S3多部分上传而不是常规的Put操作上传的。您需要将Lambda订阅配置为也会收到多部分上载的通知。听起来该函数目前只订阅了
s3:ObjectCreated:Put
事件,您需要将s3:ObjectCreated:CompleteMultipartUpload
添加到配置中。我遇到了相同的问题。如果您上载到s3的文件的Etag以连字符结尾,后跟一个数字,则表示该文件是使用多部分上传的。订阅CompleteMultipartUpload事件解决了问题。我也遇到了同样的问题。尽管将s3:ObjectCreated:CompleteMultipartUpload作为事件通知,但触发器仍失败
我后来意识到问题在于lambda的超时时间。这也可能是一个潜在的问题。可能重复的。表面上并不完全相同,但可能的根本原因是相同的,所以现在,我要说的是,它不是一个完全相同的副本。我宁愿看到在这一点上达成一些共识,也不愿随便挥舞我的金锤。@Michael sqlbot我不会将这个问题标记为重复问题,因为我永远不会期望有人在搜索这个问题时找到另一个问题。另一个问题的标题太模糊,当遇到此问题时,无法找到。谢谢@MarkB。我想你是对的。你是个救生员——两年后!我为此绞尽脑汁好几天了。谢谢伙计,这不应该这么难。。。谢谢你的提示!所以浪费了太多的时间。。。自我提示:GIYFGreat。帮了我很多忙。