{"id":20195007,"url":"https://github.com/mich0232/aws-api-gw","last_synced_at":"2026-05-12T15:31:53.689Z","repository":{"id":154750494,"uuid":"571839785","full_name":"Mich0232/aws-api-gw","owner":"Mich0232","description":"AWS API Gateway module creates a HTTP gateway API resources, with ability to attach lambda integrations and custom authorizers.","archived":false,"fork":false,"pushed_at":"2022-12-16T23:59:28.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T08:43:52.670Z","etag":null,"topics":["api-gateway","aws","aws-lambda","terraform","terraform-module"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mich0232.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-29T01:49:24.000Z","updated_at":"2022-12-06T19:09:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"a4d3b655-92d8-4b74-a371-64a8a3b545ee","html_url":"https://github.com/Mich0232/aws-api-gw","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mich0232/aws-api-gw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mich0232%2Faws-api-gw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mich0232%2Faws-api-gw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mich0232%2Faws-api-gw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mich0232%2Faws-api-gw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mich0232","download_url":"https://codeload.github.com/Mich0232/aws-api-gw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mich0232%2Faws-api-gw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32945298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-12T09:19:52.626Z","status":"ssl_error","status_checked_at":"2026-05-12T09:17:33.438Z","response_time":102,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-gateway","aws","aws-lambda","terraform","terraform-module"],"created_at":"2024-11-14T04:15:19.705Z","updated_at":"2026-05-12T15:31:53.669Z","avatar_url":"https://github.com/Mich0232.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"## AWS HTTP API Gateway module\n\nThis module creates an HTTP API using AWS API Gateway.  \n\nStages are throttled using default limits:\n\n```terraform\ndefault_route_settings {\n    throttling_burst_limit   = 5000\n    throttling_rate_limit    = 10000\n}\n```\n\n\n### Routes \n\nYou can specify API routes using configuration. Each integration is of type AWS Lambda Proxy.\n\n```terraform\nmodule \"api\" {\n  source       = \"github.com/Mich0232/aws-api-gw.git\"\n  project_name = local.project_name\n  api_name     = \"my-api\"\n  stages = {\n    \"v1\" : {\n      auto_deploy = true\n    }\n  }\n  \n  integrations = {\n    \"main\" : {\n      function_name          = module.lambda.function_name\n      invoke_arn             = module.lambda.invoke_arn\n      stage                  = \"v1\"\n      method                 = \"POST\"\n      payload_format_version = \"2.0\"\n    }\n  }\n  \n  routes = {\n    \"GET /Info\" : {\n      integration   = \"main\"\n      authorizer_id = null\n      stage         = \"v1\"\n    }\n  }\n}\n```\n\n### Authorizers\n\nModule support adding custom authorizers.  \nCreated authorizers can be later references in the integrations section.\n\n```terraform\nmodule \"api\" {\n  ...\n  authorizers = {\n    \"my_authorizer\" : {\n      invoke_arn                        = module.authorizer.invoke_arn\n      function_name                     = module.authorizer.function_name\n      authorizer_payload_format_version = \"2.0\"\n      authorizer_identity_sources       = [\"$request.header.cookie\"]\n      stage                             = \"v1\"\n    }\n  }\n\n  integrations = {\n    \"main\" : {\n      function_name          = module.lambda.function_name\n      invoke_arn             = module.lambda.invoke_arn\n      stage                  = \"v1\"\n      method                 = \"POST\"\n      payload_format_version = \"2.0\"\n    }\n  }\n\n  routes = {\n    \"GET /Info\" : {\n      integration   = \"main\"\n      authorizer_id = \"my_authorizer\"\n      stage         = \"v1\"\n    }\n  }\n  ...\n}\n```\n\n### Domains\n\nWhen adding custom domains you need to include the certificate ARN.  \nEndpoint type will be set to `REGIONAL` and security policy to `TLS_1_2`\n\n```terraform\nmodule \"api\" {\n  source       = \"github.com/Mich0232/aws-api-gw.git\"\n  project_name = local.project_name\n  api_name     = \"my-api\"\n  ...\n  domains = {\n    \"https://my-custom-website.com\" : {\n      certificate_arn = aws_acm_certificate_validation.api.certificate_arn\n      domain_mapping  = \"v1\"\n      stage           = \"v1\"\n    }\n  }\n}\n```\n\n\n## Provisioned Resources\n\n - AWS HTTP API Gateway \n - GW Stage\n - GW Integrations\n - GW Authorizers\n - GW Routes\n - GW Custom domains\n - GW Domain mappings\n - IAM Roles \u0026 Permissions\n\n\n## Input variables\n\n`project_name` - Project name. Used as a prefix in resources\n\n`api_name` - AWS API GW name.\n\n`domains` - custom domains configuration\n\n```terraform\n{\n  type = map(object({\n    certificate_arn = string\n    domain_mapping  = string\n    stage           = string\n  }))\n  default = {}\n}\n```\n\n`cors_allowed_domains` - List of allowed domain for CORS interactions\n\n`stages` - AWS GW Stages configuration\n```terraform\n{\n  type = map(object({\n    auto_deploy = bool\n  }))\n}\n```\n\n`authorizers` - AWS GW Lambda authorizers configuration\n```terraform\n{\n  type = map(object({\n    invoke_arn                        = string\n    function_name                     = string\n    authorizer_payload_format_version = string\n    authorizer_identity_sources       = list(string)\n    stage                             = string\n  }))\n  default = {}\n}\n```\n\n`integrations` - AWS GW Integrations configuration\n```terraform\n{\n  type = map(object({\n    invoke_arn             = string\n    function_name          = string\n    stage                  = string\n    method                 = string\n    payload_format_version = string\n  }))\n}\n```\n\n`routes` - AWS GW Routes configuration.\n\nExample key: `\"GET /Test\"` or `\"POST /Login\"`\n```terraform\n{\n  type = map(object({\n    integration   = string\n    authorizer_id = string\n    stage         = string\n  }))\n}\n```\n\n## Output\n\n`invoke_urls` - list of invoke urls per API Stage\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmich0232%2Faws-api-gw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmich0232%2Faws-api-gw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmich0232%2Faws-api-gw/lists"}