CloudFront,S3,EC2:除非S3中存在文件,否则如何将请求从CloudFront重新路由到EC2?

我的应用程序使用全部3个服务层。 最近的function请求,以降低传出的stream量给我们一些不确定性。

比方说,我们需要用CloudFront分发image.jpg文件。 没有dynamic调整图像的大小,这一切都很好。 现在,我们不需要图像的原始大小,我们随着查询string( image.jpg?w=100&h=100 )一起传递期望的variables维度。

如果我们直接把CF路由到EC2,根本就不会有任何问题。 但是,我们应该在S3之间,因为EC2太小,不能存储媒体资料。

所以问题是 – 在请求期间如何将不存在的文件推送到S3?

谢谢。

我不认为你需要(或者想要)在从S3存储桶获得404之后重新路由请求。 然后你会连续发出两个请求,并放慢速度。

CloudFront确实支持多个原始服务器。 不要把它看作是CloudFront和EC2之间的S3,而是EC2 旁边的 S3。 看看这里:

起源服务器

您可以为您的Amazon CloudFront下载发行版configuration一个或多个原始服务器。 Origin服务器可以是AWS资源,例如Amazon S3,Amazon EC2,Elastic Load Balancing或AWS之外的自定义源服务器。 Amazon CloudFront将通过将查看器请求的URL与您为发行版configuration的规则进行匹配来请求来自每个源服务器内容 。 通过此function,您可以灵活地使用每种AWS资源的devise用途 – Amazon S3用于存储,Amazon EC2用于计算等 – 而无需在您的网站上创build多个分发和pipe理多个域名。 您也可以继续使用已经设置好的原始服务器,而无需移动数据或重新部署应用程序代码。

还有一个很好的博客文章, 在这里设置多个来源。