【问题标题】:Amazon S3 and Cloud FrontAmazon S3 和 Cloudfront
【发布时间】:2016-01-06 01:49:04
【问题描述】:

如何将 Amazon Cloud Front 和 S3 集成到照片共享应用程序中?

我目前上传到 S3,并返回 cloudfront url,但这并不是很成功,因为 s3 和 cloudfront 之间似乎存在延迟,因此返回的 url 不会立即生效。

有谁知道我该如何解决这个问题?

Facebook 使用 Akamai,如果我上传图片,它会立即可用。

不胜感激。

【问题讨论】:

  • S3 和 CloudFront 之间没有“延迟”。请提供示例,使用来自 curl -v 等工具的相关输出来记录确认您所看到内容的响应。
  • 您是说上传到 s3 的内容会立即分发到云端吗?我必须等待几分钟,否则我会被拒绝访问。我使用 Java Api 上传文件。

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


【解决方案1】:

您必须尝试立即通过云端获取对象。我不确定为什么会这样,但你已经达到了 S3 的eventual consistency model 的限制。

当您上传对象时,消息需要很短的时间才能在 S3 服务中传播。通常,这远低于一秒,并且很难检测到。 (在之前的 life 工作中,我们发现我们可以合理地保证所有文件在 10 秒内到达,99.9% 在 1 秒内到达)

Here's the official word from AWS; it's worth reading the whole page:

一个进程将一个新对象写入 Amazon S3 并立即列出其存储桶中的键。在更改完全传播之前,该对象可能不会出现在列表中。

There's a much longer discussion on this stackoverflow question;假设您使用的是标准 S3 存储桶,您需要稍微更改端点以利用先读后写模型。

进一步阅读: * Instrumental: Why you should stop using the us-standard Region in S3. Right Now™ * Read-After-Write Consistency in Amazon S3(从 2009 年开始,包含日期信息)

调试/证明这一点的一种方法是在调用 CloudFront 之前调用 getObjectMetadata。在这种情况下它应该会失败。

【讨论】:

    猜你喜欢
    • 2014-05-09
    • 2014-09-29
    • 2015-04-18
    • 2012-01-31
    • 2017-12-30
    • 2016-11-01
    • 1970-01-01
    • 2016-02-08
    • 2017-05-25
    相关资源
    最近更新 更多