Terraform for aws_alb_listener 如何在类型 ="forward"的默认操作中添加多个 target_group_arn

标签 terraform terraform-provider-aws infrastructure-as-code

我的方法:我必须创建一个“aws_lb_listener”资源,在默认操作中我有 type = "forward"但我没有 target_group_arn 。我有多个 target_group_arn 值。

下面的代码片段显示了前端监听器,但 target_group_arn 应包含多个 arn 值。

resource "aws_alb_listener" "frontend-listener" {
    load_balancer_arn = aws_alb.ss_alb.arn
    port = "443" #"80" 
    protocol = "HTTPS"
    depends_on        = [aws_alb_target_group.aws_alb_target_group]
    
    default_action {
    #target_group_arn = aws_alb_target_group.aws_alb_target_group.arn
    type = "forward"
    
    }
}  

aws_alb_target_group 资源显示正在创建多个目标组。

resource "aws_alb_target_group" "aws_alb_target_group" {
    for_each = local.ebapp_name

    name = "${each.value.name}-tg"
    port = 80
    protocol = "HTTP"
    vpc_id = var.vpc_id
}

我查看了 terraform 文档,但找不到解决方案。 (https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener)

resource "aws_alb_listener_rule" "aws_alb_listener_rule"{
    for_each = local.ebapp_name

    listener_arn = aws_alb_listener.frontend-listener.arn
    action {    
          type = "forward"    
          target_group_arn = aws_alb_target_group.aws_alb_target_group[each.value.name].arn
    }   
    condition {    
         
         path_pattern {
            values = ["/${each.value.name}/*"]
        }
    }
} 

我还提到了监听器规则。

使用 terraform apply 命令显示错误,如下所示:

对于“forward”类型的操作,您必须指定“forward” block 或“target_group_arn”

需要进行哪些更改才能解决此错误?

最佳答案

我认为你可以使用 dynamic blocks 来实现这一点。例如:

resource "aws_alb_listener" "frontend-listener" {
    load_balancer_arn = aws_alb.ss_alb.arn
    port = "443" #"80" 
    protocol = "HTTPS"
    depends_on        = [aws_alb_target_group.aws_alb_target_group]
    
    default_action {        
        type = "forward"
        forward {
            dynamic "target_group" {
                for_each = aws_alb_target_group.aws_alb_target_group
                content {
                    arn = target_group.value["arn"]
                }
            }
        }
    }
}

以上仅是示例,可能仍需要进行一些调整才能使其按预期工作。

关于Terraform for aws_alb_listener 如何在类型 ="forward"的默认操作中添加多个 target_group_arn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63918512/

相关文章:

amazon-web-services - CloudFormation 资源创建(如果不存在)

amazon-web-services - 如何调试由 CircleCI 编排的 Serverless 生成的 CloudFormation 模板

amazon-web-services - 如何获取 AWS Autoscaling 启动实例的 pem 文件

terraform-provider-aws - aws_s3_bucket_public_access_block 在应用 terraform 时无法创建

amazon-web-services - 是否可以使用 terraform 创建 SSO 用户 - AWS

amazon-web-services - Terraform 在配置 S3 后端时出错

azure - 当强制 NSG 与子网关联时,如何使应用服务虚拟网络快速连接

执行计划时 Terraform 输出 'Error: Variables not allowed'

amazon-web-services - 如何将 aws_elastic_beanstalk_environment 设置传递给 Terraform 模块

azure - 使用 Terraform 为虚拟 secret 码创建 Key Vault secret