我有一个代表AWS Lambda函数的API网关资源。这适用于传递尾随路径参数(/periodicals/{tail+}
),但由于我希望这些参数是可选的,我还向更高资源(ANY
)添加了/periodicals
方法:< / p>
从AWS控制台中测试该方法时,此方法正常。但是,从我的浏览器直接对该资源执行请求会导致以下响应:
{"message":"Missing Authentication Token"}
使用此标题:
x-amzn-errortype: MissingAuthenticationTokenException
它还有x-cache
标头,其值为Error from cloudfront
,所以我猜它可能与CloudFront有关。我没有明确地设置CloudFront,并且真的不知道如何检查?
我想我读了这个错误消息的每个帖子,但它们似乎都不适用于我:
/periodicals/whatever
(即{tail+}
资源)时,它可以正常工作,但对于/periodicals
则不然。ANY
。感谢@Lakindu,一个有趣的观察是,在阶段视图中的资源下面没有列出任何方法:
我还能做些什么来找出问题所在?
答案 0 :(得分:0)
我发现了发生了什么:
我的API是使用TerraForm部署的。在TerraForm中,您指定的资源之一是an API Gateway Deployment。我认为如果API所依赖的任何资源(包括/periodicals
资源)会发生变化,它将重新部署API。
唉,我现在认为我必须更新其state_description
以强制进行新的部署。这样做的好处是您可以在不影响API用户的情况下更新配置,但这确实意味着当您要部署更新的配置时明确需要执行操作。
希望这有助于任何人。
tl; dr 与我的想法相反,在添加方法后实际上并没有部署API。 (您可以通过在“操作”下拉列表中选择“部署API”在AWS API网关控制台中手动执行此操作。