在AWS CloudFront中从S3源返回的请求中注入信息



我有一个React SPA,我想为不同的客户部署,每个客户都有自己独立的后端API。

为此,我想将后端api端点传递到SPA。

我想做的是,如果用户发送一个get请求https://myapp.mydomain.com,他得到一个文档,但api端点已添加到请求中,以某种方式我可以在React中解析和使用,例如他的URL已被修改为读取https://myapp.mydomain.com?api=myapi.mydomain.com

我正在使用S3源的AWS CloudFront,所以AWS CloudFront功能看起来很有前途,但到目前为止我还没有多少运气。

我愿意听取关于如何以及在哪里注入信息以及如何在我的React SPA中检索信息的建议,包括完全不同的方法。我唯一承诺的部分是CloudFront和使用单个S3桶为所有客户服务。

我最终实现的解决方案是基于runtime-env-cra库。这基本上是从服务器加载一个额外的脚本,其中包含一些javascript代码,用于在window对象中安装环境变量。

所需的javascript文件是由AWS Lambda函数生成的,该函数反过来又从输入资源中为CloudFormation模板中的每个客户动态生成。

不幸的是,这不能在CloudFront函数中完成,因为您无法访问那里的请求体。

最新更新