APIGateway 默认集成不起作用

APIGateway Default Integration not working

我正在使用 AWS CDK 创建我的 API 网关 REST API

我想将 RestApi 默认设置为 return HTTP 404,所以我设置了

this.gateway = new apigw.RestApi(this, "Gateway", {
  defaultIntegration: new apigw.MockIntegration({
    passthroughBehavior: apigw.PassthroughBehavior.NEVER,
    requestTemplates: {
      "application/json": `{
        "statusCode": 404
      }`
    },
    integrationResponses: [{
      statusCode: "404",
      responseTemplates: {
        "application/json": JSON.stringify({ "message": "Not Found" })
      }
    }]
  }),
  defaultMethodOptions: {
    methodResponses: [
      {
        statusCode: "404"
      }
    ]
  }
});

// UPDATE:
this.gateway.root.resourceForPath("/foo")
this.gateway.root.resourceForPath("/foo/bar")

....

但是,如果我将 GET 卷曲到 /foo,我不会返回 HTTP 404,而是返回 403。我错过了什么?

正在阅读 resourceForPathdocs(和源代码),默认集成和默认方法选项设置正确。

更新:

我添加了 this.gateway.root.resourceForPath("/foo") 但没有得到 404。

我必须在父资源 (/foo) 上创建一个 ANY 方法。

const foo = this.gateway.root.resourceForPath("/foo");

foo.addMethod("ANY", this.gateway.root.defaultIntegration, this.gateway.root.defaultMethodOptions)

但是对我来说,如果我必须为每个路径段手动设置方法,这就违背了在 RestApi 上使用默认 integration/method 选项的目的。