【问题标题】:Is it possible to do AWS content routing through the CloudFront CDN?是否可以通过 CloudFront CDN 进行 AWS 内容路由?
【发布时间】:2014-07-18 01:55:33
【问题描述】:

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

我正在将现有 Web 应用程序的一部分移植到 AWS 生态圈。我正在使用版本控制来支持零停机升级体验。因此,我在 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/子目录

...

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

我的问题是有一堆 javascript 以相对 url "/images/image.png" 的形式引用图像,因为这个路径是由原始 webapp 配置路由的。在服务器端,这可以通过在运行时修改路径来轻松处理,然后通过将 CDN 域和版本添加到 url 来为客户端提供服务。 JS,运行在客户端,没那么简单。

我的问题是,是否可以在 AWS 生态圈中做任何事情来自定义路由信息,以便我可以将“/images”映射到“/apps/v1/images”,然后在适当的时候修改它以映射“/images”到“/apps/v2/images”。我想保留根路由,以便无论 javascript 可能部署到的目录深度如何,“/images/...”相对路径都会成功。我不完全确定这是否可能,但如果有人确切知道,我将不胜感激。

【问题讨论】:

  • 您的相对 url 将如何引用到 S3?相对 url 只在同一台服务器上工作。 S3 图片 url 会有所不同

标签: javascript amazon-web-services amazon-s3 amazon-cloudfront


【解决方案1】:

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

见:

http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html

Amazon S3 object redirect

【讨论】:

  • 我尝试实现 S3 重定向规则,它们可以通过 Endpoint 直接从 Bucket 提供服务,但无论是 Bucket 还是 Website Endpoint 域用作源,它们都不能在 CloudFront 中工作,除非我遗漏了什么。
  • 没关系,CloudFront 缓存有干扰。我能够在启用静态 Web 托管部分设置路由规则,在该部分中我能够将未版本化的请求转发到文件的版本化实例。请注意,必须使用 S3 存储桶的端点网站地址作为 CloudFront 源,而不是 S3 存储桶本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2012-11-02
  • 2018-03-26
  • 2011-09-22
  • 1970-01-01
  • 2013-04-09
相关资源
最近更新 更多