我对亚马逊生态圈很新,但我想知道我的想法是否可行,因为我没有找到任何文件来支持或否认它的可能性。
我正在将现有Web应用程序的各个部分移植到AWS生态圈。我正在使用版本控制来支持零停机升级体验。因此,我在S3上的目录结构如下所示:
/应用/ V1 /图像
/应用/ V1 /图像/子目录
/应用/ V1 / JavaScript的
/应用/ V1 / JavaScript的/子目录
...
/应用/ V2 /图像
/应用/ V2 /图像/子目录
/应用/ V2 / JavaScript的
/应用/ V2 / JavaScript的/子目录
...
我有一个CloudFront CDN为这些边缘位置提供服务。 HTML / JSP中对这些文件的引用都使用CDN URL。
我的问题是,有一堆javascript以相对网址“/images/image.png”的形式引用图片,因为此路径由原始webapp配置路由。在服务器端,通过在将CDN域和版本预先添加到URL之前,在服务于客户端之前修改运行时的路径,可以轻松处理此问题。在客户端运行的JS并不那么简单。
我的问题是,是否可以在AWS生态圈中做任何事情来自定义路径信息,以便我可以将“/ images”映射到“/ apps / v1 / images”,然后在适当的时候修改它以映射“/ images”到“/ apps / v2 / images”。我想保留根路由,以便无论javascript可能部署到哪个目录深度,“/ images / ...”相对路径都会成功。我不完全确定这是可能的,但如果有人确切知道,我会非常感谢这些信息。
答案 0 :(得分:1)
虽然cloudfront或S3不会更改您的网址,但您可以尝试使用S3重定向来解决此问题。您可以将未版本化的URL重定向到版本化的URL,并且当浏览器遵循重定向时,它将从cloudfront获取正确的对象。您的部署脚本可以设置正确的重定向规则。
见:
http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html