首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform将负载平衡器侦听器附加到弹性Bean秸秆负载平衡器。非有效负载均衡器ARN

问Terraform将负载平衡器侦听器附加到弹性Bean秸秆负载平衡器。非有效负载均衡器ARN
EN

Stack Overflow用户
提问于 2022-03-04 19:45:02
回答 1查看 601关注 0票数 1

我正在试图附加一个SSL证书到弹性豆柄负载平衡器,这是通过地形创建的,并附加在旋转。正在拆分的EBS环境将是一个web,这就是为什么我需要将https ssl证书附加到环境中,因为我想在命令中将它向上/向下旋转,而不必每次都手动将它附加到服务上。

我所做的是下面的代码,但是我一直收到错误:

代码语言:javascript
复制
Error: error creating ELBv2 Listener (arn:aws:elasticloadbalancing:us-east-1:profile:loadbalancer/name: ValidationError: 'arn:aws:elasticloadbalancing:us-east-1:profile:loadbalancer/name' is not a valid load balancer ARN
status code: 400, request id: xxxxxxxxxxxxxxxxxxx

我最初尝试过:load_balancer_arn = "${aws_elastic_beanstalk_environment.ebs-env.load_balancers[0].arn}",但aws_elastic_beanstalk_environment.ebs-env.load_balancers[0]返回名称,所以我不能只执行.arn,这导致我为ARN编写一个自定义字符串,并将名称从EBS环境中指定,加载平衡器并将其附加到arn中。

EBS创建了一个经典的负载均衡器,我在AWSs网站上找到的ARN如下所示,以及我格式化所有我检查过的所有内容的方式,但我仍然得到了一个错误,即它不是一个有效的ARN。

我已经检查了EBS名称是AWS控制台中负载均衡器的实际名称,并且在旋转时使用了terraform创建的名称。因此,它是负载均衡器的有效名称,但即使手动验证了名称是否正确,我仍然会看到上面一直描述的错误。AWS文档引导我使用:arn:partition:service:region:account-id:resource-id作为arn自定义名称,并发现:arn:aws:elasticloadbalancing:region:account-id:loadbalancer/name是负载均衡器的正确ARN,而这正是我所使用的。

下面是我的terraform代码,我使用它来提升/降低这个基础结构:

代码语言:javascript
复制
provider "aws" {
  region = "us-east-1"
}
resource "aws_elastic_beanstalk_application" "ebaTest" {
  name        = "EBA-test"
  description = "Development test EBS system"
}

resource  "aws_elastic_beanstalk_environment" "ebs-env" {
  name = "ebs-env"
  application = aws_elastic_beanstalk_application.ebaTest.name
  solution_stack_name = "64bit Amazon Linux 2 v2.2.10 running .NET Core" 
  cname_prefix = "ebsp-env"
  setting {
    namespace = "aws:autoscaling:launchconfiguration"
    name = "IamInstanceProfile"
    value = "aws-elasticbeanstalk-ec2-role"
  }
  setting {
    namespace = "aws:autoscaling:launchconfiguration"
    name = "InstanceType"
    value = "t3a.micro"
  }
}
resource "aws_lb_listener" "cert-listener" {
  load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-1:aws-id:loadbalancer/${aws_elastic_beanstalk_environment.ebs-env.load_balancers[0]}"
  port = "443"
  protocol = "HTTPS"
  certificate_arn = "arn:aws:acm:us-east-1:aws-id:certificate/cert-id"
  default_action {
    type = "fixed-response"
  }
}

如果你对某事有任何其他澄清性的问题/困惑,我会尽快回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-04 19:57:15

aws_lb_listener是AWS ELBv2的一部分,它只适用于应用程序负载平衡器和网络负载平衡器。你说你正在创建一个经典的负载均衡器。如果Terraform本身没有管理负载均衡器,我认为您无法通过Terraform更新CLB的证书。

您使用CLB而不是更新的ALB有什么原因吗?无论哪种方式,正确的方法都是通过将SSL证书的ARN直接传递给弹性Bean秸秆资源,作为设置:

代码语言:javascript
复制
  setting {
    namespace = "aws:elb:listener:443"
    name = "SSLCertificateId"
    value = "arn:aws:acm:us-east-1:aws-id:certificate/cert-id"
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71356513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档