{"id":21213980,"url":"https://github.com/cruxstack/terraform-aws-eip-manager","last_synced_at":"2025-03-15T00:31:01.431Z","repository":{"id":234593648,"uuid":"673493040","full_name":"cruxstack/terraform-aws-eip-manager","owner":"cruxstack","description":"Terraform module for a serverless service that actively and dynamically binds AWS Elastic IPs to EC2 instances","archived":false,"fork":false,"pushed_at":"2023-08-01T18:50:11.000Z","size":18,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T16:22:31.278Z","etag":null,"topics":["aws-lambda","eip","elastic-ip","elastic-ips","network","serverless","sweetops","terraform","terraform-module","utility","vpc"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/modules/cruxstack/eip-manager/aws/latest","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cruxstack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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}},"created_at":"2023-08-01T18:48:26.000Z","updated_at":"2024-01-23T14:30:07.000Z","dependencies_parsed_at":"2024-04-20T15:45:38.606Z","dependency_job_id":null,"html_url":"https://github.com/cruxstack/terraform-aws-eip-manager","commit_stats":null,"previous_names":["cruxstack/terraform-aws-eip-manager"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cruxstack%2Fterraform-aws-eip-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cruxstack%2Fterraform-aws-eip-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cruxstack%2Fterraform-aws-eip-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cruxstack%2Fterraform-aws-eip-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cruxstack","download_url":"https://codeload.github.com/cruxstack/terraform-aws-eip-manager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243667619,"owners_count":20328032,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["aws-lambda","eip","elastic-ip","elastic-ips","network","serverless","sweetops","terraform","terraform-module","utility","vpc"],"created_at":"2024-11-20T21:25:18.805Z","updated_at":"2025-03-15T00:31:01.412Z","avatar_url":"https://github.com/cruxstack.png","language":"HCL","readme":"# Terraform Module: AWS EIP Manager\n\nThis Terraform module deploys a service that manages the assignment of a pool of\nElastic IP (EIP) addresses to AWS EC2 instances. It's based on the [binxio/ec2-elastic-ip-manager](https://github.com/binxio/ec2-elastic-ip-manager)\nservice with a few modifications.\n\nThe service operates by listening to EC2 instance state change notifications.\nWhen an instance reaches the \"running\" state and is tagged with a specific pool\ntag, the service assigns an available EIP from the pool to the instance. If an\ninstance is stopped or terminated, any EIPs associated with that instance are\ndisassociated, returning to the pool for use by other instances.\n\n### Features\n\n- **Auto-Assignment of EIPs**: Automatically assigns Elastic IPs (EIPs) from a\n  defined pool to EC2 instances when they reach the \"running\" state.\n- **Auto-Release of EIPs**: Automatically disassociates EIPs from instances when\nthey are stopped or terminated, returning the EIPs back to the pool.\n- **Tag-Based EIP Pools**: Uses tags to define pools of EIPs. Each pool can have\n  multiple EIPs, and instances can be assigned an EIP from a specific pool based\n  on their tags.\n- **Scalable**: Can manage multiple EIP pools, allowing for different sets of\n  instances to have their EIPs managed independently.\n- **Robust Error Handling**: Includes error handling for API calls, ensuring\n  that the service continues to operate even when individual actions fail.\n\n## Usage\n\n```hcl\nmodule \"eip_manager\" {\n  source  = \"cruxstack/eip-manager/aws\"\n  version = \"x.x.x\"\n\n  pool_tag_key    = \"your-pool-tag-key\"\n  pool_tag_values = [\"your-pool-tag-value\"]\n}\n```\n\n## Inputs\n\nIn addition to the variables documented below, this module includes several\nother optional variables (e.g., `name`, `tags`, etc.) provided by the\n`cloudposse/label/null` module. Please refer to the [`cloudposse/label` documentation](https://registry.terraform.io/modules/cloudposse/label/null/latest) for more details on these variables.\n\n| Name              | Description                                                                                                                                                           | Type           | Default              | Required |\n|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|----------------------|:--------:|\n| `pool_tag_key`    | Tag key used to identify the Elastic IPs (EIPs) that the EIP manager service can assign to EC2 instances. EIPs with this tag are considered part of the EIP pool.     | `string`       | `\"eip-manager-pool\"` |    no    |\n| `pool_tag_values` | List of tag values that, when paired with the `pool_tag_key`, identifies the Elastic IPs that the EIP manager can assign. Each tag value defines a separate EIP pool. | `list(string)` | `[\"unset\"]`          |    no    |\n\n### Outputs\n\n| Name                  | Description                                                     |\n|-----------------------|-----------------------------------------------------------------|\n| `lambda_function_arn` | The ARN of the EIP manager Lambda function                      |\n| `iam_role_arn`        | The ARN of the IAM role used by the EIP manager Lambda function |\n\n## Contributing\n\nWe welcome contributions to this project. For information on setting up a\ndevelopment environment and how to make a contribution, see [CONTRIBUTING](./CONTRIBUTING.md)\ndocumentation.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcruxstack%2Fterraform-aws-eip-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcruxstack%2Fterraform-aws-eip-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcruxstack%2Fterraform-aws-eip-manager/lists"}