我正在嘗試將 SSL 證書附加到通過 terraform 創建并在啟動時附加的 Elastic Beanstalk 負載均衡器。正在啟動的 EBS 環境將是一個 web api,這就是為什么我需要將 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"
}
}
如果您有任何其他澄清問題/對某事感到困惑,我會盡快回復。
uj5u.com熱心網友回復:
aws_lb_listener是 AWS ELBv2 的一部分,僅適用于應用程式負載均衡器和網路負載均衡器。您說您正在創建一個經典的負載均衡器。如果 Terraform 本身不管理負載均衡器,我認為您無法通過 Terraform 更新 CLB 的證書。
您是否有任何理由使用 CLB 而不是較新的 ALB?無論哪種方式,執行此操作的正確方法是將 SSL 證書的 ARN 作為設定直接傳遞給 Elastic Beanstalk 資源:
setting {
namespace = "aws:elb:listener:443"
name = "SSLCertificateId"
value = "arn:aws:acm:us-east-1:aws-id:certificate/cert-id"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437961.html
標籤:亚马逊网络服务 地形 亚马逊弹性豆茎 aws-负载均衡器 亚马逊-ebs
上一篇:AWSDMS遷移-這種情況是否可行?(從非加密的MYSQL/POSTGRES遷移到加密的MYSQL/POSTGRES)?
下一篇:不能在session.NewSession的引數中使用&cfg(*aws.Config型別的值)作為*aws.Config值
