😆
CloudFrontのエイリアスに`_`(アンダースコア)を含むCNAMEをいれてはいけない
Terraformを使ってCloudFrontを作成しようとしたところ、次のエラーメッセージが出力され、CloudFrontディストリビューションの作成に失敗しました。
* aws_cloudfront_distribution.main: error creating CloudFront Distribution: InvalidArgument: The parameter CNAME contains one or more parameters that are not valid.
status code: 400, request id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX
Domain names must contain one or more dots (.) and can only include lower case alphanumeric characters, dashes (-), and, optionally, a leading "*." to indicate all subdomains of the specified domain, for example, "*.example.com".
CNAMEとして_は登録できるが、CloudFront的には入れられないので、terraform apply
する時にエラーで落ちてしまいます。
解決策としてはシンプルで_
はCloudFrontの仕様上使えないので-
を使うようにしましょう。
TerraformとAWSの世界で、ここではケバブケースを使って、ここではスネークケースを使う、というのをある程度決めておかないと混乱しまう。。
Discussion