29

我在 S3 上有一个 17.7GB 的文件。它是作为 Hive 查询的输出生成的,并且未压缩。

我知道通过压缩它,它大约是 2.2GB (gzip)。当传输成为瓶颈(250kB/s)时,如何尽快在本地下载此文件。

我没有找到任何直接的方法来压缩 S3 上的文件,或者在 s3cmd、boto 或相关工具中启用传输压缩。

4

3 回答 3

29

S3 不支持流压缩,也无法远程压缩上传的文件。

如果这是一次性过程,我建议将其下载到同一区域的 EC2 机器上,在那里压缩,然后上传到您的目的地。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html

如果你需要这个更频繁

通过 S3 从 Amazon CloudFront 提供 gzip 后的 CSS 和 JavaScript

于 2013-01-24T06:35:26.387 回答
13

迟到的答案,但我发现这工作得很好。

aws s3 sync s3://your-pics .

for file in "$(find . -name "*.jpg")"; do gzip "$file"; echo "$file";  done

aws s3 sync . s3://your-pics --content-encoding gzip --dryrun

这会将 s3 存储桶中的所有文件下载到机器(或 ec2 实例),压缩图像文件并将它们上传回 s3 存储桶。在删除空运行标志之前验证数据。

于 2017-12-04T13:21:59.433 回答
3

现在 Lambda 中有预构建的应用程序,您可以使用它们来压缩 S3 存储桶中的图像和文件。因此,只需创建一个新的 Lambda 函数并选择您选择的预构建应用程序并完成配置。

  1. 步骤 1 - 创建一个新的 Lambda 函数
  2. 第 2 步 - 搜索预建应用 在此处输入图像描述
  3. 第 3 步 - 选择适合您需要的应​​用程序并通过提供 S3 存储桶名称来完成配置过程。 在此处输入图像描述
于 2021-07-08T11:42:42.860 回答