Amazon web services CloudFlare或AWS CDN链接

Amazon web services CloudFlare或AWS CDN链接,amazon-web-services,amazon-s3,routing,cdn,cloudflare,Amazon Web Services,Amazon S3,Routing,Cdn,Cloudflare,我在页面上安装了一个脚本,它将从S3存储桶中加载更多的JS和CSS 我有版本,所以当我在Github上发布1.1.9版本时,它将部署到S3上的/my bucket/1.1.9/ 问题,如果我想要一个符号链接/my bucket/v1->/my bucket/1.1.9,我如何使用AWS或CloudFlare实现这一点 我的想法是,我希望通过将其部署到我的bucket或任何CDN中来发布新版本,然后在准备就绪后,我希望将v1切换到最新发布的1.x.y版本。我希望所有网站都指向/v1,并在有新版本时

我在页面上安装了一个脚本,它将从S3存储桶中加载更多的JS和CSS

我有版本,所以当我在Github上发布1.1.9版本时,它将部署到S3上的/my bucket/1.1.9/

问题,如果我想要一个符号链接/my bucket/v1->/my bucket/1.1.9,我如何使用AWS或CloudFlare实现这一点

我的想法是,我希望通过将其部署到我的bucket或任何CDN中来发布新版本,然后在准备就绪后,我希望将v1切换到最新发布的1.x.y版本。我希望所有网站都指向/v1,并在有新版本时获取最新版本


是否有CDN或AWS服务或配置允许我创建类似linux的符号链接?

使用CloudFront的简单解决方案需要在路径设计上稍作更改:

桶:

/1.1.9/v1/foo
浏览器:

/v1/foo
“原点”选项卡上的CloudFront原点路径

/1.1.9
在将请求发送到源服务器之前,配置为源路径的内容将添加到浏览器请求的内容的开头

请注意,更改这一点意味着您还需要执行缓存失效,因为响应是基于请求的内容而不是获取的内容进行缓存的

这里有一个潜在的竞争条件,在您更改配置和失效之间-在配置更改和失效请求之间的操作顺序中没有相关性-配置更改之后可能会完成失效,因此可能需要失效、更新配置、失效,验证分发已进入稳定状态,然后再次失效。您不需要单独使对象无效,只需/*或/v1*。最好只重写直接请求的资源,而不是重写它的依赖项。另外,请记住,浏览器缓存是一个巨大的成本节约,如果您使用相同的请求URI来表示不同的对象,则无法充分利用它

在CloudFront中重写更复杂的路径需要Lambda@Edge原始请求触发器,或者您可以使用查看器请求,但这些请求的运行频率更高,因此成本更高,并增加了总体延迟


⑨无效申请——虽然没有记录在案,而且严格来说是轶事——似乎涉及一点时间旅行。失效是有时间戳的,它们似乎使在其时间戳之前缓存的任何内容失效,而不是在它们传播到边缘位置之前。从架构上讲,如果CyrdFrand是这样设计的,那么无效就不会主动清除内容,而只是作为缓存的指令,如果它在无效请求之前预先设置了时间戳,就可以将任何缓存的对象视为陈旧的,从而允许在后台进行实际的清除。对于任何其他解释来说,失效似乎完成得太快了。这意味着在分发返回到稳定部署状态后创建一个失效请求将确保所有旧的内容都被真正清除,并且在最初提交更改时的另一个失效请求将捕获在传播更改之前可能从缓存中提供的大多数散乱者。根据观察到的完工时间,变更和失效似乎通过独立管道传播到边缘。

这很有效。只是发布一个新版本需要一些时间,但这是可以的,因为它使它变得简单,并提供了切换到旧版本的能力,以防我们发布最新版本的poop。谢谢你的好主意!