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