1. 背景
証明書の有効期限が切れるので、新しい証明書を購入してALBに適用を試みたところ、以下のエラーメッセージが出力されました。
Error: multiple ACM Certificates matching domain (sample.com)
│
│ with module.alb.data.aws_acm_certificate.acm,
│ on ../../modules/alb/main.tf line 73, in data "aws_acm_certificate" "acm":
│ 73: data "aws_acm_certificate" "acm" {
fallback
ACM 証明書を1件に特定できず、複数ヒットしたため選択できないというエラーです。
Terraformは1件だけ返ることを前提にしているため、2件以上ヒットすると処理を中断するのです。
2. 原因
同一ドメインにマッチする証明書が2つ存在していました。
- 残り4日ぐらいで有効期限が切れる証明書
- 新規購入した証明書
3. 対応
以下のように適用する証明書をユニークにするように変更しました。これでALBに適用することができました。
data "aws_acm_certificate" "acm" {
domain = var.domain_name
statuses = ["ISSUED"] # 失効・検証中を除外
key_types = ["RSA_2048"] # EC 証明書が混在するなら指定
most_recent = true # ← 最新 1 枚に絞り込む
}
terraform