これが以前に尋ねられた場合、私に許してください、これに触れる多くのリソースがありますが、何も私の特定の(https)ユースケースに適合しないようです。
https://www.example.com を https://example.com にリダイレクトしようとしています。同様に、これは http://www.example.com から https://example.com に対して機能するはずです。
S3バケットのオリジンを使用してcloudfrontディストリビューションを設定し、httpをhttpsにリダイレクトし、cname example.comを追加し、ドメイン証明書を追加しました(これはwwwサブドメインとネイキッドドメインで機能します)。
また、www.example.comのcnameを使用して別のディストリビューションを設定し、証明書を追加し、(静的Webサイトホスティング)ですべてのリクエストを https://にリダイレクトする別のs3バケットにOriginを設定しましたexample.com 。
http://example.com から https://example.com の場合、リダイレクトは期待どおりに機能しますが、http(s)://www.example.comから- https://example.com はしません。
ルート53には、ルートドメインが最初のCloudfrontディストリビューションにエイリアスされ、wwwが2番目にエイリアスされています。
この答えのおかげで解決策を見つけました: Amazon S3 Redirect and Cloudfront
要するに:
オリジンが単なるバケットIDである場合、CloudfrontはS3で設定されたリダイレクトルールを尊重しません。代わりに、提供されたs3静的Webサイトのホスト名にOriginを設定する必要がありました。
次のようにAWSでウェブサイトをホストするには:
https://www.example.com、http://www.example.com、およびhttp://example.comall redirectshttps://example.com
必要がある:
example.comおよびwww.example.comという名前の2つのS3バケットを作成します。
これらの2つのバケットでStatic Website Hostingをオンにします。
バケットwww.example.comのリダイレクトをhttps://example.comに設定します。バケットのプロパティでStatic Website Hosting=>すべてのリクエストを別のホスト名にリダイレクトします。 ターゲットバケットまたはドメインフィールドに、example.comを入力し、Protocolフィールド、入力https
これらのバケットに対して、twoCloudFrontディストリビューションを作成します。この分布はそれぞれ、対応するバケットを指します。
Origin Domain Nameの場合、Static Website Hostingセクションで提供されるバケットURLを提供します。 URLの形式(または類似)は次のとおりです。example.com.s3-website-us-west-1.amazonaws.com
両方の配布セットHTTPからHTTPSへのリダイレクト。
Amazonのオートコンプリートが推奨するURLは使用しないでください!
設定しないでくださいデフォルトのルートオブジェクトプロパティ!
対応するCloudFrontディストリビューションを指すようにwww.example.comおよびexample.comのAレコードを設定してDNSを構成します。
なぜ機能するのですか? CloudFrontは、両方の場合(wwwの有無にかかわらず)HTTPからHTTPSへのリダイレクトを提供します。 www.example.comのバケットは、example.comへのリダイレクトを提供します。このディストリビューションがない場合、バケットはhttps://www.example.comのリクエストをリダイレクトできません。 S3自体は、静的WebサイトホスティングのHTTPSをサポートしていません。