このチュートリアルでは、所有するドメインの静的ウェブサイトをホストするように Cloud Storage バケットを構成します。静的ウェブページには HTML、CSS、JavaScript などのクライアント側の技術を使用できます。PHP のようなサーバー側のスクリプトなどの動的コンテンツを含めることはできません。
Cloud Storage 自体では HTTPS を使用するカスタム ドメインをサポートしていません。このチュートリアルでは、Cloud Storage と外部アプリケーション ロードバランサを使用して HTTPS を介してカスタム ドメインのコンテンツを提供します。カスタム ドメインのコンテンツを HTTPS 経由で提供する別の方法については、HTTPS によるサービス提供のトラブルシューティングをご覧ください。また、Cloud Storage を使用して HTTP 経由でカスタム ドメインのコンテンツを提供することもできます。この場合、ロードバランサは必要ありません。
静的ウェブページのサンプルやヒント(動的ウェブサイトの静的アセットをホストする方法など)については、静的ウェブサイトのページをご覧ください。
目標
このチュートリアルでは、次の方法について説明します。- バケットを作成する。
- サイトのファイルをアップロードして共有する。
- ロードバランサと SSL 証明書を設定する。
- ロードバランサをバケットに接続する。
A
レコードを使用して、ドメインをロードバランサに指定する。- ウェブサイトをテストする。
料金
このチュートリアルでは、課金対象である次の Google Cloud コンポーネントを使用します。
静的ウェブサイトのホスティングで発生する可能性がある料金の詳細については、料金をモニタリングするのヒントをご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- プロジェクトで Compute Engine API を有効にします。
- ストレージ管理者と Compute ネットワーク管理者の Identity and Access Management ロールが付与されている必要があります。
- 自分がオーナーまたは管理者になっているドメインが必要です。既存のドメインがない場合は、Cloud Domains など、新しいドメインを登録できるサービスが多数あります。
このチュートリアルではドメイン
example.com
を使用します。 - 提供するウェブサイトのファイルをいくつか用意します。このチュートリアルは、少なくともインデックス ページ(
index.html
)と 404 ページ(404.html
)がある場合に最適です。 - (省略可)Cloud Storage バケットにドメインと同じ名前を使用する場合は、使用するドメインを所有または管理していることを確認する必要があります。
www.example.com
などのサブドメインではなく、example.com
などのトップレベル ドメインを検証していることを確認します。Cloud Domains でドメインを購入した場合、確認は自動的に行われます。
バケットの作成
バケットを作成するには:
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
- [+ 作成] をクリックします。
- [バケットの作成] ページでユーザーのバケット情報を入力します。次のステップに進むには、[続行] をクリックします。
- [バケットに名前を付ける] で、バケット名の要件を満たす名前を入力します。
- [データの保存場所の選択] で、バケットデータを永続的に保存するロケーション タイプとロケーションを選択します。
- [データのストレージ クラスを選択する] で、バケットのデフォルトのストレージ クラスを選択するか、バケットのデータの自動ストレージ クラス管理について Autoclass を選択します。
注: 右側の [毎月の費用の見積もり] パネルでは、選択したストレージ クラスとロケーション、予想されるデータサイズとオペレーションに基づいてバケットの毎月のコストを見積もります。
- [オブジェクトへのアクセスを制御する方法を選択する] で、バケットで公開アクセスの防止を適用するかどうかを選択して、バケットのオブジェクトのアクセス制御モデルを選択します。
注: プロジェクトの組織のポリシーによって公開アクセスの防止がすでに適用されている場合、[公開アクセスの防止] の切り替えはロックされています。
- [オブジェクト データを保護する方法を選択] で、必要に応じて [保護ツール] を構成し、データ暗号化メソッドを選択します。
- [作成] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
開発環境で、
gcloud storage buckets create
コマンドを実行します。gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
ここで
リクエストが成功すると、コマンドから次のメッセージが返されます。
Creating gs://BUCKET_NAME/...
次のフラグを設定すると、バケットの作成をより細かくコントロールできます。
--project
: バケットが関連付けられるプロジェクト ID またはプロジェクト番号を指定します。例:my-project
--default-storage-class
: バケットのデフォルトのストレージ クラスを指定します。例:STANDARD
--soft-delete-duration
: バケットの削除(復元可能)の保持期間を指定します。例:2w1d
--uniform-bucket-level-access
: バケットの均一なバケットレベルのアクセスを有効にします。
gcloud バケットの作成オプションの完全なリストについては、
buckets create
オプションをご覧ください。例:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_ID --default-storage-class=STORAGE_CLASS --location=BUCKET_LOCATION --uniform-bucket-level-access
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Terraform
ストレージ バケットの作成には Terraform リソースを使用します。
次の例には、インデックス ページのサフィックスとカスタム エラーページの割り当てが含まれています。詳しくは、特殊ページを割り当てるをご覧ください。
REST API
JSON API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。- バケットの設定を含む JSON ファイルを作成します。この設定には、バケットの
name
を含める必要があります。設定の一覧については、Buckets:Insert のドキュメントをご覧ください。一般的な設定は次のとおりです。 BUCKET_NAME
は、バケットに付ける名前で、命名要件の対象となります。例:my-bucket
BUCKET_LOCATION
は、バケットのオブジェクト データを保存するロケーションです。例:US-EAST1
STORAGE_CLASS
はバケットのデフォルトのストレージ クラスです。例:STANDARD
cURL
を使用して JSON API を呼び出します。curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b?project=PROJECT_IDENTIFIER"
ここで
JSON_FILE_NAME
は手順 2 で作成した JSON ファイルの名前です。PROJECT_IDENTIFIER
は、バケットが関連付けられているプロジェクトの ID または番号です。例:my-project
{ "name": "BUCKET_NAME", "location": "BUCKET_LOCATION", "storageClass": "STORAGE_CLASS", "iamConfiguration": { "uniformBucketLevelAccess": { "enabled": true }, } }
ここで
XML API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。- バケットの設定を含む XML ファイルを作成します。設定の全一覧については、XML: バケットを作成するのドキュメントをご覧ください。一般的な設定は次のとおりです。
BUCKET_LOCATION
は、バケットのオブジェクト データを保存するロケーションです。例:US-EAST1
STORAGE_CLASS
はバケットのデフォルトのストレージ クラスです。例:STANDARD
cURL
を使用して、XML API を呼び出します。curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-project-id: PROJECT_ID" \ "https://storage.googleapis.com/BUCKET_NAME"
ここで
XML_FILE_NAME
は手順 2 で作成した XML ファイルの名前です。PROJECT_ID
は、バケットが関連付けられるプロジェクトの ID です。例:my-project
BUCKET_NAME
は、バケットに付ける名前で、命名要件の対象となります。例:my-bucket
<CreateBucketConfiguration> <LocationConstraint>BUCKET_LOCATION</LocationConstraint> <StorageClass>STORAGE_CLASS</StorageClass> </CreateBucketConfiguration>
ここで
サイトのファイルをアップロードする
ウェブサイトから配信するファイルをバケットに追加します。
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、作成したバケットをクリックします。
[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。
[ファイルをアップロード] ボタンをクリックします。
ファイル ダイアログで、目的のファイルを参照して選択します。
アップロードが完了すると、ファイル名とファイル情報がバケットに表示されます。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
ファイルをバケットにコピーするには、gcloud storage cp
コマンドを使用します。たとえば、ファイル index.html
を現在の場所 Desktop
からバケット my-static-assets
にコピーするには、次のようにします。
gcloud storage cp Desktop/index.html gs://my-static-assets
成功した場合は、次の例のようなレスポンスになります。
Completed files 1/1 | 164.3kiB/164.3kiB
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
次のサンプルでは、単独のオブジェクトをアップロードします。
次のサンプルでは、複数のオブジェクトを同時にアップロードします。
次のサンプルでは、共通の接頭辞を持つすべてのオブジェクトを同時にアップロードします。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
次のサンプルでは、単独のオブジェクトをアップロードします。
次のサンプルでは、複数のオブジェクトを同時にアップロードします。
次のサンプルでは、共通の接頭辞を持つすべてのオブジェクトを同時にアップロードします。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
次のサンプルでは、単独のオブジェクトをアップロードします。
次のサンプルでは、複数のオブジェクトを同時にアップロードします。
次のサンプルでは、共通の接頭辞を持つすべてのオブジェクトを同時にアップロードします。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Terraform
REST API
JSON API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。cURL
を使用して、POST
Object リクエストで JSON API を呼び出します。ファイルindex.html
がmy-static-assets
という名前のバケットにアップロードされているとします。curl -X POST --data-binary @index.html \ -H "Content-Type: text/html" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/upload/storage/v1/b/my-static-assets/o?uploadType=media&name=index.html"
XML API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。cURL
を使用して、PUT
Object リクエストで XML API を呼び出します。ファイルindex.html
がmy-static-assets
という名前のバケットにアップロードされているとします。curl -X PUT --data-binary @index.html \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: text/html" \ "https://storage.googleapis.com/my-static-assets/index.html"
ファイルを共有する
公共のインターネット上で誰もがバケット内のすべてのオブジェクトを閲覧できるようにするには:
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、公開するバケットの名前をクリックします。
ページ上部にある [権限] タブを選択します。
[公開アクセス] ペインで [非公開] と表示された場合は、[公開アクセス防止を削除] ボタンをクリックし、表示されたダイアログで [確認] をクリックします。
[add_box アクセス権を付与] ボタンをクリックします。
[プリンシパルの追加] ダイアログ ボックスが表示されます。
[新しいプリンシパル] フィールドに「
allUsers
」と入力します。[ロールを選択] プルダウンで [Cloud Storage] サブメニューを選択し、[ストレージ オブジェクト閲覧者] オプションをクリックします。
[保存] をクリックします。
[一般公開アクセスを許可] をクリックします。
公開の状態で共有されると、[公開アクセス] 列に各オブジェクトのリンクアイコンが表示されます。このアイコンをクリックすると、オブジェクトの URL を取得できます。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
buckets add-iam-policy-binding
コマンドを使用します。
gcloud storage buckets add-iam-policy-binding gs://my-static-assets --member=allUsers --role=roles/storage.objectViewer
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Terraform
REST API
JSON API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。次の情報が含まれる JSON ファイルを作成します。
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
cURL
を使用して JSON API を呼び出し、PUT
Bucket リクエストを行います。curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで
JSON_FILE_NAME
は、手順 2 で作成した JSON ファイルのパスです。BUCKET_NAME
は、オブジェクトを公開するバケットの名前です。例:my-static-assets
XML API
XML API では、バケット内のすべてのオブジェクトを公開して読み取り可能にすることはできません。Google Cloud コンソールまたは gcloud storage
を使用するか、個々のオブジェクトに ACL を設定します。
バケット内の個々のオブジェクトを公開するには、バケットのアクセス制御モードをきめ細かい管理に切り替える必要があります。一般に、バケット内のすべてのファイルを一般公開するほう簡単で迅速です。
非公開または存在しないファイルの URL をリクエストすると、サイト訪問者は http 403
レスポンス コードを受け取ります。http 404
レスポンス コードを使用するエラーページを追加する方法については、次のセクションをご覧ください。
推奨: 特殊ページを割り当てる
インデックス ページのサフィックスとカスタム エラーページ(特殊ページ)を割り当てることができます。どちらの割り当ても任意ですが、インデックス ページのサフィックスを割り当てずに、対応するインデックス ページをアップロードした場合、最上位のサイトにアクセスするユーザーには、バケット内の公開オブジェクトのリストを含む XML ドキュメント ツリーが提供されます。
特殊ページの動作の詳細については、特殊ページをご覧ください。
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、作成したバケットを見つけます。
バケットに関連付けられたバケット オーバーフロー メニュー(more_vert)をクリックし、[ウェブサイトの構成を編集] を選択します。
ウェブサイト構成ダイアログで、メインページとエラーページを指定します。
[保存] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
--web-main-page-suffix
フラグと --web-error-page
フラグを指定して、buckets update
コマンドを使用します。
次のサンプルでは、MainPageSuffix
を index.html
に設定し、NotFoundPage
を 404.html
に設定します。
gcloud storage buckets update gs://my-static-assets --web-main-page-suffix=index.html --web-error-page=404.html
成功した場合、次の内容が返されます。
Updating gs://www.example.com/... Completed 1
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
REST API
JSON API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。JSON ファイルを作成して、
website
オブジェクトのmainPageSuffix
プロパティとnotFoundPage
プロパティを目的のページに設定します。次のサンプルでは、
mainPageSuffix
をindex.html
に設定し、notFoundPage
を404.html
に設定します。{ "website":{ "mainPageSuffix": "index.html", "notFoundPage": "404.html" } }
cURL
を使用して JSON API を呼び出し、PATCH
Bucket リクエストを行います。バケットmy-static-assets
の場合は、次のようにします。curl -X PATCH --data-binary @web-config.json \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/my-static-assets"
XML API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。XML ファイルを作成し、
WebsiteConfiguration
要素のMainPageSuffix
要素とNotFoundPage
要素を目的のページに設定します。次のサンプルでは、
MainPageSuffix
をindex.html
に設定し、NotFoundPage
を404.html
に設定します。<WebsiteConfiguration> <MainPageSuffix>index.html</MainPageSuffix> <NotFoundPage>404.html</NotFoundPage> </WebsiteConfiguration>
cURL
を使用して、PUT
Bucket リクエストとwebsiteConfig
クエリ文字列パラメータを含めた XML API を呼び出します。my-static-assets
の場合:curl -X PUT --data-binary @web-config.xml \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/my-static-assets?websiteConfig
ロードバランサと SSL 証明書を設定する
Cloud Storage 自体では HTTPS を使用するカスタム ドメインをサポートしていません。HTTPS 経由でウェブサイトを提供するには、HTTPS ロードバランサに関連付けられた SSL 証明書を設定する必要があります。このセクションでは、ロードバランサのバックエンドにバケットを追加する方法と、ロードバランサのフロントエンドに新しい Google マネージド SSL 証明書を追加する方法について説明します。
構成を開始する
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
- [ロードバランサを作成] をクリックします。
- [ロードバランサの種類] で [アプリケーション ロードバランサ(HTTP / HTTPS)] を選択し、[次へ] をクリックします。
- [インターネット接続または内部] で [インターネット接続(外部)] を選択し、[次へ] をクリックします。
- [グローバルまたはシングル リージョンのデプロイ] で [グローバル ワークロードに最適] を選択し、[次へ] をクリックします。
- [ロードバランサの世代] で [従来のアプリケーション ロードバランサ] を選択し、[次へ] をクリックします。
- [構成] をクリックします。
ロードバランサの構成ウィンドウが表示されます。
基本構成
構成を続行する前に、ロードバランサ名(example-lb
など)を入力します。
フロントエンドを構成する
このセクションでは、HTTPS プロトコルを構成し、SSL 証明書を作成する方法について説明します。既存の証明書を選択することも、セルフマネージド SSL 証明書をアップロードすることもできます。
- [フロントエンドの構成] をクリックします。
- (省略可)フロントエンドの構成に名前を付けます。
- [プロトコル] で、[HTTPS(HTTP/2 を含む)] を選択します。
- [IP バージョン] で [IPv4] を選択します。IPv6 を使用する場合は、IPv6 終端をご覧ください。
[IP アドレス] フィールドで次の操作を行います。
- プルダウンで [IP アドレスを作成] をクリックします。
- [新しい静的 IP アドレスの予約] ポップアップで、IP アドレスの名前として「
example-ip
」などの名前を入力します。 - [予約] をクリックします。
[ポート] で [443] を選択します。
[証明書] フィールドのプルダウンで、[新しい証明書を作成] を選択します。パネルに証明書作成フォームが表示されます。以下の構成を行います。
- 証明書に名前を付けます(
example-ssl
など)。 - [作成モード] で [Google マネージドの証明書を作成する] を選択します。
- [ドメイン] にウェブサイトの名前(
www.example.com
など)を入力します。ルートドメインexample.com
など、追加ドメイン経由でコンテンツを配信する場合は、Enter キーを押して追加行にドメインを追加します。各証明書の上限は 100 ドメインです。
- 証明書に名前を付けます(
[作成] をクリックします。
(省略可)Google Cloud によって部分的な HTTP ロードバランサを自動的に設定し、HTTP トラフィックをリダイレクトする場合は、[HTTP から HTTPS へのリダイレクトを有効にする] チェックボックスを選択します。
[完了] をクリックします。
バックエンドを構成する
- [バックエンドの構成] をクリックします。
- [バックエンド サービスとバックエンド バケット] プルダウンで [バックエンド バケットを作成] をクリックします。
- バックエンド バケット名を選択します(
example-bucket
など)。以前に作成したバケットの名前と異なる名前も選択できます。 - [Cloud Storage バケット] フィールド内の [参照] をクリックします。
- 前に作成した
my-static-assets
バケットを選択し、[選択] をクリックします。 - (省略可)Cloud CDN を使用する場合は、[Cloud CDN を有効にする] チェックボックスをオンにし、必要に応じて Cloud CDN を構成します。Cloud CDN を使用すると、追加費用が発生する可能性があります。
- [作成] をクリックします。
ルーティング ルールを構成する
ルーティング ルールは、外部アプリケーション ロードバランサの URL マップの構成要素です。このチュートリアルでは、ロードバランサの構成のこの部分をスキップします。これは、構成したバックエンドを使用するように自動的に構成されているためです。
構成を確認する
- [確認と完了] をクリックします。
- [フロントエンド]、[ルーティング ルール]、[バックエンド] を確認します。
- [作成] をクリックします。
ロードバランサの作成に数分かかることがあります。
ドメインをロードバランサに接続する
ロードバランサが作成されたら、ロードバランサの名前(example-lb
)をクリックします。ロードバランサに関連付けられた IP アドレスをメモします(例: 30.90.80.100
)。ドメインをロードバランサに指定するには、ドメイン登録サービスを使用して A
レコードを作成します。SSL 証明書に複数のドメインを追加する場合は、それぞれについて A
レコードを追加して、すべてがロードバランサの IP アドレスを指す必要があります。たとえば、www.example.com
と example.com
に A
レコードを作成するには、次のようにします。
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
推奨: SSL 証明書のステータスをモニタリングする
Google Cloud が証明書をプロビジョニングし、ロードバランサ経由でサイトが利用可能になるまでに最大で 60~90 分かかることがあります。証明書のステータスをモニタリングするには:
コンソール
- Google Cloud コンソールの [ロード バランシング] ページに移動します。
[ロード バランシング] に移動 - ロードバランサの名前(
example-lb
)をクリックします。 - ロードバランサに関連付けられている SSL 証明書の名前(
example-ssl
)をクリックします。 - [ステータス] 行と [ドメイン ステータス] 行に証明書のステータスが表示されます。ウェブサイトで証明書を有効にするには、両方が有効である必要があります。
コマンドライン
証明書のステータスを確認するには、次のコマンドを実行します。
gcloud compute ssl-certificates describe CERTIFICATE_NAME \ --global \ --format="get(name,managed.status)"
ドメインのステータスを確認するには、次のコマンドを実行します。
gcloud compute ssl-certificates describe CERTIFICATE_NAME \ --global \ --format="get(managed.domainStatus)"
証明書のステータスの詳細については、SSL 証明書のトラブルシューティングをご覧ください。
ウェブサイトをテストする
SSL 証明書がアクティブになったら https://www.example.com/test.html
に移動し、コンテンツがバケットから配信されていることを確認します。ここで、test.html
は、バックエンドとして使用するバケットに保存されているオブジェクトです。MainPageSuffix
プロパティを設定すると、https://www.example.com
が index.html
に移動します。
クリーンアップ
チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。以下のセクションで、リソースを削除または無効にする方法を説明します。
プロジェクトを削除する
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
ロードバランサとバケットの削除
プロジェクト全体を削除しない場合は、このチュートリアル用に作成したロードバランサとバケットを削除します。
- Google Cloud コンソールの [ロード バランシング] ページに移動します。
[ロード バランシング] に移動 example-lb
の横のチェックボックスをオンにします。- [削除] をクリックします。
- (省略可)
my-static-assets
バケットやexample-ssl
SSL 証明書など、ロードバランサと一緒に削除するリソースのチェックボックスをオンにします。 - [ロードバランサを削除] または [ロードバランサと選択したリソースを削除] をクリックします。
予約済みの IP アドレスを解放する
チュートリアルで使用した予約済み IP アドレスを削除するには:
Google Cloud コンソールで、[外部 IP アドレス] ページに移動します。
example-ip
の横にあるチェックボックスを選択します。[静的アドレスを予約] をクリックします。
確認ウィンドウで [削除] をクリックします。
次のステップ
- バケットを使用して静的ウェブサイトをホストする場合の設定例とヒントを確認する。
- 静的ウェブサイトをホストする際のトラブルシューティングを確認する。
- 動的ウェブサイトの静的アセットのホストについて学習する。
- 他の Google Cloud ウェブ配信ソリューションについて学習する。
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud Storage のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
Cloud Storage を無料で試す