Amazon S3 作为 cdn 从我的服务器复制图像

Amazon S3 as cdn copying images from my server

我对此进行了很多搜索,但我得到的只是与 S3 协作使用 CloudFront (CDN)。

我想做一些不同的事情。

CloudFront 用作 CDN,其来源设置为图像所在的我的域或 S3。

如果我将其设置为我的域,则会出现使用我的主机 space 的问题。

如果我将它与 S3 一起使用,问题是如何轻松地将我的图像传输到 S3?对于 CDN,这是自动的,因为每次调用 CloudFront 都会自动从我的服务器复制图像。

CloudFront 是否可以与 S3 一起使用,但如果图像不在 S3 上,它会将它从我的服务器复制到 S3?

或者 S3 本身可以用作 CDN(最佳解决方案)。我在一些网站上看到他们使用 s3 url 来托管他们的图片,如下所示: https://retsimages.s3.amazonaws.com/14/A10363214_6.jpg

这怎么可能?

If I set it to my domain, there is an issue of having my hosting space used.

比存储 space 更昂贵的是让服务器坐在那里准备好处理请求的成本。您的应用程序逻辑知道图像何时更改;是时候将它们放入 S3 中了。

how to get my images to S3 without much hassle?

几乎每种语言都有一个 SDK,因此请在图像出现时上传它。使用 s3cmd sync 移动您拥有的图像。然后你可以关闭你的服务器。

Or may be S3 itself works as CDN

CloudFront 可以使用客户提供的 DNS 名称 和匹配的证书 ,这样您就可以将自定义域与 https 结合使用。它可以集成到 S3 不能直接集成到 AWS WAF 中。否则,CDN 的行为类似于 s3。 CloudFront 应该提供更好的缓存和端点位置,但您会发现在低容量时几乎没有功能差异。两者都不是写后读一致的,但 Cloudfront 额外缓存。定价不太可能使 CloudFront 对于大多数用途来说更便宜。

Is it possible that CloudFront works with S3 but if image is not present on S3, it copies it from my server to S3?

关闭。

CloudFront 确实有一项功能可以帮助您朝着这个方向前进 -- origin groups。创建一个源组,将 S3 作为主要服务器,将您的服务器作为次要服务器。任何时候 CloudFront 遇到缓存未命中,它都会首先检查 S3,只有当图像不存在时,它才会通过向您的服务器发送请求来重试。它会缓存响应,但它不会记住对象的来源——因此对同一对象的未来缓存未命中的后续请求将始终首先尝试 S3。

这意味着您的服务器上的某些东西需要负责最终将图像移动到 S3 -- 但只要图像存在于一个地方或另一个地方,图像就会由 CloudFront 提供服务并缓存在 CloudFront 中处理请求的一个或多个边缘(最多两个 -- 一个 global/outer,一个 regional/inner)。