CloudFormationでのACM証明書作成時に12時間でタイムアウトする理由を教えてください

CloudFormationでのACM証明書作成時に12時間でタイムアウトする理由を教えてください

CloudFormationでACM証明書を作成した際、DNS検証が完了する前に12時間でスタックがロールバックしてしまいました。理由を教えてください。 ACM側ではなく、CloudFormationのタイムアウトにより、12時間で失敗します。
2026.01.21

困っていた内容

CloudFormationでACM証明書を作成した際、DNS検証が完了する前に12時間でスタックがロールバックしてしまいました。理由を教えてください。

どう対応すればいいの?

CloudFormation側のタイムアウトによる仕様により、12時間でスタックが失敗しているものと考えられます。

一般的に、ACM証明書の検証待ち時間は72時間でタイムアウト(Validation timed out)されることがドキュメントからも確認できます。

https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/troubleshooting-cert-requests.html#troubleshooting-timed-out

ACM側のタイムアウトとは別のClodFormation側のタイムアウトにより、72時間を待たずして12時間でのタイムアウトがされてしまうことが確認されています。

https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/130

スタック作成時にサービスロールを指定することで、タイムアウトを12時間より長くすることが可能ですが、後述の確認の通り、36時間でのタイムアウトとなります。そのためそれより長くACM検証に時間を要する場合は手動での作成が推奨されます。

やってみた

実際にCloudFormationでACM証明書をサービスロールなし・ありで作成し、DNS検証を行わずにタイムアウトさせる検証を行います。
前提として、プロビジョニング失敗時の動作は「すべてのスタックリソースをロールバックする」しています。

検証用テンプレート

acm-cfn-timeout.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: 'ACM Certificate Timeout Test'

Parameters:
  DomainName:
    Type: String
    Description: 'Domain name for certificate'
    Default: 'acm-timeout-test-20260119.com'

Resources:
  TestCertificate:
    Type: AWS::CertificateManager::Certificate
    Properties:
      DomainName: !Ref DomainName
      ValidationMethod: DNS
      Tags:
        - Key: Purpose
          Value: timeout-test

サービスロールを使用しない場合

  1. サービスロールを指定せずにスタック作成します。DNS検証用のCNAMEレコード情報が生成されます。
Content of DNS Record is: {
  Name: _e488cd2feec1674505afb420b2d6bb59.acm-timeout-test-20260119.com.,
  Type: CNAME,
  Value: _ec6d61200a7ec4483b1ac645d94951c7.jkddzztszm.acm-validations.aws.
}

スクリーンショット 2026-01-19 17.17.44.png

  1. このCNAMEレコードをDNSに追加しないで放置します。約12時間後にCloudFormationがタイムアウトし、スタックが CREATE_FAILEDROLLBACK_COMPLETE となることが確認できます。

スクリーンショット 2026-01-20 10.40.48.png

サービスロールを使用する場合

  1. 36時間に延長したい場合は、サービスロールを作成して指定します。
サービスロール作成手順例
  1. 信頼ポリシー
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
  1. 権限ポリシー
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "acm:RequestCertificate",
        "acm:DescribeCertificate",
        "acm:DeleteCertificate",
        "acm:AddTagsToCertificate"
      ],
      "Resource": "*"
    }
  ]
}
  1. 上記サービスロールを指定してスタックをデプロイします。
    スクリーンショット 2026-01-19 18.24.57.png

  2. デプロイより約36時間後、スタックを確認するとサービスロールを指定しない場合と同様のエラーによりスタックが失敗・ロールバックしていることが確認できました。
    スクリーンショット 2026-01-21 10.56.33

参考情報

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-resource-did-not-stabilize
https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-certificatemanager-certificate.html
https://docs.aws.amazon.com/acm/latest/userguide/dns-validation.html
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html

この記事をシェアする

FacebookHatena blogX

関連記事