diff --git a/api.tf b/api.tf index 8130a2a..0ddd149 100644 --- a/api.tf +++ b/api.tf @@ -1,5 +1,10 @@ resource "aws_api_gateway_rest_api" "root" { name = local.api_gateway_name + endpoint_configuration { + types = var.api_type + vpc_endpoint_ids = local.vpc_endpoint_id + } + policy = local.api_access_policy } resource "aws_api_gateway_resource" "modules_root" { @@ -36,7 +41,13 @@ resource "aws_api_gateway_deployment" "live" { module.modules_v1, module.disco, ] - rest_api_id = aws_api_gateway_rest_api.root.id stage_name = "live" + variables = { + deployment_version = formatdate("MMDDYYYYHHmmss", timestamp()) + version_scheme = "MMDDYYYHHmmss" + } + lifecycle { + create_before_destroy = true + } } diff --git a/hostname.tf b/hostname.tf index 908f7b0..8bda010 100644 --- a/hostname.tf +++ b/hostname.tf @@ -10,7 +10,7 @@ resource "aws_api_gateway_domain_name" "main" { domain_name = local.friendly_hostname.host regional_certificate_arn = local.friendly_hostname.acm_certificate_arn - + security_policy = var.domain_security_policy endpoint_configuration { types = ["REGIONAL"] } @@ -18,7 +18,6 @@ resource "aws_api_gateway_domain_name" "main" { resource "aws_api_gateway_base_path_mapping" "main" { count = length(aws_api_gateway_domain_name.main) - api_id = aws_api_gateway_deployment.live.rest_api_id stage_name = aws_api_gateway_deployment.live.stage_name domain_name = aws_api_gateway_domain_name.main[count.index].domain_name diff --git a/modules/modules.v1/api_download.tf b/modules/modules.v1/api_download.tf index a1a9959..f73014a 100644 --- a/modules/modules.v1/api_download.tf +++ b/modules/modules.v1/api_download.tf @@ -7,24 +7,25 @@ resource "aws_api_gateway_method" "download_GET" { authorizer_id = local.authorizer.id } +data template_file "download_request" { + template = file("${path.module}/files/download_request.tpl") + vars = { + dynamo_table_name = var.dynamodb_table_name + } +} + resource "aws_api_gateway_integration" "download_GET" { rest_api_id = aws_api_gateway_method.download_GET.rest_api_id resource_id = aws_api_gateway_method.download_GET.resource_id http_method = aws_api_gateway_method.download_GET.http_method type = "AWS" - uri = "arn:aws:apigateway:us-west-2:dynamodb:action/GetItem" + uri = "arn:aws:apigateway:${data.aws_region.region.name}:dynamodb:action/GetItem" integration_http_method = "POST" credentials = var.dynamodb_query_role_arn request_templates = { - "application/json" = jsonencode({ - TableName = var.dynamodb_table_name - Key : { - Id = { S = "$util.urlEncode($input.params('namespace'))/$util.urlEncode($input.params('module'))/$util.urlEncode($input.params('provider'))" } - Version = { S = "$util.urlEncode($input.params('version'))" } - } - }) + "application/json" = data.template_file.download_request.rendered } } @@ -50,12 +51,6 @@ resource "aws_api_gateway_integration_response" "download_GET_200" { } response_templates = { - "application/json" = <