代码之家  ›  专栏  ›  技术社区  ›  Imran Ahmed

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

  •  0
  • Imran Ahmed  · 技术社区  · 5 年前

    我在这方面搜索了很多,但我所得到的只是与S3合作使用CloudFront(cdn)。

    我想做些不同的事情。

    CloudFront作为一个cdn工作,其来源设置为图片所在的域或s3。

    如果我将其设置为我的域,则存在使用托管空间的问题。

    如果我将它与S3结合使用,问题是,如何让我的图像不费吹灰之力地转到S3?对于cdn,这是自动的,因为每次调用CloudFront都会自动从我的服务器复制图像。

    CloudFront是否可以与S3一起工作,但如果S3上没有图像,它会将其从我的服务器复制到S3上?

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

    这怎么可能?

    2 回复  |  直到 5 年前
        1
  •  1
  •   erik258    5 年前

    如果我将其设置为我的域,则存在使用托管空间的问题。

    比存储空间更昂贵的是让一个服务器坐在那里准备处理请求的成本。当图像发生变化时,您的应用程序逻辑就知道了;这是将它们放入S3的时间。

    如何让我的图像到S3没有太多麻烦?

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

    或者可能是S3本身作为cdn工作

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

        2
  •  0
  •   Michael - sqlbot    5 年前

    CloudFront是否可以与S3一起工作,但如果S3上没有图像,它会将其从我的服务器复制到S3上?

    关闭。

    CloudFront有一个功能可以帮助您朝这个方向移动。-- origin groups . 创建一个以S3为主服务器为辅的源组。每当CloudFront遇到缓存未命中时,它将首先检查S3,并且只有当图像不在那里时,它才会通过向您的服务器发送请求来重试。它将缓存响应,但它将不记得对象的源——因此对于同一对象的未来缓存未命中的后续请求将始终首先尝试S3。

    这意味着 某物 在您的服务器上,需要负责最终将图像移动到S3——但是只要图像存在于一个或另一个位置,那么该图像将由CloudFront提供服务,并缓存在处理请求的边缘或边缘(最多两个-一个全局/外部,一个区域/内部)。