Mar*_*ler 5 amazon-s3 amazon-ec2
我们运行一项服务,借此我们提供基于 Web (PHP) 的应用程序的“工作”,并且图像、JS、CSS 等托管在客户自己的 Amazon S3 帐户中。
这是为了让他们获得 S3 使用的综合账单(该应用程序使用 S3 本身),我们不必补贴他们的带宽(没有月费,所以随着它的增长,它只会花费我们更多和更多钱)。
我们现在有 1000 多个客户,向他们推送更新(例如对 JS 的更新)需要非常长的时间,而且这个数字在未来几个月内将呈指数增长。
我曾考虑过我们拥有的源 S3 存储桶,然后在我们的 S3 存储桶和他们的存储桶之间执行 COPY 请求而不是上传。这仍然需要时间,但比现在上传要快得多。但是,我听说没有办法在不使用中间服务器的情况下在两个完全独立的 S3 帐户之间进行复制(这显然会破坏对象并且实际上会加倍时间)。
真的吗?任何人都可以想到这样做的替代方法吗?
小智 1
这是一个非常好的问题。
上次我COPY在不同地区之间检查也不起作用。我知道Cloudberry 的 Explorer 应用程序具有在 S3 帐户之间复制数据的功能,您可以用它进行测试吗?我没试过,仅限Windows。
我想如果它有效的话,那就是尝试 API 的问题了。
您的所有客户都在同一地区吗?因为如果COPY帐户之间不起作用,我会启动一个实例(或多个)以加快该过程。如果每个人都在同一区域,则无需支付带宽费用。
这并不理想,但我想通过多个实例,您可以用不到 10 美元完成大量工作。并且应该也可以自动化设置。
更新
那么就来详细介绍一下EC2。EC2 实例就像另一台服务器。我最初建议这样做,这样您就可以下载一次文件并将其上传到AWS中的其他 S3 帐户,这样您就可以节省带宽费用(如果存储桶和实例位于同一区域,则免费)。
无论如何,EC2 实例就像服务器一样,需要进行一些设置才能引导它。例如,自定义 AMI,或任何 AMI 和一些user-data(传递到实例并在首次启动时执行的 shell 脚本)。您可能需要安装 PHP、Amazon SDK 等——所有这些都可以自动化。
问题是,我不完全确定这对于您的情况是否有必要。
查看以下示例代码: http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html ?CopyingObjectUsingPHP.html
它展示了如何将数据从一个存储桶复制到另一个存储桶。由于存储桶名称在所有 S3 中都是唯一的,这应该不是问题。我认为您需要做的就是让您自己的 AWS 账户上的每个人都可以读取这些文件(至少是暂时的),然后循环遍历这些文件并将其复制到您客户的 AWS 账户中。
我认为您可以在任何地方发布该代码,而不必担心带宽费用,因为COPY应该都是内部的。无需下载实际文件。
不确定您是否查看了文档,但 AWS 似乎需要某种原始标头 ( x-amz-copy-source),然后它会处理其余的事情。
华泰
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |