CloudFormationでのACM証明書作成時に12時間でタイムアウトする理由を教えてください
困っていた内容
CloudFormationでACM証明書を作成した際、DNS検証が完了する前に12時間でスタックがロールバックしてしまいました。理由を教えてください。
どう対応すればいいの?
CloudFormation側のタイムアウトによる仕様により、12時間でスタックが失敗しているものと考えられます。
一般的に、ACM証明書の検証待ち時間は72時間でタイムアウト(Validation timed out)されることがドキュメントからも確認できます。
ACM側のタイムアウトとは別のClodFormation側のタイムアウトにより、72時間を待たずして12時間でのタイムアウトがされてしまうことが確認されています。
スタック作成時にサービスロールを指定することで、タイムアウトを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
サービスロールを使用しない場合
- サービスロールを指定せずにスタック作成します。DNS検証用のCNAMEレコード情報が生成されます。
Content of DNS Record is: {
Name: _e488cd2feec1674505afb420b2d6bb59.acm-timeout-test-20260119.com.,
Type: CNAME,
Value: _ec6d61200a7ec4483b1ac645d94951c7.jkddzztszm.acm-validations.aws.
}

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

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

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

参考情報







