Search

API Gateway

Console
data "aws_region" "api_current" {} resource "aws_api_gateway_rest_api" "apigw" { name = "wsi-api" } resource "aws_api_gateway_resource" "apigw_user" { parent_id = aws_api_gateway_rest_api.apigw.root_resource_id rest_api_id = aws_api_gateway_rest_api.apigw.id path_part = "user" } resource "aws_api_gateway_resource" "apigw_healthcheck" { parent_id = aws_api_gateway_rest_api.apigw.root_resource_id rest_api_id = aws_api_gateway_rest_api.apigw.id path_part = "healthz" } resource "aws_api_gateway_request_validator" "validate_body" { rest_api_id = aws_api_gateway_rest_api.apigw.id name = "Validate Body" validate_request_body = true validate_request_parameters = false } resource "aws_api_gateway_method" "post" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id authorization = "NONE" http_method = "POST" request_validator_id = aws_api_gateway_request_validator.validate_body.id request_models = { "application/json" = "Empty" } } resource "aws_api_gateway_method" "get" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id authorization = "NONE" http_method = "GET" request_parameters = { "method.request.querystring.name" = true } } resource "aws_api_gateway_method" "delete" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id authorization = "NONE" http_method = "DELETE" request_parameters = { "method.request.querystring.name" = true } } resource "aws_api_gateway_method" "healthcheck" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_healthcheck.id authorization = "NONE" http_method = "GET" } resource "aws_api_gateway_integration" "post" { http_method = aws_api_gateway_method.post.http_method rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id integration_http_method = "POST" type = "AWS" uri = "arn:aws:apigateway:${data.aws_region.api_current.name}:dynamodb:action/PutItem" credentials = aws_iam_role.dynamodb.arn request_templates = { "application/json" = "${file("./src/post_request.json")}" } } resource "aws_api_gateway_integration" "get" { http_method = aws_api_gateway_method.get.http_method rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id integration_http_method = "POST" type = "AWS" uri = "arn:aws:apigateway:${data.aws_region.api_current.name}:dynamodb:action/GetItem" credentials = aws_iam_role.dynamodb.arn request_templates = { "application/json" = "${file("./src/get_request.json")}" } } resource "aws_api_gateway_integration" "delete" { http_method = aws_api_gateway_method.delete.http_method rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id integration_http_method = "POST" type = "AWS" uri = "arn:aws:apigateway:${data.aws_region.api_current.name}:dynamodb:action/DeleteItem" credentials = aws_iam_role.dynamodb.arn request_templates = { "application/json" = "${file("./src/delete_request.json")}" } } resource "aws_api_gateway_integration" "healthcheck" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_healthcheck.id http_method = aws_api_gateway_method.healthcheck.http_method type = "MOCK" request_templates = { "application/json" = "${file("./src/healthcheck_request.json")}" } } resource "aws_api_gateway_method_response" "post" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id http_method = aws_api_gateway_method.post.http_method status_code = "200" response_models = { "application/json" = "Empty" } } resource "aws_api_gateway_method_response" "get" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id http_method = aws_api_gateway_method.get.http_method status_code = "200" response_models = { "application/json" = "Empty" } } resource "aws_api_gateway_method_response" "delete" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id http_method = aws_api_gateway_method.delete.http_method status_code = "200" response_models = { "application/json" = "Empty" } } resource "aws_api_gateway_method_response" "healthcheck" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_healthcheck.id http_method = aws_api_gateway_method.healthcheck.http_method status_code = "200" response_models = { "application/json" = "Empty" } } resource "aws_api_gateway_integration_response" "post" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id http_method = aws_api_gateway_method.post.http_method status_code = 200 response_templates = { "application/json" = "${file("./src/post_response.json")}" } depends_on = [aws_api_gateway_integration.post] } resource "aws_api_gateway_integration_response" "get" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id http_method = aws_api_gateway_method.get.http_method status_code = 200 response_templates = { "application/json" = "${file("./src/get_response.json")}" } depends_on = [aws_api_gateway_integration.get] } resource "aws_api_gateway_integration_response" "delete" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_user.id http_method = aws_api_gateway_method.delete.http_method status_code = 200 response_templates = { "application/json" = "${file("./src/delete_response.json")}" } depends_on = [aws_api_gateway_integration.delete] } resource "aws_api_gateway_integration_response" "healthcheck" { rest_api_id = aws_api_gateway_rest_api.apigw.id resource_id = aws_api_gateway_resource.apigw_healthcheck.id http_method = aws_api_gateway_method.healthcheck.http_method status_code = 200 response_templates = { "application/json" = "${file("./src/healthcheck_response.json")}" } depends_on = [aws_api_gateway_integration.healthcheck] } resource "aws_api_gateway_deployment" "apigw" { depends_on = [ aws_api_gateway_integration.post, aws_api_gateway_integration.get, aws_api_gateway_integration.delete ] rest_api_id = aws_api_gateway_rest_api.apigw.id stage_name = "v1" }
JSON
복사