通过CloudFront提供S3存储桶和API网关

时间:2015-09-24 21:38:49

标签: amazon-web-services amazon-s3 amazon-cloudfront aws-api-gateway

我想通过此网址:www.acme.com从S3广告位投放网络应用的前端。

同时,我希望后端从API网关阶段(lambda函数正在后面运行)提供此URL:www.acme.com/api(我没有api.acme.com网址以避免处理破碎的同源政策)。

目前,我可以将Cloudfront设置为服务S3存储桶或API网关阶段但不能同时服务。

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

{"message":"Missing Authentication Token"}

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

1 个答案:

答案 0 :(得分:5)

我的错:我已将原点路径设置为Origin中的/api,路径模式设置为行为中的api/*。我不知道为什么,但我假设行为中的api/*设置会削减" api /"在网址路径中。实际上,通过这种设置,CF正在路由到API GW中不存在的URL(/api/api/...)。

这就是我得到的原因:{"message":"Missing Authentication Token"}

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