Amazon web services 创建LB侦听器时出现CertificateNotfound错误

Amazon web services 创建LB侦听器时出现CertificateNotfound错误,amazon-web-services,amazon-ec2,terraform,Amazon Web Services,Amazon Ec2,Terraform,向LB侦听器添加证书时遇到问题。下面是用于执行此操作的代码(请注意,这是一段代码): global/main.tf stage/main.tf 我已确保这两种资源都在aws东部地区。我得到一个错误: 创建LB侦听器时出错:CertificateNotFound:找不到证书“arn:aws:acm:us-east-1:078395932517:Certificate/b83ba534-ef9d-4a07-ae13-832695dc8b5a” 因此,数据源正在正确检索证书,但侦听器似乎无法找到它。要

向LB侦听器添加证书时遇到问题。下面是用于执行此操作的代码(请注意,这是一段代码):

global/main.tf stage/main.tf 我已确保这两种资源都在aws东部地区。我得到一个错误:

创建LB侦听器时出错:CertificateNotFound:找不到证书“arn:aws:acm:us-east-1:078395932517:Certificate/b83ba534-ef9d-4a07-ae13-832695dc8b5a”


因此,数据源正在正确检索证书,但侦听器似乎无法找到它。

要将ACM证书附加到负载平衡器或其他AWS资源(如Cloudfront),必须先对其进行验证

如果没有与您的模式匹配的已验证证书,只需将数据源更改为仅查找已颁发的证书,就应该在数据源中引发错误:

data "aws_acm_certificate" "demo_cert" {
  domain   = "*.mydomain.com"
  statuses = ["ISSUED"]
}
要验证证书,您可以在请求时手动处理带外证书,使用其他工具自动验证证书,或者在创建ACM证书请求时使用Terraform:

resource "aws_acm_certificate" "cert" {
  domain_name = "example.com"
  validation_method = "DNS"
}

data "aws_route53_zone" "zone" {
  name = "example.com."
  private_zone = false
}

resource "aws_route53_record" "cert_validation" {
  name = "${aws_acm_certificate.cert.domain_validation_options.0.resource_record_name}"
  type = "${aws_acm_certificate.cert.domain_validation_options.0.resource_record_type}"
  zone_id = "${data.aws_route53_zone.zone.id}"
  records = ["${aws_acm_certificate.cert.domain_validation_options.0.resource_record_value}"]
  ttl = 60
}

resource "aws_acm_certificate_validation" "cert" {
  certificate_arn = "${aws_acm_certificate.cert.arn}"
  validation_record_fqdns = ["${aws_route53_record.cert_validation.fqdn}"]
}

因为我刚刚遇到了一个问题:证书和资源必须在同一个区域。(@ydaetskcoR已经提到了这一点)。

为什么要使用数据源和资源来实际创建它?我也很困惑,如果您在这里使用我们east 1,为什么您在aws\U acm\U证书上有
provider=“aws.east”
行?对不起,我应该澄清一下,这是我的代码片段,这是相关信息。我在一个文件中定义了资源,因此可以对其进行维护。然后在另一个目录中访问创建的证书,证书是否已验证?您不能将未颁发的证书附加到负载平衡器。您可能应该从数据源中删除
PENDING\u VALIDATION
状态。@ydaetskcoR问题是在尝试时未颁发证书,希望这对其他人有所帮助。原因是证书仍处于挂起状态,因此无法使用。希望这有帮助someone@SamMallabone验证您的证书需要多长时间?我已经等了一整天了now@sokras这似乎值得一个单独的问题。如果您可以显示用于验证ACM请求的过程,该过程将非常有用。@ydaetskcoR我正在使用DNS验证,我已将所需记录添加到我们的DNS db中,从昨天起我一直在等待验证完成。我们拥有根域,我在根域下创建了我需要的域,例如newdomain.rootdomain。com@ydaetskcoR这是我这边的一个错误,我忘了为需要添加到dns数据库的记录设置
domain\u id
字段。我使用的是pdns 4.1.x
data "aws_acm_certificate" "demo_cert" {
  domain   = "*.mydomain.com"
  statuses = ["ISSUED"]
}
resource "aws_acm_certificate" "cert" {
  domain_name = "example.com"
  validation_method = "DNS"
}

data "aws_route53_zone" "zone" {
  name = "example.com."
  private_zone = false
}

resource "aws_route53_record" "cert_validation" {
  name = "${aws_acm_certificate.cert.domain_validation_options.0.resource_record_name}"
  type = "${aws_acm_certificate.cert.domain_validation_options.0.resource_record_type}"
  zone_id = "${data.aws_route53_zone.zone.id}"
  records = ["${aws_acm_certificate.cert.domain_validation_options.0.resource_record_value}"]
  ttl = 60
}

resource "aws_acm_certificate_validation" "cert" {
  certificate_arn = "${aws_acm_certificate.cert.arn}"
  validation_record_fqdns = ["${aws_route53_record.cert_validation.fqdn}"]
}