从AWS Lambda函数调用授权的Api Gateway终端节点

时间:2020-05-06 08:08:58

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

我正在尝试定义一个Lambda函数,该函数调用API网关(authorizationType: AWS_IAM)的已验证终结点。 我已经创建了策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke",
                "execute-api:InvalidateCache"
            ],
            "Resource": "arn:aws:execute-api:*:<account_id>:*/*/*/*"
        }
    ]
}

并将策略附加到lambda。 但是来自端点的响应已经是403(禁止)。 我认为我必须添加一些授权标头才能请求。 这是示例lambda代码(ruby):

require 'httparty'
require 'json'
API_GATEWAY_URL = ENV["API_GATEWAY_URL"]
def lambda_handler(event:, context:)
  env = event&.dig("env")
  endpoint = event&.dig("enpoint")
  complete_url = "https://#{env}.#{API_GATEWAY_URL}/#{endpoint}"
  response = HTTParty.get(complete_url)
  p response.code
  p response.body
end

有人知道我该如何进行吗?谢谢

1 个答案:

答案 0 :(得分:0)

您是否检查API网关是否配置了认证密钥?

如果是,则您的应用程序应使用密钥x-api-key

通过标头

带有Auth API-Key的API端点如下:

enter image description here