terraform api 网关与 openapi 规范的集成
terraform api gateway integration with openapi spec
我目前正在使用 json 文件中的开放 api 规范创建一个带有 terraform 的 AWS API 网关。
resource "aws_api_gateway_rest_api" "my_test_gateway" {
name = "test_gateway"
description = "test gateway"
body = "${file("assets/test_openapi_spc.json")}"
}
我需要将上述 openAPI 规范创建的 api 资源映射到 AWS Step Functions。
我如何引用由 openAPI 规范创建的 API 网关资源才能创建新的 aws_api_gateway_integration?
通常你会做这样的事情并在 terraform
中描述资源
resource "aws_api_gateway_integration" "test" {
resource_id = "${aws_api_gateway_resource.my_resource.id}"
}
然而,就我而言,我没有在我的 terraform 脚本中定义资源 ID,因为它们是由 openAPI 规范创建的。
是否有某种方法可以提取作为 terraform 数据源创建的 api 网关的所有资源,以便我可以引用它们?
不确定我是否遗漏了一些重要的东西。
似乎最好的方法是使用 swagger 扩展
https://swagger.io/docs/specification/openapi-extensions/
API 资源的集成部分可以驻留在您的 swagger 规范中。
就像 aws 中提到的 API 招摇的网关扩展 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html
所以如果你想将一个资源映射到一个步骤函数,你可以这样做:
x-amazon-apigateway-integration:
credentials: "arn:aws:iam::my_account:role/ApiGWToStepFunction"
responses:
default:
statusCode: "201"
uri: "arn:aws:apigateway:my_zone:states:action/StartExecution"
passthroughBehavior: "when_no_templates"
httpMethod: "POST"
type: "aws"
我还没说完,但我相信应该 arn:aws:apigateway:my_zone:states:your_step_function_name
而不是 arn:aws:apigateway:my_zone:states:action/StartExecution
我目前正在使用 json 文件中的开放 api 规范创建一个带有 terraform 的 AWS API 网关。
resource "aws_api_gateway_rest_api" "my_test_gateway" {
name = "test_gateway"
description = "test gateway"
body = "${file("assets/test_openapi_spc.json")}"
}
我需要将上述 openAPI 规范创建的 api 资源映射到 AWS Step Functions。 我如何引用由 openAPI 规范创建的 API 网关资源才能创建新的 aws_api_gateway_integration? 通常你会做这样的事情并在 terraform
中描述资源resource "aws_api_gateway_integration" "test" {
resource_id = "${aws_api_gateway_resource.my_resource.id}"
}
然而,就我而言,我没有在我的 terraform 脚本中定义资源 ID,因为它们是由 openAPI 规范创建的。
是否有某种方法可以提取作为 terraform 数据源创建的 api 网关的所有资源,以便我可以引用它们? 不确定我是否遗漏了一些重要的东西。
似乎最好的方法是使用 swagger 扩展 https://swagger.io/docs/specification/openapi-extensions/
API 资源的集成部分可以驻留在您的 swagger 规范中。
就像 aws 中提到的 API 招摇的网关扩展 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html
所以如果你想将一个资源映射到一个步骤函数,你可以这样做:
x-amazon-apigateway-integration:
credentials: "arn:aws:iam::my_account:role/ApiGWToStepFunction"
responses:
default:
statusCode: "201"
uri: "arn:aws:apigateway:my_zone:states:action/StartExecution"
passthroughBehavior: "when_no_templates"
httpMethod: "POST"
type: "aws"
我还没说完,但我相信应该 arn:aws:apigateway:my_zone:states:your_step_function_name
arn:aws:apigateway:my_zone:states:action/StartExecution