Amazon web services AWS Lambda S3事件无限循环
我想在上传视频文件(.mp4)时使用S3事件发布到AWS Lambda,以便对其进行压缩。问题是视频文件的路径存储在RDS中,因此我希望压缩后路径保持不变。据我所知,替换文件将再次调用创建的Amazon web services AWS Lambda S3事件无限循环,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,我想在上传视频文件(.mp4)时使用S3事件发布到AWS Lambda,以便对其进行压缩。问题是视频文件的路径存储在RDS中,因此我希望压缩后路径保持不变。据我所知,替换文件将再次调用创建的对象事件,从而导致无限循环 有没有办法在不触发任何事件的情况下替换文件?我的选择是什么?你是对的,你不能完全区分。从中,支持以下事件: s3:ObjectCreated:Put–通过HTTP Put操作创建了一个对象 s3:ObjectCreated:Post–通过HTTP Post操作创建了一个对象 s3
对象
事件,从而导致无限循环
有没有办法在不触发任何事件的情况下替换文件?我的选择是什么?你是对的,你不能完全区分。从中,支持以下事件:
–通过HTTP Put操作创建了一个对象s3:ObjectCreated:Put
–通过HTTP Post操作创建了一个对象s3:ObjectCreated:Post
–通过s3复制操作创建了一个对象s3:ObjectCreated:Copy
–通过完成s3多部分上传创建对象s3:ObjectCreated:CompleteMultipartUpload
–对象是由上面列出的事件类型之一创建的,或者是由将来添加的类似对象创建事件创建的s3:ObjectCreated:
–以减少冗余存储的s3对象已丢失s3:ReducedRedundancyObjectLost
- 1 S3 Bucket存储源材料而不进行任何修改,这将触发Lambda事件
- 1 S3 Bucket存储来自压缩输出的已处理工件
通过这样做,您可以存储原始文件,并在需要时重新运行以进行自动更正。对于此问题,有一个不合适的解决方案,但在任何地方都没有记录 Lambda函数中的
事件
参数包含一个userIdentity
dict,其中包含principalId
。对于因AWS Lambda而引发的事件(如上文提到的更新S3对象),此principalId
包含末尾附加的Lambda函数的名称
因此,通过检查
principalId
可以推断事件是否来自Lambda,并相应地进行压缩。我是否可以使用ObjectCreated:Put
请求AWS Lambda,和Post
用于正常上传到S3并触发S3事件?是的,您可以筛选以使用ObjectCreated:Post进行上传。默认情况下,post是通过浏览器发布的,而put是通过CLI发布的。