Reputation: 190
I'm currently creating an AWS API Gateway with terraform by using an open api spec from a json file.
resource "aws_api_gateway_rest_api" "my_test_gateway" {
name = "test_gateway"
description = "test gateway"
body = "${file("assets/test_openapi_spc.json")}"
}
I need to map the api resources that are created by said openAPI spec to AWS Step Functions. How can i reference a API Gateway resource created by the openAPI spec to be able to create a new aws_api_gateway_integration? Normally you would do something like this and describe the resources in terraform
resource "aws_api_gateway_integration" "test" {
resource_id = "${aws_api_gateway_resource.my_resource.id}"
}
In my case, however, i don't have a resource id defined in my terraform scripts because they get created by the openAPI spec.
Is there some way of extracting all the resources of an api gateway that were created as terraform data source so that i can reference them? Not sure if i'm missing something major here.
Upvotes: 2
Views: 4589
Reputation: 190
seems the best way to do this is with swagger extensions https://swagger.io/docs/specification/openapi-extensions/
The integration part of the API resource can reside in your swagger spec.
Just like mentioned in the aws API Gateway extensions to swagger https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html
So if you want to map a resource to a step function for example, you can do:
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"
I'm not finished yet, but i believe that instead of arn:aws:apigateway:my_zone:states:action/StartExecution
it should be arn:aws:apigateway:my_zone:states:your_step_function_name
Upvotes: 2