0

terraform を使用して ap-southeast-1 に AWS インフラストラクチャをセットアップしていますが、aws_alb_listener リソースを使用して、us-east1 で作成した ACM 証明書をロード バランサーにリンクしたいと考えています。


resource "aws_alb_listener" "https" {
  load_balancer_arn = aws_lb.main.id
  port              = 443
  protocol          = "HTTPS"
  ssl_policy        = "ELBSecurityPolicy-2016-08"
  certificate_arn   = var.acm_certificate_arn
  depends_on        = [aws_alb_target_group.main]

  default_action {
    target_group_arn = aws_alb_target_group.main.arn
    type             = "forward"
  }
}

terraform apply を実行すると、エラーが発生します。

terraform を使用して、別のリージョンから ACM 証明書を alb にアタッチすることは可能ですか?

私のユースケースは、この証明書が AWS CloudFront で CDN としても使用されることです。

4

2 に答える 2

2

テラフォームを使用して、別のリージョンから ACM 証明書を alb に添付することは可能ですか?

悲しいことに、それは不可能です。ACM 証明書は、作成したリージョンでのみ使用でき、CloudFront などのグローバル リソースはカウントされません。

ALB の場合、ALB のリージョンに新しい ACM を作成し、それを同じドメインに登録する必要があります。AWS ブログから:

ACM 証明書は、ロード バランサーと同じ AWS リージョンでリクエストまたはインポートする必要があります。Amazon CloudFront ディストリビューションは、米国東部 (バージニア北部) リージョンで証明書をリクエストする必要があります。

于 2021-02-15T10:08:58.687 に答える
0

同じドメイン名で別のリージョンに別の証明書を作成できます。

たとえば、デフォルトと呼ばれる aws_acm_certificate があるとします。

# Your default certificate in ap-southeast-1
resource "aws_acm_certificate" "default" {
  domain_name       = aws_route53_record.default.fqdn
  validation_method = "DNS"

  lifecycle {
    create_before_destroy = true
  }

  tags = {
    Environment = var.environment
  }
}

「デフォルト」の証明書はデフォルトのプロバイダーを使用しているため、エイリアスを使用して別の aws プロバイダーを作成しましょう

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

これで、この証明を使用して別の地域で「同じ」証明書を作成できます

resource "aws_acm_certificate" "us" {
  domain_name       = aws_route53_record.default.fqdn
  validation_method = "DNS"

  lifecycle {
    create_before_destroy = true
  }

  provider = aws.us_east

  tags = {
    Environment = var.environment
  }
}

リスナーは、us-east-1 でこの新しい証明書を使用できるようになりました

resource "aws_alb_listener" "https" {
  load_balancer_arn = aws_lb.main.id
  port              = 443
  protocol          = "HTTPS"
  ssl_policy        = "ELBSecurityPolicy-2016-08"
  certificate_arn   = aws_acm_certificate.us.arn
  depends_on        = [aws_alb_target_group.main]

  default_action {
    target_group_arn = aws_alb_target_group.main.arn
    type             = "forward"
  }
}
于 2021-05-11T13:02:25.693 に答える