如何修复使用Terraform创建ALb时未找到证书的问题?

如何修复使用Terraform创建ALb时未找到证书的问题?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我正在尝试通过terraform创建aws应用程序负载平衡器。我正在通过TLS提供程序创建密钥、ssk证书。但是,当terraform创建应用程序负载平衡器时,它无法检测到证书。但可以看到证书存在于acm中 Error: error creating ELBv2 Listener (arn:aws:elasticloadbalancing:ap-south-1:xxxxxxxx:loadbalancer/app/tf-lb-************6b77): CertificateNotFou

我正在尝试通过terraform创建aws应用程序负载平衡器。我正在通过TLS提供程序创建密钥、ssk证书。但是,当terraform创建应用程序负载平衡器时,它无法检测到证书。但可以看到证书存在于acm中

Error: error creating ELBv2 Listener (arn:aws:elasticloadbalancing:ap-south-1:xxxxxxxx:loadbalancer/app/tf-lb-************6b77): CertificateNotFound: 
Certificate 'arn:aws:acm:ap-south-1:xxxxxxx4551:certificate/xxxxxxxx-401d-a077-xxxx1661' not found
│       status code: 400, request id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
│ 
│   with aws_lb_listener.ecom-alb-listener["xxxxx-443-HTTPS"],
│   on main.tf line 527, in resource "aws_lb_listener" "ecom-alb-listener":
│  527: resource "aws_lb_listener" "ecom-alb-listener" {
但是它存在于aws证书管理器中

代码:

为了测试pupose,我手动创建了一个loadbalancer并尝试附加证书。但是没有得到有效的证书

是0天到期导致的吗?

即使手动导入了如下所示的证书,并在aws_alb_listener中对证书arn进行了硬编码。但仍然找不到获取的证书。这与aws权限问题有关吗?但也使用了同样的导入terraform证书的凭据

您的证书表明您的证书未经验证。。。如果不解决此问题,则无法继续执行此步骤

只有经过验证的证书才能作为ACM证书附加到负载平衡器或其他AWS资源(如Cloudfront)

  • 要证明这一点,请尝试更改数据源以仅查找已颁发的
    证书
您会注意到,如果没有与您的模式匹配的已验证证书,则会注意到错误现在会在数据源中进一步向下移动:

data "aws_acm_certificate" "test_cert" {
  domain   = "*.somedomain.com"
  statuses = ["ISSUED"]  
}

更新以下评论:

是的,上次我使用它时,我
必须验证我的证书,然后才能使用它,正如他们的AWS开发指南所示


能否显示产生错误的代码?此外,ACM是特定于地区的,因此您的ALB可能位于不同的地区?@Marcin添加了代码。此外,ALB也位于ap-south-1的同一地区。如果您尝试使用控制台手动添加证书,一切正常吗?所以问题只在于TF?@Marcin是的,我无法手动添加该证书,也可能格式错误。ACM比ALB支持更多版本和类型的证书。您是否尝试过使用ACM生成的证书,而不是使用导入的证书?如果我使用TLS提供程序创建证书,我们仍然需要验证?据我所知,它与导入证书类似,因此验证方法对我们不适用。我的上一个问题我没有使用TLS创建certs@jp在我的环境中。对请参阅我随附的图片,如果这有帮助,请将投票/标记为答案。如果是这种情况,您将为验证提供什么\u记录\u fqdns=[aws\u route53\u记录.ecom路由[each.value].fqdn]在aws_acm_certificate_validation resource中。我们是否需要创建route53记录?如果需要,为什么我们需要该记录进行验证?导入证书的默认方法是:method=none?
Error: error creating ELBv2 Listener (arn:aws:elasticloadbalancing:ap-south-1:1xxxxxxxxxx1:loadbalancer/app/tf-lb-20210515140007xxxxxxxxx/xxxxxxxxx71): CertificateNotFound: Certificate 'arn:aws:acm:ap-south-1:1147xxxxxxxx:certificate/e9xxxxxxxxxxxxxxxxxxxxxxxx11' not found
│       status code: 400, request id: 61xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8b
│ 
│   with aws_lb_listener.ecom-alb-listener["valid-443-HTTPS"],
│   on main.tf line 530, in resource "aws_lb_listener" "ecom-alb-listener":
│  530: resource "aws_lb_listener" "ecom-alb-listener" {
data "aws_acm_certificate" "test_cert" {
  domain   = "*.somedomain.com"
  statuses = ["ISSUED"]  
}