如何从 S3 解压缩 ZIP 文件,重新压缩它们,然后将其移动到 S3 存储桶?



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

最后,我想改造我的解决方案,当S3桶中有新文件时,它应该被触发,

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

从体系结构的角度来看,这取决于ZIP文件的文件大小—如果该过程花费的时间少于15分钟,那么您可以使用Lambda函数。

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

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

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

Lambda然后可以使用download_file(Boto3文档提供的示例)从S3下载文件,使用zipfile&最后GZIP压缩文件使用gzip.

您可以使用upload_object(Boto3文档提供的示例)将输出文件上传到新桶&然后使用delete_object从原桶中删除原文件。

上面的地形化也应该相对简单,因为你将主要使用aws_lambda_function&aws_s3_bucket资源。

确保您的Lambda具有正确的执行角色和适当的IAM策略来访问两个S3桶&你应该可以走了。

相关内容

最新更新