API gateway
HTTP vs REST APIs
By default, Terrable will create HTTP API Gateways (V2).
However, it is possible to create REST API Gateways (V1)
by specifying explicitly the http_api or rest_api parameters.
You can refer to the AWS documentation to decide which one best suits your needs.
You can use the following syntax to define either an HTTP API or a REST API.
module "simple_api" {
source = "terrable-dev/terrable-api/aws"
api_name = "my-api"
http_api = {
}
handlers = {
TestHandler: {
source = "./TestHandlerSource.ts"
http = {
GET = "/route"
}
}
}
}
Tip
The http_api parameter is optional if you want an HTTP API but don't need any specific configuration, such as a custom domain.
Endpoint Types
Regional
By default, Terrable will configure REST API Gateways (V1) with the REGIONAL endpoint type.
HTTP API Gateways (V2) only support REGIONAL endpoint types.
Private
When using REST API Gateways (V1), the PRIVATE endpoint can be configured via the Terrable module using the following options:
rest_api.endpoint_typecan be set toPRIVATErest_api.vpc_endpoint_idstakes an array of VPC Endpoints that should be able allowed to invoke the API Gateway.
module "simple_api" {
source = "terrable-dev/terrable-api/aws"
api_name = "my-api"
rest_api = {
endpoint_type = "PRIVATE" # Configures the API endpoints as 'PRIVATE'
vpc_endpoint_ids = ["vpce-id"] # The VPC Endpoints to be used to generate the resource policy
}
handlers = {
TestHandler: {
source = "./TestHandlerSource.ts"
http = {
GET = "/route"
}
}
}
}
This configuration will create a REST API that can only be invoked from the provided VPC Endpoints.
This allows you to secure an API Gateway to your VPC.