在进行AWS API请求时出现错误:缺少身份验证令牌。

22
我正在尝试通过AWS API Gateway调用Lambda函数。
我尝试了IAM身份验证、API密钥身份验证和无身份验证,但都出现了这个错误。 enter image description here
{"message":"Missing Authentication Token"}

一些人由于端点不存在而遇到了相同的问题。但是,我直接从Lambda函数AWS控制台获取了我的端点。

enter image description here

我一直在尝试在浏览器中打开URL,以及在Postman中进行测试(带或不带头身份验证:x-api-key:*****************)。

enter image description here

两者都返回上述错误。


如果您先在API Gateway中设置API,然后再将Lambda函数添加到API中,这是否有效? - RyanG
AWS在词汇上有一些奇怪和不一致的地方。有时候当AWS说"authentication"的时候,它指的是"resource",有时候当AWS说"token"的时候,它指的是"path"。所以你需要把"Missing authentication token"翻译为"Missing resource path"。 - NeilG
5个回答

19

还有一步:在Postman中,您需要将授权设置为AWS Signature,然后输入来自IAM用户的AccessKeySecretKey

Postman截图 Postman截图


它可以工作!在Postman测试时,请确保请求正文设置为原始(application/json)。我忘记了。:p - Niraj Kumar
17
如果OP指定授权为NONE,为什么还需要设置AccessKey/SecretKey? - alex

8

我将为所有观众撰写一份详细的常见问题解答,按照最常见的原因排序。

  1. 资源路径和/或HTTP方法不正确。
    • 如果您使用了正确的资源路径但错误的HTTP方法,仍会看到此消息
    • 您可以使用Postman或其他客户端对同一资源/方法进行请求签名,如果您收到404错误,则肯定是资源/方法错误
  2. 受保护资源/方法缺少签名。默认情况下,您的API将是开放的。如果您明确要求AWS Auth,则该错误表示请求未被签名。
  3. 如果您正在使用Lambda控制台创建“API Endpoint”,可能是Lambda端出现问题或新API传播存在延迟。在这种情况下,请转到API Gateway控制台,您应该看到Lambda为您创建的相同API。确保已经部署,并且您具有正确的阶段、资源路径和方法

4

提醒一下,如果你将API网关的认证设置为NONE,在无需认证的情况下生效之前,请务必先部署API


谢谢,这救了我的一天。我想借此机会表达一下我对AWS API Gateway DX有多么糟糕的frustration。 - Alexander Fortin

-2

您需要从API的操作中启用CORS。这将创建一个新的OPTIONS方法。CORS用于跨域请求。


-2

1
Api Key Required=false的行为不是抛出403错误。其他答案都是正确的,这更多是因为:a)资源/方法错误 b)受保护的资源/方法缺少凭据 - jackko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接