Closed10
TerraformでALB+ACMのHTTPS環境を作る
まずは手動で試してみる
前提
- freenomで取得したドメインをRoute53へ移管済み
ACMで証明書を用意する
今回は東京リージョンでALBを用意するため、ACMの用意も東京リージョンで実施します。
(バージニアリージョンを使用するのはcloudfrontの場合)
参考手順
手順
- 証明書リクエストまで
- ACMコンソールへ
- パブリック証明書をリクエスト
- FQDN(ドメイン名)を入力、今回はサブドメインは入れない
- DNS検証を選択(ホストゾーン設定済みのため)
- 署名アルゴリズムを選択
- DNS検証
-
Pending validation
ステータスの証明書にて「Create record in Route 53」を選択する
-
- 〜30分待ってステータスが
Issued
となればOK
ALBはこいつについてるものを使います、便利だね
ACMとALBの紐づけ
こちらを参考にします
手順
- HTTPSリスナー追加
- プロトコル:HTTPS,ポート:443
- SSL証明書でACMで作成した証明書を選択
- セキュリティグループ開放
- 443を開けていなければ
Aレコード追加
ALBにドメインで通信するためにAレコードを追加します
動作確認
このようにHTTPSでアクセスできればOK
証明書確認
このようにAmazonの署名があります
有効期間は1年
terraform化
ではterraform化を試していきます。ACMはterraformで管理せず、dataリソースとして取り扱います
ACM
data "aws_acm_certificate" "acm" {
domain = "example.com"
}
手動作成したACMを外部参照します
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の代わりに新規リスナーを追加する
ほぼドキュメントに記載のまま
セキュリティグループ
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にクローズされました