S3+CloudFrontで403forbiddenでアクセスできない場合

概要

初期の構築で、 S3 に静的コンテンツを配置して、表に CloudFront を構築した際、403 forbidden でアクセスできない場合がある。
また、curlで叩いた際にSSLのエラーが表示される。

curl -I https://test.inamuu.com
curl: (35) error:14004410:SSL routines:CONNECT_CR_SRVR_HELLO:sslv3 alert handshake failure

この場合、 CloudFront の Origin は対象の S3バケット を指定しているが、 CNAMEs が空になっていることが原因。
アクセスするドメイン名を設定しないと駄目。
例えば test.inamuu.com だったら CNAMEsに test.inamuu.com を指定する必要がある。

Terraformでは下記のように記述する。

resource "aws_cloudfront_distribution" "test_inamuu_s3_distribution" {
...
  aliases = ["test.inamuu.com", "test2.inamuu.com"]
}

S3の指定だけで良いと思っていて、ちょいハマってしまったので記録しておく。