AWS CloudFront 和 S3:如何使新的 S3 内容在 CloudFront 中立即可用?

LWS*_*had 5 amazon-s3 amazon-web-services amazon-cloudfront

我将一个 AWS Simple Storage Service (S3) 存储桶设置为 AWS CloudFront CDN 分配的源。

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

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

我已将 Min、Max 和 Default 的 TTL 减少到 0,没有明显的变化。

  • 这是预期的吗?

  • 我可以做些什么来加快速度吗?

谢谢

iSk*_*ore 0

是的,这是预料之中的 - 不,不幸的是,您对此无能为力。

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

显然,所有发送到 S3 的文件都必须可以通过 S3 访问,当您启用 CloudFront 层时,不要限制存储桶访问。您也可以通过启用使 S3 GET 请求更快一点Accelerated Transfer(如果您想要更快的“直接到 S3”请求,如果您使用 CloudFront,则不会有任何影响)

我建议进行故障转移调用,内容如下:

function getFromS3()
    serveFileToUser()

function getFromCloudFrontEndpoint()
    if !exists
        getFromS3()
    else
        serveFileToUser()
Run Code Online (Sandbox Code Playgroud)