Associates a route53 hostname with private ips of an external load balancer.
Keeps private IPs in sync by monitoring CloudTrail for ENI changes and running a lambda on every change.
data "aws_vpc" "default" {
}
module "ec2_alb_private_hostname" {
source = "git::https://github.com/maxfortun/ec2_alb_private_hostname.git"
name = "external-load-balancer-name"
log_retention_in_days = "1"
tags = {
tag = "here"
}
region = "us-east-1"
listener_arns = aws_lb_listener.listener.*.arn
zone_id = data.aws_route53_zone.svc.zone_id
hostname_prefix = "vir-lb-name-private"
source_ips = [ data.aws_vpc.default.cidr_block ]
}
Can be triggered manually by calling https://<load balancer hostname>/private-hostname/update
.
Name | Version |
---|---|
terraform | >= 0.12, < 2.0 |
aws | >= 2.70 |
Name | Version |
---|---|
archive | n/a |
aws | >= 2.70 |
external | n/a |
Name | Description | Type | Default |
---|---|---|---|
hostname | If only one hostname is needed specify hostname, otherwise use hostname_prefix. | string |
"" |
hostname_prefix | If more than one hostname is needed specify hostname_prefix, otherwise use hostname. | string |
"" |
listener_arns | List of application load balancer listeners arns to attach private hostnames to. |
list(string) |
n/a |
log_retention_in_days | Number of days to retain lambda logs. | any |
n/a |
name | Load balancer name. | any |
n/a |
region | AWS region. | any |
n/a |
source_ips | List of source ips in cidr format that are allowed to access /private-hostname/update. | list(string) |
n/a |
tags | Tags to assign to created resources. | map(string) |
n/a |
zone_id | AWS Route53 Hosted Zone Id for private hostnames. | any |
n/a |
Name | Description |
---|---|
arn | ARN of the Lambda function. |
hostnames | n/a |
No modules.
Name | Type |
---|---|
aws_cloudwatch_event_rule.ec2_alb_private_hostname | resource |
aws_cloudwatch_event_target.ec2_alb_private_hostname | resource |
aws_cloudwatch_log_group.ec2_alb_private_hostname | resource |
aws_iam_role.ec2_alb_private_hostname | resource |
aws_iam_role_policy.ec2_alb_private_hostname | resource |
aws_lambda_function.ec2_alb_private_hostname | resource |
aws_lambda_permission.ec2_alb_private_hostname-alb | resource |
aws_lambda_permission.ec2_alb_private_hostname-cloudwatch | resource |
aws_lb_listener_rule.ec2_alb_private_hostname | resource |
aws_lb_target_group.ec2_alb_private_hostname | resource |
aws_lb_target_group_attachment.ec2_alb_private_hostname | resource |
aws_route53_record.hostname | resource |
archive_file.ec2_alb_private_hostname | data source |
aws_iam_policy_document.ec2_alb_private_hostname-access | data source |
aws_iam_policy_document.ec2_alb_private_hostname-role | data source |
aws_route53_zone.svc | data source |
external_external.privateIPs | data source |