Javascript 是否可以通过CloudFront CDN进行AWS内容路由?

Javascript 是否可以通过CloudFront CDN进行AWS内容路由?,javascript,amazon-web-services,amazon-s3,amazon-cloudfront,Javascript,Amazon Web Services,Amazon S3,Amazon Cloudfront,我对亚马逊生态圈还相当陌生,但我想看看我的想法是否可行,因为我还没有找到任何文档来支持或否认它的可能性 我正在将现有web应用程序的各个部分移植到AWS ecosphere。我使用版本控制来支持零停机升级体验。因此,我在S3上的目录结构如下所示: /apps/v1/images /apps/v1/images/subdir /apps/v1/javascript /apps/v1/javascript/subdir /apps/v2/images /apps/v2/images/subdir

我对亚马逊生态圈还相当陌生,但我想看看我的想法是否可行,因为我还没有找到任何文档来支持或否认它的可能性

我正在将现有web应用程序的各个部分移植到AWS ecosphere。我使用版本控制来支持零停机升级体验。因此,我在S3上的目录结构如下所示:

/apps/v1/images

/apps/v1/images/subdir

/apps/v1/javascript

/apps/v1/javascript/subdir

/apps/v2/images

/apps/v2/images/subdir

/apps/v2/javascript

/apps/v2/javascript/subdir

我有一个CloudFront CDN为这些边缘位置提供服务。HTML/JSP中对这些文件的引用都使用CDN URL

我的问题是有一堆javascript引用图像,其形式为相对URL“/images/image.png”,因为此路径由原始webapp配置路由。在服务器端,通过在url前面添加CDN域和版本,在向客户端提供服务之前在运行时修改路径,可以轻松地处理这一问题。在客户端运行的JS并没有那么简单


我的问题是,是否可以在AWS ecosphere中进行任何操作来自定义路线信息,以便我可以将“/images”映射到“/apps/v1/images”,然后在适当的时间将其修改为将“/images”映射到“/apps/v2/images”。我希望保留根路由,这样无论javascript可能部署到哪个目录深度,“/images/…”相对路径都会成功。我不完全确定这是否可能,但如果有人知道,我将非常感谢您提供的信息。

尽管cloudfront或S3不会更改您的URL,但您可以尝试使用S3重定向来解决此问题。您可以将未版本化的URL重定向到已版本化的URL,当浏览器执行重定向时,它将从cloudfront获取正确的对象。部署脚本可以设置正确的重定向规则

见:


您的相对url将如何引用S3?相对url仅在同一服务器上工作。S3映像url将不同我尝试实现S3重定向规则,它们可以通过端点直接从Bucket提供服务,但无论Bucket或网站端点域是否用作源,它们在CloudFront中都不起作用,除非我遗漏了什么。无论如何,CloudFront缓存会干扰。我能够在EnableStaticWebHosting部分中设置路由规则,在那里我能够将未版本化的请求转发到文件的版本化实例。请注意,有必要使用S3 bucket的端点网站地址作为CloudFront原点,而不是S3 bucket本身。