将ZIP文件上传到S3,使用EC2解压缩

时间:2012-03-15 12:04:48

标签: php codeigniter amazon-s3 amazon-ec2

我有一个Codeigniter网络应用程序,每小时将许多小文件上传到Amazon S3,这导致我的S3请求费用快速上线。解决这个问题的一种方法是压缩文件,将zip文件上传到S3,然后在S3上解压缩。

可以使用EC2完成吗?或者有更好的方法来实现这一目标吗?谢谢!!

编辑:如果我要使用EC2,我是否使用PHP来触发创建EC2实例,上传解压缩压缩文件所需的PHP文件,将未压缩的文件复制到S3,然后销毁EC2实例? / p>

4 个答案:

答案 0 :(得分:25)

如果您在同一地区有EC2机器,我建议您将其上传到拉链,然后将其从解压缩到s3。 S3无法将其自身解压缩为全静态。

在ec2和s3之间不收取费用,因此ec2可以处理解压缩,然后将其写入您的s3存储桶,无需额外的传输费用。

答案 1 :(得分:9)

您可以在lambda中编写代码以解压缩S3存储桶的文件,您只需使用它,AWS Lambda将为您执行此操作。

参考:

  1. https://github.com/carloscarcamo/aws-lambda-unzip-py/blob/master/unzip.py
  2. https://github.com/mehmetboraezer/aws-lambda-unzip

答案 2 :(得分:2)

S3只是存储。您上传的文件是存储的文件。您无法上传zip文件,然后在S3中将其解压缩。如果您编写应用程序,我可以说的最好的方法是尝试重新设计存储文件的方式。 S3请求相当便宜......你必须提出很多请求。

答案 3 :(得分:2)

我一直在使用这项服务解压缩数千个小图像文件的文件,我上传的每个zip大约4GB,使用http://www.cloudzipinc.com/service/s3_unzip解压缩大约需要花费1美元,这可能对某人有帮助。

话虽如此,您可能会发现使用Python与Boto库更容易。这比PHP更有效。