-
概要 初期の構築で、 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の指定だけで良いと思っていて、ちょいハマってしまったので記録しておく。 Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス <p style='padding: 5px;'>Created
Wed, 14 Nov 2018 14:04:34 +0000 -
概要 SPAのインフラにS3やCloudFrontを使用していると、ページを遷移したあとに、「NoSuchKey」となることがある。 S3で公開している場合、S3+CloudFrontで公開している場合で、それぞれ設定があるのでメモ。 S3の場合 S3の場合は、静的ホスティングの設定をしたら、最初に読み込むファイルとエラーファイルを指定できる。 そこで、いずれもindex.htmlにしてあげることでエラーを回避できるようになる。 下記はTerraformでの定義の仕方。 website { index_document = "index.html" error_document = "index.html" } 上記はエラーに遭遇して調べたところ、下記記事を見つけて参考にしたもの。 Single-Page Apps on AWS, Part 1: Hosting a Website on S3 S3のみの環境であれば上記S3の設定のみでOK. CloudFrontの場合 CloudFrontでもS3と同じような設定できることを最近知った。 下記はTerraformの定義だが、404でもindex.htmlを返すという設定。 custom_error_response { error_code = "404" response_code = "200" response_page_path = "/index.html" error_caching_min_ttl = "300" } 上記はS3の前段にCloudFrontをおいたら、またエラーが出るようになってしまい、調べたところ下記記事を参考に設定したもの。 SPAを S3+CloudFront で表示する方法 SPAは今までのサーバークライアント環境の知識だけだと全く成立しないことが多いので、知っておかないと中々衝撃をうけることが多いが、マネージドサービス側でそれらに対応できるようになっていたりするのでほんと便利。 Amazon Web Services 定番業務システム14パターン 設計ガイド <p style='padding: 5px;'>terraform Created
Thu, 08 Nov 2018 16:07:52 +0000