我对此进行了很多搜索,但是我得到的只是与S3一起使用CloudFront(CDN)。
我想做些不同的事情。
CloudFront用作CDN,其原始设置为我的图像所在的域或S3。
如果将其设置为我的域,则存在使用我的托管空间的问题。
如果我将其与S3一起使用,问题是,如何将我的图像轻松地带到S3?如果是CDN,这是自动的,因为每次调用CloudFront都会自动从我的服务器复制映像。
CloudFront是否可以与S3一起使用,但是如果S3上不存在映像,则它将映像从我的服务器复制到S3?
或者S3本身可以用作CDN(最佳解决方案)。我在某些网站上看到他们使用s3网址来托管其图像,如下所示: https://retsimages.s3.amazonaws.com/14/A10363214_6.jpg
那怎么可能?
答案 0 :(得分:1)
如果将其设置为我的域,则存在使用我的托管空间的问题。
比存储空间更昂贵的是让服务器准备就绪以处理请求的成本。当图像更改时,您的应用程序逻辑会提示;是时候将它们放入S3了。
如何将我的图像轻松地带到S3?
有几乎每种语言都可以使用的SDK,因此请上传图像。使用s3cmd sync
移动您拥有的图像。然后,您可以关闭服务器。
或者S3本身可以用作CDN
CloudFront可以使用客户提供的dns名称和匹配的证书,以便您可以将自定义域与https一起使用。它可以集成到S3无法直接集成的AWS WAF中。否则,CDN的行为类似于s3。 CloudFront应该提供更好的缓存和端点本地性,但是在小容量情况下您几乎看不到任何功能差异。写入后读取都不是一致的,但是Cloudfront还会额外缓存。定价不太可能使CloudFront在大多数情况下更便宜。
答案 1 :(得分:0)
CloudFront是否可以与S3一起使用,但是如果S3上不存在映像,则它将映像从我的服务器复制到S3?
关闭。
CloudFront确实具有可以帮助您朝这个方向发展的功能-origin groups。创建一个原始组,其中S3为主要组,服务器为辅助组。每当CloudFront遇到缓存未命中时,它都会首先检查S3,并且只有在映像不存在的情况下,它才会通过将请求发送到服务器来重试。它将缓存响应,但不会记住对象的来源-因此,以后针对同一对象的未来缓存未命中的后续请求将始终首先尝试S3。
这意味着服务器上的某物必须负责最终将映像移至S3 -但只要该映像存在于一个或另一个位置,该映像将由CloudFront和在处理请求的一个或多个边缘(最多两个-一个全局/外部,一个区域/内部)中缓存在CloudFront中。