如何从S3中解压缩ZIP文件,重新压缩它们,然后将它们移动到S3存储桶中(&)? [英] How can I decompress ZIP files from S3, recompress them & then move them to an S3 bucket?

查看:26
本文介绍了如何从S3中解压缩ZIP文件,重新压缩它们,然后将它们移动到S3存储桶中(&)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个S3存储桶,里面有一堆zip文件。我想要解压缩zip文件,并且对于每个解压缩的项目,我想创建一个$file.gz并将其保存到另一个S3存储桶中。我在考虑为它做一个胶水工作,但我不知道怎么开始。有线索吗?

最终,我希望实现我的解决方案,只要S3存储桶中有新文件,就应该触发它

是Lambda函数还是任何其他服务更适合于此?

推荐答案

从体系结构的角度来看,这取决于压缩文件的文件大小-如果该过程花费的时间少于15分钟,则可以使用lambda函数。

如果更多,您将达到当前的15分钟Lambda timeout,因此您需要使用不同的解决方案。

但是,对于您在新文件上触发的用例,S3 triggers将允许您在存储桶中创建/删除文件时触发Lambda函数。

我建议将ZIP文件分离到它们自己的存储桶中,否则您还需要支付检查费用,以查看上传的任何文件是否在您特定的";文件夹";中,因为Lambda将在整个存储桶中触发(可以忽略,但仍然值得指出)。如果隔离,您将知道上载的任何文件都是ZIP文件。

然后,您的Lambda可以使用download_file(example provided by Boto3 documentation)从S3下载文件,使用zipfile解压该文件,并最终使用gzipGZIP压缩该文件。

然后可以使用upload_object(example provided by Boto3 documentation)&;将输出文件上传到新存储桶,然后使用delete_object从原始存储桶中删除原始文件。

格式化以上内容也应该相对简单,因为您将主要使用aws_lambda_function&;aws_s3_bucket资源。

确保您的Lambda具有正确的execution role和适当的IAM策略来访问两个S3存储桶&您应该可以开始使用了。

这篇关于如何从S3中解压缩ZIP文件,重新压缩它们,然后将它们移动到S3存储桶中(&)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆