首页 文章

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

提问于
浏览
5

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

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

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

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

{"message":"Missing Authentication Token"}

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

1 回答

  • 5

    我的错:我在Origin中将Origin Path设置为 /api ,在Behavior中将路径模式设置为 api/* . 我不知道为什么,但我做了假设,行为中的设置 api/* 会在网址路径中切割"api/" . 实际上,通过这种设置,CF在API GW中路由到一个不存在的URL( /api/api/... ) .

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

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

相关问题