Closed10

TerraformでALB+ACMのHTTPS環境を作る

not75743not75743

まずは手動で試してみる

前提

  • freenomで取得したドメインをRoute53へ移管済み
not75743not75743

手順

  • 証明書リクエストまで
    • ACMコンソールへ
    • パブリック証明書をリクエスト
    • FQDN(ドメイン名)を入力、今回はサブドメインは入れない
    • DNS検証を選択(ホストゾーン設定済みのため)
    • 署名アルゴリズムを選択
  • DNS検証
    • Pending validationステータスの証明書にて「Create record in Route 53」を選択する

  • 〜30分待ってステータスがIssuedとなればOK
not75743not75743

Aレコード追加

ALBにドメインで通信するためにAレコードを追加します

not75743not75743

証明書確認

このようにAmazonの署名があります
有効期間は1年

not75743not75743

terraform化

ではterraform化を試していきます。ACMはterraformで管理せず、dataリソースとして取り扱います

ACM

data "aws_acm_certificate" "acm" {
  domain   = "example.com"
}

手動作成したACMを外部参照します
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/acm_certificate

httpsリスナー

# httpsリスナー
resource "aws_lb_listener" "https_listener" {
  load_balancer_arn = aws_lb.test_lb.arn
  port              = 443
  protocol          = "HTTPS"
  ssl_policy = "ELBSecurityPolicy-TLS13-1-2-2021-06"
  certificate_arn   = data.aws_acm_certificate.acm.arn
  default_action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.test_target_group.arn
  }
}

httpsリクエストを受け付けるよう、httpの代わりに新規リスナーを追加する
ほぼドキュメントに記載のまま
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener#ssl_policy

セキュリティグループ

  ingress {
-    from_port   = 80
-    to_port     = 80
+    from_port   = 443
+    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

言いたいことはセキュリティグループで443を開けるの忘れないでね、です

このスクラップは2023/06/05にクローズされました