AWS CloudFront和S3:如何在CloudFront中立即提供新的S3内容?

时间:2017-01-06 18:58:10

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

我将AWS Simple Storage Service(S3)存储区设置为AWS CloudFront CDN分发的源。

当S3存储桶或CloudFront发行版中从未存在的全新图像(小,<50k)上传到S3存储桶时,它们几乎可以在S3资源请求时立即可用,但需要10分钟才能成为可从CloudFront资源获取。

一旦图像在CloudFront中可用,它们就会快速加载。问题是图像似乎需要很长时间才能在CloudFront中使用。

我将Min,Max和Default的TTL降低到0,没有明显的变化。

  • 这是预期的吗?

  • 我有什么办法可以加快速度吗?

谢谢

2 个答案:

答案 0 :(得分:0)

是的,这是预料之中的 - 不幸的是,你不能做很多事情。

@igor所述,您可以对对象进行无效。我不能确定如果这实际上会加快速度,但你可以试试。您可以通过设置从S3到Lambda的事件并调用CloudFront使该对象无效来实现此目的,或者您可以将其与您正在进行的上传调用并排调用 - 与Lambda解耦更好但无论如何。

进入S3的所有文件显然必须通过S3可用,当您打开CloudFront图层时,不要限制存储桶访问。您也可以通过启用Accelerated Transfer来更快地启用S3 GET请求(如果您想要更快的直接转发到S3&#39;请求,如果您使用CloudFront则没有任何影响)

我建议做一个故障转移电话,说:

function getFromS3()
    serveFileToUser()

function getFromCloudFrontEndpoint()
    if !exists
        getFromS3()
    else
        serveFileToUser()

答案 1 :(得分:0)

原来这是一个重复的问题。

原帖和答案是 - Amazon CloudFront Latency

谢谢@ Michael-sqlbot