【问题标题】:Getting error: Missing Authentication Token after AWS API request收到错误:AWS API 请求后缺少身份验证令牌
【发布时间】:2016-09-04 02:36:50
【问题描述】:

我正在尝试通过 AWS API Gateway 调用 Lambda 函数。

我在尝试 IAM 身份验证、API 密钥身份验证以及未进行身份验证时遇到此错误。

{"message":"Missing Authentication Token"}

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

我一直在尝试在浏览器和 Postman 中打开 URL(有和没有标头身份验证:x-​​api-key: **************** *)。

两者都以上述错误响应。

【问题讨论】:

  • 如果您先在 API Gateway 中设置 API,然后将 Lambda 函数添​​加到 API,这是否有效?

标签: amazon-web-services authentication aws-lambda aws-api-gateway


【解决方案1】:

再一步:在Postman中,你需要将Authorization设置为AWS Signature,然后输入你的AccessKey来自您的 IAM 用户的 SecretKey

邮递员截图

【讨论】:

  • 有效!在 Postman 中进行测试时,请确保将请求正文设置为 Raw (application/json)。我已经忘记了。 :p
  • 如果 OP 特定授权为 NONE,为什么需要设置 AccessKey/SecretKey?
【解决方案2】:

我将在此处为所有观众撰写详细的常见问题解答。按最常见的原因排序。

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

【讨论】:

    【解决方案3】:

    只是想提一下,如果您将 API 网关的身份验证设置为 NONE,请确保您需要先Deploy API,然后才能使无身份验证设置生效。

    【讨论】:

    • 谢谢,这拯救了我的一天。我借此机会表达了我对 AWS API Gateway DX 有多可怕的失望
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      您需要将 Api Key Required 设置为 true。在此处查看更多信息:http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-api-keys.html

      【讨论】:

      • Api Key Required = false 的行为是不抛出 403 错误。其他答案是正确的,这更多与 a) 错误的资源/方法 b) 缺少受保护资源/方法的信任
      猜你喜欢
      • 2021-08-28
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2020-09-18
      • 2017-04-05
      • 1970-01-01
      相关资源
      最近更新 更多