はじめに
CloudFormation を使って CloudFront ディストリビューションを作成する際に、以下のようなエラーに遭遇しました:
リソース CloudFrontDistribution は CREATE_FAILED 状態です
Resource handler returned message: "Invalid request provided: AWS::CloudFront::Distribution: The parameter CNAME contains one or more parameters that are too small."
このエラーの原因と解決方法について、個人の備忘録として記録します。
書こうと思ったきっかけ
CloudFormation テンプレートを使用して独自ドメイン付きの CloudFront ディストリビューションを構成していたところ、スタック作成時にエラーが発生しました。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
調査の結果、DomainName
パラメータが空のまま Aliases
に渡されていたことが原因で、CloudFront が "CNAME too small" と判断していたことがわかりました。
エラーの内容
The parameter CNAME contains one or more parameters that are too small.
このエラーは、CloudFront の Aliases
(CNAME)に指定された値が 空・無効・短すぎる 場合に発生します。
解決策
CloudFormation テンプレート内で Parameters
セクションにデフォルト値を設定することで、CNAME エラーを回避できます。
Parameters:
DomainName:
Type: String
Default: "xxx.blog"
Description: "独自ドメイン名(例: xxx.blog)"
HostedZoneId:
Type: String
Default: "ZXXXXXXXXXXXXXX"
Description: "Route53のホストゾーンID"
まとめ
-
DomainName
に空文字や不正な値が入ると CloudFront の CNAME エラーが発生します -
Default
を設定することで、値の未指定によるエラーを防止できます
今後同様のテンプレートを作成する際にも、このようにデフォルト値を定義しておくと安心です!