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

问题描述 投票:5回答:1

我想在这个网址:www.acme.com上从S3存储桶提供Web应用程序的前端。

同时,我希望后端从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"}

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

amazon-web-services amazon-s3 amazon-cloudfront aws-api-gateway
1个回答
5
投票

我的错:我在Origin中将源路径设置为/api,在行为中将路径模式设置为api/*。我不知道为什么,但我假设行为中的设置api/*会在url路径中剪切“api /”。实际上,通过这种设置,CF在API GW中路由到一个不存在的URL(/api/api/...)。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.