Create terraform_api_gateway configs from a simple spec. The goal is to make it relatively easy to build out large complex gateways.
$ npm install terra-gateway
var terraGateway = require('terra-gateway')
const spec = {
"id": "function_router",
"name": "Function Router API",
"description": "Route requests to functions.",
"methods": {
"GET": {
"request": {
"credentials": "${aws_iam_role.gateway_invoke_lambda.arn}",
"lambda_arn": tfvars.apex_function_route,
"templates": {
"application/json": {
"body": "$input.json('$')",
"name": "$input.params('name')",
"url": "$url",
"headers": {
"Content-Type": "$input.params().get('Content-Type')",
"Host": "$input.params().header.get('Host')",
"cookie": "$input.params('cookie')",
},
"header-params": "$input.params().header"
}
}
},
"responses": {
"200": {
"models": {
"application/json": "Empty",
"text/html": "Empty"
},
"headers": {
"Content-Type": "integration.response.body.type"
},
"body": {
"application/json": "$input.path('$.body')"
}
}
}
}
},
"stage": "prod"
}
terraGateway(spec, './function_router.tf.json')
spec
- api gateway specoutput
- output file path
Type: object
Type: string
Unique terraform identifier.
Type: string
Name of API.
Type: string
API description.
Map of HTTP methods to their respective request and responses.
Type: object
credentials
- {string} - Gateway lambda invoke role arn.lambda_arn
- {string} - Lambda arn.templates
- {object} - Request mapping template.
Map of response codes to body and header maps.
Type: object
models
- {object} - Response models per content-type.headers
- {object} - Map integration response to header.body
- {object} - Map integration response to method response body.
Type: 'string'
MIT