amazon-web-services - 如何为数据源指定特定地域的ACM证书?

标签 amazon-web-services ssl terraform

我在两个区域为同一域颁发了 2 个证书,ap-northeast-1 和 us-east-1,因为我的主服务器位于 ap-northeast-1,而 CloudFront 需要 us-east-1 中的证书.

我想在 us-east-1 中选择一个作为 terraform 数据源,但它们具有相同的域名。

我像这样定义了证书资源

# ACM Certificate on us-east-1 (Global)
data "aws_acm_certificate" "cert_global" {
  domain = "my.example.com"
  statuses = ["ISSUED"]
}

我是这样调用它的

resource "aws_cloudfront_distribution" "static" {
  (snip)
  viewer_certificate {
    acm_certificate_arn = "${data.aws_acm_certificate.cert_global.arn}"
    minimum_protocol_version = "TLSv1"
    ssl_support_method = "sni-only"
  }
}

原因

1 error(s) occurred:

* aws_cloudfront_distribution.static: 1 error(s) occurred:

* aws_cloudfront_distribution.static: InvalidViewerCertificate: The specified SSL certificate doesn't exist, isn't in us-east-1 region, isn't valid, or doesn't include a valid certificate chain.
    status code: 400, request id: ceece17f-6610-11e7-977d-114d7e67d7c1

我知道 terraform 在两个区域检测到两个具有相同域名的证书,但不知道如何指定一个。

文档没有说明特定资源的区域 https://www.terraform.io/docs/providers/aws/d/acm_certificate.html

如何在 us-east-1 中使用一个?

最佳答案

我自己找到了答案。 data 具有 provider 属性。

provider "aws" {
  alias = "virginia"
  region = "us-east-1"
}

data "aws_acm_certificate" "cert_global" {
  domain = "my.example.com"
  statuses = ["ISSUED"]
  provider = aws.virginia
}

在 us-east-1 中找到证书。

关于amazon-web-services - 如何为数据源指定特定地域的ACM证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45027175/

相关文章:

c# - 通过 MongoDB C# 驱动程序使用 SSL 连接到 DocumentDB

php - 'openssl/evp.h' 文件未找到 OS x Mongodb

amazon-web-services - 无法使用 terraform 在目标组中添加多个 target_id

amazon-web-services - 如何在 AWS 模板中没有给定 Image-Id 的情况下创建 EC2 实例?

java - 如何从文件加载AWS凭证?

ssl - Keycloak 独立 HTTPS 配置引发错误,提示在 keystore 中找不到 key

amazon-web-services - 在多个 AWS Organizations 账户上部署资源

amazon-web-services - Terraform Fargate 任务定义请求执行角色

amazon-web-services - 如何为 Elastic Beanstalk 部署检索正常的 stdout/stderr 日志记录

amazon-web-services - Elastic Beanstalk 上的 NightmareJS 和 Electron - 权限被拒绝