[GCP] Google Cloud Storage で HTTP 配信する方法

独自ドメインで GCS を HTTPS で配信する方法

GCS (Google Cloud storage) のデフォルト URL は Google ドメイン (SSL 証明書付き) で配信されています。
独自ドメインにして配信することができますが SSL 証明書を設定することができないため、http として配信されます。
https で配信するにはロードバランサに SSL 証明書を設定する必要があります。

この記事では Google Cloud Storage で独自ドメインを https として配信する方法をご紹介します。
今回は、Google Cloud ロードバランシングを利用して Google マネージドで SSL 証明書を発行します。


独自ドメインを https として配信するには

デフォルトでは GCS 内にあるファイルは https://storage.googleapis.com/~~ として配信されます。、独自ドメインを置き換えた場合は GCS に SSL 証明書のサポートがないため、http として配信されてしまいます。
独自ドメインを https として配信するには Google Cloud ロードバランシングを利用して SSL 証明書を使用することができます。

[GCP] Cloud Storage での SSL 証明書

または Cloudflare などの外部 CDN サービスを使うことで独自ドメインを https で無料配信することができます。

手順

  1. GCS バゲットを公開設定にする
  2. Google Cloud ロードバランサを作成する
  3. Google マネージドの証明書を作成する
  4. DNS にレコードを登録する
  5. ブラウザで確認する

GCS バケットを公開する

バケットを作成する

  1. 左ナビゲーション メニューから [Cloud storage> バゲット] を選択して上部の [作成] をクリックします。
  2. バケット名を公開するドメインを入力し、ロケーションを [Region] にして使用するリージョンを選択し、ストレージ クラスを [Standard] を選択して [作成] をクリックします。

作成したバケット名が配信されるドメインになります。
バケット内のファイルは一般公開で頻繁にアクセスされるため、ストレージ クラスは Standard します。

[GCP] GCS バゲットを作成する
  1. [このバケットに対する公開アクセス禁止を適用する] のチェックマークを外し、[確認] をクリックします。
[GCP] GCP バケットを公開する

オブジェクトの公開設定

このバゲット内のファイルを誰でもアクセスできるように一般公開の設定を行います。
すべてのユーザーがバケッド内のファイルにアクセスできるようになるため、機密情報やプライベートなファイルなどを格納しないでください。

  1. 作成した [バゲット] をクリックします。
  2. [権限] タブをクリックし、[アクセス権を付与] をクリックします。
  3. 新しいプリンシパルを [allUsers] を入力し、プリンシパルのロールを [Cloud Storage > Storage オブジェクト閲覧者] に選択し、[保存] をクリックします。

allUsers は、認証されたユーザーと認証されていないユーザーの両方を含めて、インターネット上の全ユーザーを指します。
Storage オブジェクト閲覧者は、オブジェクトとそのメタデータ (ACL を除く) を閲覧するためのアクセス権を持つロールです。

[GCP] GCS バケットを一般公開する

Google Cloud ロードバランサを作成する

GCS をロードバランサで配信する設定を行います。また、Google マネージドで SSL 証明書を作成し、ロードバランサに設定します。

ロードバランサの種類を選択する

  1. 左ナビゲーション メニューから [ネットワーク > ロード バランシング] を選択し、上部の [ロードバランサを作成] クリックします。
  1. [HTTP(S) ロード バランシング] の [構成を開始] をクリックします。
[GCP] Google Cloud ロードバランサの種類を選択する
  1. [インターネットから VM またはサーバーレス サービスへ] を選択し、[グローバル HTTP(S) ロードバランサ] を選択して [続行] をクリックします。
[GCP] Google Cloud ロードバランサの接続方法を選択する

フロントエンドの構成

  1. [フロントエンドの構成] をクリックします。
  2. 適用な名前を入力し、プロトコルを [HTTPS (HTTP/2 を含む)]、 IP バージョン を [IPv4]、IP address を [エフェメラル]、ポートを [443] に設定します。

エフェメラル (自動) から [IP アドレスを作成] をすることで http を https への強制リダイレクトを利用することができます。

[GCP] Google Cloud ロードバランサのフロントエンドを構築する
  1. [証明書] 項目から [新しい証明書を作成] をクリックします
  2. 適当な名前を入力し、作成モードを [Google マネージドの証明書を作成する] を選択し、証明書で使用するドメインを入力して [作成] クリックします。
[GCP] Google マネージドで SSL 証明書を作成する

バックエンドの構成

  1. [バックエンドの構成] をクリックします。
  2. バックエンド サービスとバックエンド バケットから [バックエンド バケットを作成] をクリックします。
  3. 適当なバックエンド バケット名を入力し、Cloud Storage バケットを公開するバケットを選択し、[Cloud CDN を有効にする] にチェックを入れ、高度な構成を展開して圧縮モード [自動] に選択して [作成] をクリックします。
[GCP] Google Cloud ロードバランサのバックエンドを構築する

ルーティング ルール

  1. [ルーティング ルール] をクリックします。
  2. モードを [単純なホストとパスのルール] を選択します。
[GCP] Google Cloud ロードバランサのルーティング ルールを作成する

確認と完了

  1. [確認と完了] をクリックします。
  2. 作成するロードバランサの内容を確認して [作成] をクリックします。
[GCP] Google Cloud ロードバランサの設定を確認する

DNS サーバーの登録する

作成した Google Cloud ロードバランサの IPアドレスを DNS サーバに登録します。

  1. 作成したロードバランサをクリックし、IP アドレスをコピーします。
[GCP] 作成した Google Cloud ロードバランサの詳細を確認する
  1. ドメイン コントローラーを開き、コピーした IP アドレスを A レコードで登録します。
[Google Domians] DNS で A レコードを作成する

動作確認

GCS のオブジェクトがカスタムドメインが https で表示されていることを確認します。

作成した SSL 証明書を確認する

設定したレコードと証明書が紐付いていることを確認します。
A レコードを作成してからステータスが有効になるまで数十分かかります。

  1. ナビゲーション メニュー [セキュリティ > Certificate Manager] を選択して [従来の証明書] タブを開き、作成した証明書のステータスが [有効] と表示されていることを確認します。
[GCP] Certificate Manager で証明書を確認する

ステータスが [FAILED_NOT_VISIBLE] と表示されている場合は、作成した DNS の A レコードが正しく設定できていない可能性があります。

ブラウザで SSL を確認する

  1. GCS バケットに適当な画像をアップロードします。
  2. ブラウザを起動し、検索バーにその画像 URL を貼り付けて画像がhttps として表示されるかを確認します

参照記事

このサイトの運営者です。 Google テクノロジーが好きで布教活動を勝手にしています。