Aws lambda aws API网关-{“消息”:“缺少身份验证令牌”}

Aws lambda aws API网关-{“消息”:“缺少身份验证令牌”},aws-lambda,aws-api-gateway,Aws Lambda,Aws Api Gateway,我的lambda在本地工作并返回JSON。 我的API网关在本地工作,即调用lambda并返回JSON 但是,当我将API发布到我的开发阶段,然后尝试使用调用url时,我得到 拉姆达: require 'json' def lambda_handler(event:, context:) if event['queryStringParameters'].nil? input = 1 else if event['queryStringParameters']['in'

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

但是,当我将API发布到我的开发阶段,然后尝试使用调用url时,我得到

拉姆达:

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网关:


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

您正在向端点的根url发出请求,该url是amazon提供的链接,但是由于您需要指定所请求的资源,因此无法正常工作。当你打开舞台并寻找里面的URL时,你会看到这个。

添加资源的路径,例如


您不应该需要授权人,除非您想要一个用于您的用例的授权人。了解有关API网关访问控制的更多信息:

我认为您的问题可能是您没有使用SigV4对请求进行签名:

然而,在写这个答案之前,我做了一个快速的搜索,看看是否有更简单的我可能会错过,并有。您似乎正在向端点的根url发出请求,但没有指定所请求的资源。搜索您收到的错误时的顶部堆栈溢出结果解释了问题:

当您的api网关需要api密钥时,您必须在请求头中传递它。 x-api-key:yourkey


您可以在参考资料中检查API的方法后执行。

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

  • 如果未传递正确或完整的阶段和资源名称,则可能不正确

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

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

  • 从控制台测试API并不总是验证配置是否正确的最佳方法。试着用卷发或卷发-

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

    也许我需要创建一个“授权人”吗?另请看:你能看看这个吗
    curl -v -X $HTTP_METHOD https://$API_ID.execute-api.$AWS_REGION.amazonaws.com/$STAGE_NAME/$RESOURCE_NAME