7

我想通过这个 url 的 S3 存储桶为 Web 应用程序的前端提供服务:www.acme.com

同时,我希望从 API Gateway 阶段(lambda 函数在后面运行)在此 url 提供后端服务:(www.acme.com/api我没有api.acme.comurl 以避免不得不处理损坏的同源策略)。

此时,我可以设置 Cloudfront 来为 S3 存储桶或 API 网关阶段提供服务,但不能一起使用。

我尝试将两者声明为资源(首先是存储桶,然后是 API 网关)和两个行为路径(存储桶的默认路径和网关的第二个 /api)。存储桶服务良好,但 GETwww.acme.com/api/users导致:

{"message":"Missing Authentication Token"}

感谢您提供有关如何解决此问题的所有线索。

4

1 回答 1

6

我的错:我已将 Origin Path 设置为/apiin Origin 并将 Path Pattern 设置为api/*in Behavior。我不知道为什么,但我假设api/*Behavior 中的设置会在 url 路径中剪切“api/”。事实上,通过这种设置,CF 正在路由到/api/api/...API GW 中不存在的 url ()。

这就是为什么我得到一个:{"message":"Missing Authentication Token"}

结论:如果您在网关中使用多个阶段,该阶段将是您的 url 路径的基础,您不应将 Origin Path 留空。

于 2015-09-26T19:48:19.483 回答