首页 > 解决方案 > 亚马逊 API 网关 403 禁止

问题描述

最近在用Amazon API Gateway。我创建了一个api,但是API总是失败。一开始,我没有添加请求头。API响应的结果如下:

HTTP/1.1 403 Forbidden    
{"message":null, "type": "ACCESS_DENIED", "status":"", "other":"" }

然后,我添加了一个名为主机的标题,结果改变了。

HTTP/1.1 403 Forbidden
{"message":"Forbidden"}

我没有使用其他 AWS。我将授权设置为无,所需的 API 密钥为假。 在此处输入图片描述 您能帮我吗?谢谢!</p>

标签: javaamazon-web-servicesaws-api-gateway

解决方案


让我难过的一个原因{"message":"Forbidden"}是我没有部署我的 API。

对于遇到此问题的任何人,请检查您的网关是否已部署。首先,您需要一个Stage,您可以使用它从Actions下拉列表中单击Deploy API,选择您的阶段。

部署会给你一个invoke_url, (以/{stage-name}.

对于那些使用 Terraform 的人......

您可以定义一个aws_api_gateway_stage取决于aws_api_gateway_deployment. 在撰写本文时,存在一个已知问题,即部署不会重新触发,这是我的禁止错误的最初原因。

要解决此问题并在每次进行更改时运行部署,请添加aws_api_gateway_deployment

resource "aws_api_gateway_deployment" "gateway-deployment" {
  ...

  stage_description = "Terraform hash ${md5(join(",", local.all_resources))}"

  lifecycle {
    create_before_destroy = true
  }
}

locals {
  all_resources = [
    "${aws_api_gateway_resource.simulator-gateway-resource.path}:${aws_api_gateway_method.simulator-gateway-method.http_method}:${aws_api_gateway_integration.simulator-gateway-integration.uri}",
  ]
}```

推荐阅读