问题: 我需要的数据在网站上的zip文件中,但是该zip文件太大,无法下载到我的笔记本电脑上。
我认为一个人可以解决这个问题的方式: 将zip文件上传到s3存储桶中,而无需在笔记本电脑中下载zip文件。
目标: 将压缩文件获取到s3存储桶中,在s3存储桶中解压缩文件,使用s3中的命令行查看解压缩后的文件内容,然后从中提取CSV(或可转换为CSV的其他类型的数据)。
我认为可以解决此问题的方法: 使用AWS Lambda从网站获取zip文件,因此在AWS Lambda上创建一个临时存储空间;将来自AWS Lambda的文件放入s3存储桶中;将文件解压缩到s3上;探索s3存储桶中解压缩文件的内容;将我需要的内容提取到另一个s3存储桶中,然后使用SageMaker上未压缩文件中选择的内容。
答案 0 :(得分:2)
由于Amazon S3是对象存储服务,因此无法“在S3上解压缩”。
一种简单且昂贵的技术是启动Amazon EC2实例,将文件下载到Amazon EBS卷上,解压缩并使用aws s3 sync
将解压缩的内容上载到S3。
如果您需要经常执行该操作,则可以使用上述的AWS Lambda方法,这将更具成本效益。但是您会受到Lambda函数的临时存储可用磁盘空间的限制。
我会考虑使用流API 。您可以从源流式传输,即时解压缩并上传到S3。
存在多个库来处理流式解压缩操作(例如,请参见https://www.npmjs.com/package/unzip-stream的NodeJS)
S3与AWS CLI一样,本机支持使用分段上传的流。