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

rem*_*ing 5 amazon-s3 amazon-web-services amazon-cloudfront aws-api-gateway

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

同时,我希望后端在这个URL上从API网关阶段(lambda函数正在后面运行)提供服务:( www.acme.com/api我没有api.acme.com网址,以避免必须处理破坏的同源策略).

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

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

{"message":"Missing Authentication Token"}
Run Code Online (Sandbox Code Playgroud)

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

rem*_*ing 5

我的错:我已将Origin Path设置为/apiOrigin,将Path Pattern设置api/*为Behavior.我不知道为什么但是我假设api/*行为中的设置会在url路径中剪切"api /".实际上,通过这种设置,CF /api/api/...在API GW中路由到一个不存在的url().

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

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