如何从S3中的zip存档中提取文件

时间:2015-02-03 04:38:16

标签: amazon-web-services amazon-s3 cloud

我在S3中的某个位置上传了一个zip存档(比如/foo/bar.zip) 我想在bar.zip中提取值并将其放在/ foo下,而无需下载或重新上传提取的文件。我怎么能这样做,以便S3被视为非常像文件系统

1 个答案:

答案 0 :(得分:24)

S3并不是真的设计允许这样做;通常你必须下载文件,处理它并上传提取的文件。

但是,可能有以下几种选择:

  1. 您可以使用s3fsFUSE将S3存储桶挂载为本地文件系统(请参阅articlegithub site)。这仍然需要下载和上传文件,但它会将这些操作隐藏在文件系统界面之后。

  2. 如果您主要关注的是避免将数据从AWS下载到本地计算机,那么您当然可以将数据下载到远程EC2 instance并在那里进行工作,无论是否有{{ 1}}。这使数据保持在亚马逊数据中心内。

  3. 您可以使用AWS Lambda对文件执行远程操作,而无需将其下载到本地计算机上。

  4. 您需要创建,打包和上传用s3fs编写的小程序来访问,解压缩和上传文件。此处理将在幕后的AWS基础架构上进行,因此您无需将任何文件下载到您自己的计算机上。请参阅FAQs

    最后,您需要找到一种触发此代码的方法 - 通常,在Lambda中,这将通过将zip文件上载到S3自动触发。如果文件已经存在,您可能需要通过AWS API提供的node.js命令手动触发它。请参阅AWS Lambda walkthroughsAPI docs

    但是,这是一种避免下载的精心设计方式,如果您需要处理大量的zip文件,可能还是值得的!另请注意,Lambda函数的最大持续时间限制为5分钟(default timeout为3秒),因此如果文件非常大,可能会耗尽时间 - 但invoke-async中的临时空间限制为500MB ,你的文件大小也是有限的。