我正在试图附加一个SSL证书到弹性豆柄负载平衡器,这是通过地形创建的,并附加在旋转。正在拆分的EBS环境将是一个web,这就是为什么我需要将https ssl证书附加到环境中,因为我想在命令中将它向上/向下旋转,而不必每次都手动将它附加到服务上。
我所做的是下面的代码,但是我一直收到错误:
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代码,我使用它来提升/降低这个基础结构:
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"
}
}如果你对某事有任何其他澄清性的问题/困惑,我会尽快回答。
发布于 2022-03-04 19:57:15
aws_lb_listener是AWS ELBv2的一部分,它只适用于应用程序负载平衡器和网络负载平衡器。你说你正在创建一个经典的负载均衡器。如果Terraform本身没有管理负载均衡器,我认为您无法通过Terraform更新CLB的证书。
您使用CLB而不是更新的ALB有什么原因吗?无论哪种方式,正确的方法都是通过将SSL证书的ARN直接传递给弹性Bean秸秆资源,作为设置:
setting {
namespace = "aws:elb:listener:443"
name = "SSLCertificateId"
value = "arn:aws:acm:us-east-1:aws-id:certificate/cert-id"
}https://stackoverflow.com/questions/71356513
复制相似问题