TFa*_*aws 2 terraform aws-api-gateway openapi
我收到了 SwaggerHub 上托管的 OpenAPI 3.0.1 定义的链接,并被告知要部署它。在 Terraform 方面,我看到太多让我困惑的资源,我不确定该使用哪一个。通过 Terraform 部署已在 OpenAPI 定义中配置的 API 网关的最直接方法是什么?是否有资源可以让我向 API 网关提供 OpenAPI 定义 URL,或者我必须将实际的 JSON 复制粘贴到某处?
AWS API Gateway 服务有两种主要使用模式:
由于底层 API 支持这两种模型,因此最初很难看出哪些部分与每种使用模式相关。AWS 的 Terraform 提供程序遵循底层 API 设计,因此那里也会出现混乱。
听起来您打算采用我上面描述的第二条路径,在这种情况下,Terraform 中的定义相对简单,特别是它通常只涉及单个 Terraform 资源来定义 API 本身。(您可能需要使用其他人来“部署”API 等,但这似乎超出了您当前问题的范围。)
资源api_gateway_rest_api类型是用于定义 API Gateway REST API 的根资源类型,对于 OpenAPI 方法来说,它是定义整个 API 表面所需的唯一一种资源类型,方法是在其body参数中指定 OpenAPI 定义:
resource "aws_api_gateway_rest_api" "example" {
name = "example"
body = file("${path.module}/openapi.json")
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我假设您已将 API 定义以 JSON 格式保存在与包含资源配置的文件openapi.json位于同一目录中的文件中。.tf我不熟悉 SwaggerHub,但如果有一个可用的 Terraform 提供程序,它有一个用于直接从该系统检索定义的数据源,那么您可以将它们组合起来,但原理是相同的;它只会body改变参数的确切表达式。
另一种通过 API Gateway API 显式定义资源等的方法将为描述 API 的每个 API Gateway 的单独对象类型提供单独的资源,这使得 Terraform 配置更加复杂。但是,当您使用 OpenAPI 规范定义 API 时,不需要使用这些(实际上,为了避免冲突,也不应该使用这些)。
注意:以上内容是关于 API Gateway REST API,它是独立于“API Gateway v2”的产品,后者提供所谓的“HTTP API”和“WebSocket API”。据我所知,API Gateway v2 不支持 OpenAPI 定义,因此我假设您询问的是原始 API Gateway,因此是“REST API”。
| 归档时间: |
|
| 查看次数: |
3025 次 |
| 最近记录: |