かべぎわブログ

ブログです

CloudFrontでS3に307リダイレクトされるときの原因と対処法

概要

CloudFrontでオリジンをS3にしているときに、設定は間違っていないのにCloudFrontのURLからS3のURLにリダイレクトされてしまって、Access Deiniedってなってんーーーーーーーーーー??????ってなるときの原因と対処法です。

原因

基本的に全部以下に書いてある。
Amazon S3 での HTTP 307 エラーをトラブルシューティングする

Amazon S3 バケットを作成後、そのバケット名がすべての AWS リージョンに伝達されるまで、最大で 24 時間ほどかかる場合があります。その間に、S3 バケットと同じリージョンにないリージョンのエンドポイントにリクエストすると、「307 Temporary Redirect」レスポンスが返る場合があります。

対処法

これも書いてある。
Amazon S3 での HTTP 307 エラーをトラブルシューティングする

Amazon S3 オリジンで Amazon CloudFront ディストリビューションを使用する場合、CloudFront はリクエストをデフォルトの S3 エンドポイント (s3.amazonaws.com) に転送します。このエンドポイントは、us-east-1 リージョンにあります。バケットを作成後 24 時間以内に Amazon S3 にアクセスする必要がある場合は、バケットのリージョンのエンドポイントが含まれるように、このディストリビューションのオリジンドメイン名を変更します。たとえば、バケットが us-west-2 にある場合は、オリジンドメイン名を bucketname.s3.amazonaws.com から bucketname.s3-us-west-2.amazonaws.com に変更することができます。

実際にOrigin Domain Nameをkabegiwa-test-bucket.s3-ap-northeast-1.amazonaws.comといった形にして5分くらいでちゃんとCloudFront経由でやりたいことが実現できた。

おわりに

意外とハマった。