当前位置: 首页 > 知识库问答 >
问题:

AWS API网关-{"消息":"缺少认证令牌"}

秦天宇
2023-03-14

我的lambda在本地工作并返回JSON
我的API网关在本地工作,即调用lambda并返回JSON。

但是,当我将API发布到我的开发阶段,然后尝试使用调用url时-https://jbpqyp3142.execute-api.us-east-2.amazonaws.com/DEV 我明白了

{"message":"Missing Authentication Token"}

拉姆达:

require 'json'

def lambda_handler(event:, context:)
  if event['queryStringParameters'].nil?
    input = 1
  else
    if event['queryStringParameters']['in']
      input = event['queryStringParameters']['in'].to_i
    else
      input = 1
    end
  end
  triple = (input * 3).to_s
  { statusCode: 200, body: JSON.generate("Hello from Lambda! Result is " + input.to_s + " *3 = " + triple) }
end

API网关:

我试图创建“授权人”,但出现以下错误:

共有3个答案

韩华美
2023-03-14

如果您没有使用任何类型的授权,“缺少身份验证令牌”表示URL不正确或缺少。

>

  • 如果您没有传递正确或完整的阶段和资源名称,则可能是不正确的。

    如果使用不正确的HTTP方法调用API资源(即使用GET而不是POST),也可能发生这种情况。

    如果您的API未部署最新的更改,则可能会缺少此问题。

    控制台测试API并不总是验证配置是否正确的最佳方法。尝试使用Postman应用程序或curl-

    curl -v -X $HTTP_METHOD https://$API_ID.execute-api.$AWS_REGION.amazonaws.com/$STAGE_NAME/$RESOURCE_NAME
    

  • 吕天逸
    2023-03-14

    当你的api网关需要API密钥时,你必须在请求头中传递它

    您可以在API的Resources-POST-Method执行中检查这一点。

    沈旻
    2023-03-14

    添加资源的路径,例如。

    https://jbpqyp3142.execute-api.us-east-2.amazonaws.com/DEV/tripler

    您不应该需要授权程序,除非您需要一个用于用例的授权程序。API网关权限改造:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html

    我想你的问题可能是你没有使用SigV4:https://docs.aws.amazon.com/apigateway/api-reference/signing-requests/签署你的请求

    然而,在写这个答案之前,我快速搜索了一下,看看是否有什么更简单的东西我可能错过了,而且有。似乎是向终结点的根url发出请求,但没有指定请求的资源。搜索您收到的错误时的顶部堆栈溢出结果解释了问题:https://stackoverflow.com/a/43285585/715780

     类似资料:
    • 我有一个集成应用程序,大部分工作,但注意到昨天一个消息丢失了。当时,service-activatorendpoint正忙于处理先前的消息。 以下是适用于该问题的配置。

    • 我们正在尝试从C#Windows服务调用AWS API网关来执行后台作业。哪个应该触发API网关定期初始化请求? 我们使用RestSharp调用APIendpoint,该类称为AwsAuthenticator,它继承自RestSharp.Authenticators.IAAuthenticator。但当我们调用API Gateway时,收到的错误是“我们计算的请求签名与您提供的签名不匹配。请检查您

    • 我使用的是Json。net将对象序列化到数据库。 我向类中添加了一个新属性(该属性在数据库的json中缺失),我希望新属性在json中缺失时具有默认值。 我尝试了DefaultValue属性,但它不起作用。我正在使用私有setter和构造函数来反序列化json,因此在构造函数中设置属性的值将不起作用,因为有一个带有该值的参数。 以下是一个例子: 我预计年龄是5岁,但现在是零岁。 有什么建议吗?

    • 这是我送的东西。

    • 我有一个java Spring Boot项目,我想验证匹配的密码,并在json响应中显示错误。 验证器: 调用类级别的验证器,但响应负载中不包含错误消息。当我使用属性上使用的另一个自定义验证器(UniqueEmailUserSignup)时,错误消息如下所示。但是缺少密码确认消息。 实体通过控制器功能中的有效注释进行验证。 如何确保自定义ConstraintValidator的错误消息也包含在错误

    • 我有一个工作表单,它有一个必填字段,不能为空: 如果我在请求中指定此字段,但将该字段保留为空,则会得到以下响应: 如果我在请求中省略此字段,我将得到以下响应: 有没有一些内置的Symfony逻辑,我可以用它来使第二个例子与第一个例子相匹配? [编辑]使用的是Symfony 2.5-现在更新为Symfony 2.8。同样的问题。