amazon-web-services - 用于 eu-west-1 中资源的 us-east-1 中的 Terraform AWS ACM 证书

标签 amazon-web-services terraform amazon-acm

我有一个 terraform 模块,主要在 eu-west-1 中提供资源。我需要一个 ACM 证书才能附加到 Cloudfront 发行版。证书必须在 us-east-1 中提供。

因此,我配置了两个提供程序:

provider "aws" {
  version = "~> 1.0"
  region = "eu-west-1"
}

provider "aws" {
  version = "~> 1.0"
  region = "us-east-1"
  alias = "us-east-1"
}

在我的模块中,我像这样提供证书:
resource "aws_acm_certificate" "cert" {
  provider = "aws.us-east-1"
  domain_name = "${var.domain_name}"
  validation_method = "DNS"
  tags = "${var.tags}"

  lifecycle {
    create_before_destroy = true
  }
}

问题 #1 :我尝试使用以下方法导入我现有的 ACM 证书:
terraform import module.mymod.aws_acm_certificate.cert arn:aws:acm:us-east-1:xyz:certificate/uuid

这失败了:“找不到带有 id 的证书”。 terraform 是否在错误的区域中寻找?我通过 aws CLI 确认证书确实存在(例如 ARN 中没有拼写错误)。

好的,所以我想我可以创建新证书。这确实有效,我现在有两个证书,但是我遇到了问题 #2:
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
}

这会尝试为 ACM 设置 DNS 验证。托管区域存在于 eu-west-1 中,所以我预计这里会出现问题。但是,这仍然因“找不到证书......”而失败,我假设 terraform 对区域感到困惑。我尝试添加 provider = "aws.us-east-1"这个资源也是如此,但它仍然以同样的方式失败。

因此,无论我做什么,Terraform 都无法找到我的证书,即使它自己创建了它。难道我做错了什么?

最佳答案

原来我的问题是 aws_acm_certificate_validation .通过在与证书相同的区域中指定提供程序,这一切都得到了解决。

resource "aws_acm_certificate_validation" "cert" {
  provider = "aws.us-east-1" # <== Add this
  certificate_arn = "${aws_acm_certificate.cert.arn}"
  validation_record_fqdns = ["${aws_route53_record.cert_validation.fqdn}"]
}

关于amazon-web-services - 用于 eu-west-1 中资源的 us-east-1 中的 Terraform AWS ACM 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51988417/

相关文章:

amazon-web-services - AWS RDS 数据库日志设置日志组的保留期限

node.js - 使用 nginx 和 aws 启用 cors 的正确配置是什么?

networking - Cloudera Hadoop 在 EC2 上使用 Vagrant - 如何设置主机、IP 和网络?

amazon-web-services - BigQuery Transfer Service 不会从 S3 复制行

Terraform:使用模块和 for_each 获取输出

Terraform 从 Packer 中制作的托管磁盘镜像创建 VM

json - Terraform 中的参数化 YAML 模板

amazon-web-services - 如何从 Amazon Certificate Manager 下载公共(public)证书