Create and populate a Cloud Storage bucket

進行状況を確認

/ 50

Create the HTTP Load Balancer with Cloud CDN

進行状況を確認

/ 50

このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。

GSP217

Google Cloud セルフペース ラボ

概要

このラボでは、バックエンド バケットの Google Cloud CDN(コンテンツ配信ネットワーク)を構成し、キャッシュへの画像の保存を検証します。Cloud CDN は、世界各地に分散している Google のエッジ拠点を使用して、HTTP(S) の負荷分散コンテンツをユーザーの近くでキャッシュに保存します。Google のネットワーク エッジのキャッシュにコンテンツを保存すると、コストを削減しながら、ユーザーにより速くコンテンツを配信できます。

Google Cloud CDN キャッシュ サイトの最新のリストについては、キャッシュのロケーションのリソースをご覧ください。

目標

このラボでは、次のタスクの実行方法について学びます。

  • Cloud Storage バケットを作成してデータを入力する
  • Cloud CDN を使用して HTTP ロードバランサを作成する
  • キャッシュへのバケット コンテンツの保存を検証する

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 右側の [ラボの設定とアクセス] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する一時的な認証情報(ユーザー名とパスワード)
    • このラボを行うために必要なその他の情報(ある場合)

    ラボのタイマーはページの上部に表示され、残り時間が示されます。

  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示された場合は、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの設定とアクセス] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの設定とアクセス] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで指定された認証情報を使用する必要があります。ご自身の Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後のページはクリックして先に進みます。

    • 利用規約に同意します。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニューのアイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. Cloud Storage バケットを作成してデータを取り込む

Cloud CDN コンテンツの送信元となるバックエンドには、次の 2 種類があります。

  • Compute Engine 仮想マシン(VM)インスタンス グループ
  • Cloud Storage バケット

このラボでは、Cloud Storage バケットをバックエンドとして構成します。

一意の Cloud Storage バケットを作成する

  1. Cloud コンソールのナビゲーション メニューで、[Cloud Storage] > [バケット] をクリックします。

  2. [バケットを作成] をクリックします。

  3. 以下のフィールドの値を設定します。その他のフィールドはデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 グローバルに一意の名前を入力します。
    入力した名前が一意でない場合、別の名前を試すように促すメッセージが表示されます。
    ロケーション タイプ Multi-region
    ロケーション 自分の現在地から非常に遠いロケーションを選択します。
注: ロケーションには地球の反対側、または少なくとも別の大陸にある場所を選択します。これにより、Cloud CDN を有効にした場合の画像へのアクセスに大きな違いが生じます。
  1. [続行] をクリックします。

  2. [公開アクセスの防止] ダイアログ ボックスの [オブジェクトへのアクセスを制御する方法を選択する] で、[このバケットに対する公開アクセス禁止を適用する] をオフにして、[続行] をクリックします。

  3. [作成] をクリックします。

  4. ストレージ バケットの名前をメモしておきます(次のステップで使用します)。これ以降は、この名前を [your-storage-bucket] と呼びます。

バケットに画像ファイルをコピーする

Cloud Storage の公開バケットから自分のバケットに画像をコピーします。

  1. Cloud Shell で次のコマンドを実行します。[your-storage-bucket] の部分は自分のバケットの名前に置き換えてください。
gcloud storage cp gs://spls/gsp217/cdn/cdn.png gs://[your-storage-bucket]
  1. [承認] をクリックします。

  2. [バケットの詳細] ページで [更新] をクリックして、画像がバケットにコピーされたことを確認します。

更新ボタンとバケットにコピーされた cdn.png ファイルがハイライト表示されている

バケットを公開する

公開オブジェクト専用の Cloud Storage バケットを作成することをおすすめします。

  1. [バケットの詳細] ページで、[権限] タブをクリックします。
  2. [アクセスを許可] をクリックします。
  3. [新しいプリンシパル] に「allUsers」と入力して、プルダウン メニューからそれを選択します。
  4. ロールとして [Cloud Storage] > [Storage オブジェクト閲覧者] を選択します。
  5. [保存] をクリックします。
  6. [一般公開アクセスを許可] をクリックします。
  7. [オブジェクト] タブをクリックします。
  8. [公開アクセス] の [URL をコピー] をクリックし、新しいブラウザタブを開いて URL をアドレスバーに貼り付け、画像にアクセスできることを確認します。

世界地図上に 80 を超える CDN のポイント オブ プレゼンスが表示された Google Cloud CDN の画像

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Cloud Storage バケットを作成してデータを入力する

タスク 2. Cloud CDN を使用して HTTP ロードバランサを作成する

HTTP(S) 負荷分散は、Cloud Storage バケット(バックエンド)への静的コンテンツの HTTP(S) リクエストに対してグローバルな負荷分散を行います。バックエンドで Cloud CDN を有効にすることにより、Google ネットワークのエッジにあるロケーションのキャッシュにコンテンツが保存されるようになります。このロケーションは通常、バックエンドよりもはるかにユーザーに近い場所にあります。

HTTP ロードバランサの構成を開始する

  1. Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[すべてのプロダクトを表示] > [ネットワーク サービス] > [ロード バランシング] をクリックします。
  2. [+ ロードバランサを作成] をクリックします。
  3. [ロードバランサのタイプ] で [アプリケーション ロードバランサ(HTTP / HTTPS)] を選択し、[次へ] をクリックします。
  4. すべての設定をデフォルトのままにして、[構成] をクリックします。
  5. [ロードバランサの名前] に「cdn-lb」と入力します。

バックエンドを構成する

  1. [バックエンドの構成] をクリックします。
  2. [バックエンド サービスとバックエンド バケット] で、[バックエンド サービスとバックエンド バケット] プルダウン メニューをクリックし、[バックエンド バケットを作成] をクリックします。
  3. [名前] を cdn-bucket に設定します。
  4. [Cloud Storage バケット] で、[参照] をクリックします。
  5. バケットをクリックして、[選択] をクリックします。
  6. [Cloud CDN を有効にする] をオンにします。
  7. [静的コンテンツをキャッシュに保存する] がデフォルトでオンになっています。このラボでは [クライアント TTL]、[デフォルト TTL]、[最大 TTL] をすべて [1 分] に設定します。
  8. [作成] をクリックします。
注: Cloud CDN は、[Cloud CDN を有効にする] をオンにするだけで有効になります。

フロントエンドを構成する

注: ホストとパスのルールで、トラフィックの転送方法を決定します。たとえば、動画のトラフィックと画像のトラフィックをそれぞれ異なるバックエンドに転送できます。ただし、このラボではホストとパスのルールを構成しないため、[ホストとパスのルール] オプションは無視します。
  1. [フロントエンドの構成] をクリックします。

  2. 以下のように設定します。その他の値はデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    プロトコル HTTP
    IP バージョン IPv4
    IP アドレス エフェメラル
    ポート 80
  3. [完了] をクリックします。

HTTP ロードバランサを確認して作成する

  1. [確認と完了] をクリックします。

  2. バックエンド バケットフロントエンドを確認します。

    フロントエンド プロトコル: HTTP、IP ポート: 80、Cloud CDN が有効になっているバックエンド cdn-bucket

  3. [作成] をクリックし、ロードバランサが作成されるのを待ちます。

  4. ロードバランサの名前(cdn-lb)をクリックします。

  5. ロードバランサの IP アドレスをメモします(次のタスクで使用します)。これ以降は、これを [LB_IP_ADDRESS] と呼びます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Cloud CDN を使用して HTTP ロードバランサを作成する

タスク 3. キャッシュへのバケット コンテンツの保存を確認する

バケットの HTTP ロードバランサを作成し、Cloud CDN を有効にしたところで、今度は Google のネットワークのエッジで画像がキャッシュに保存されることを確認します。

画像の HTTP リクエストの時間を計測する

画像がキャッシュに保存されたことを確認する 1 つの方法は、画像の HTTP リクエストの時間を計測することです。初回リクエストにかかる時間は長くなります。コンテンツはエッジ ロケーションから初めてアクセスされたときに、そのロケーションのキャッシュに保存されるからです。

  1. Cloud Shell で、ロードバランサの IP アドレスを環境変数に格納します。
export LB_IP_ADDRESS=<ロードバランサの IP アドレスを入力>
  1. 次のコマンドを実行して、連続する 3 つの HTTP リクエストの時間を計測します。
for i in {1..3};do curl -s -w "%{time_total}\n" -o /dev/null http://$LB_IP_ADDRESS/cdn.png; done

出力は次の例のようになります。

1.234357 0.009600 0.006652 注: この出力例では、2 番目と 3 番目のリクエストの所要時間が 1 番目のリクエストの 1% 未満です。これは、画像が最初のリクエスト時にキャッシュに保存され、以降のリクエストではエッジ ロケーションからアクセスされたことを意味しています。ストレージ バケットをどれほど遠くに配置したか、また最も近いエッジ ロケーションがどこなのかによって、表示される結果は異なります。
  1. ログを得るために、コマンドを数回繰り返し実行します。
for i in {1..3};do curl -s -w "%{time_total}\n" -o /dev/null http://$LB_IP_ADDRESS/cdn.png; done

Cloud CDN ログを調べる

前のステップで画像がキャッシュに保存されたことを確認するもう一つの方法は、Cloud CDN ログを調べることです。これらのログには、コンテンツがキャッシュに保存された日時と、キャッシュがアクセスされた日時に関する情報が含まれています。

  1. Cloud コンソールのナビゲーション メニューで、[すべてのプロダクトを表示] をクリックします。[オブザーバビリティ] セクションで、[ロギング] > [ログ エクスプローラ] をクリックします。

  2. [リソース] フィルタから [アプリケーション ロードバランサ] > [cdn-lb-forwarding-rule] > [cdn-lb] を選択し、[適用] をクリックします。

  3. [クエリを実行] をクリックします。

注: クエリに「警告」が表示された場合は、Cloud Shell に戻り、最後のコマンドを数回再実行してログの量を増やします。
  1. 最初のログエントリ(最上部)を開きます。

  2. エントリ内で httpRequest を展開し、cacheLookuptrue になっていて、cacheHit フィールドが存在しないことを確認します。これは、この最初のリクエストではキャッシュに画像が含まれていなかったことを示しています。

  3. jsonPayload を展開し、statusDetails フィールドに response_sent_by_backend が含まれていることを確認します。これもまた、最初のリクエストで画像がバックエンド バケットから取得されたことを示しています。

  4. 開いたログエントリを閉じて、クエリ結果の最下部のログエントリを開きます。

  5. そのエントリ内で httpRequest を開き、cacheLookupCacheHittrue になっていることを確認します。これは、このリクエストではキャッシュに画像が含まれていたことを示しています。

  6. jsonPayload を展開し、statusDetails フィールドに response_from_cache が含まれていることを確認します。これもまた、このリクエストでは画像がバックエンドではなくキャッシュから取得されたことを示しています。

注: 最初のリクエスト時に画像がバックエンドから取得されたことは、Cloud CDN ログではっきりとわかります。この最初のリクエストにより、画像がエッジ ロケーションのキャッシュに保存され、その後のすべてのリクエストでは画像はキャッシュから取得されました。

お疲れさまでした

このラボでは、HTTP ロードバランサを構成し、チェックボックスをオンにするだけで Cloud CDN を有効にすることにより、バックエンド バケットの Cloud CDN を構成しました。画像に数回アクセスして、Cloud CDN ログを調べることにより、キャッシュへのバケット コンテンツの保存を確認しました。画像への初回アクセス時は、エッジ ロケーションのキャッシュにまだ画像が含まれていないため、長めの時間がかかりました。他のすべてのリクエストでは、Cloud Shell インスタンスに最も近いエッジ ロケーションのキャッシュから画像が供給されたため、時間が短縮されました。

Google Cloud CDN キャッシュ サイトの最新のリストについては、キャッシュのロケーションのリソースをご覧ください。

次のステップと詳細情報

Cloud CDN の基本コンセプトについては、Cloud CDN のドキュメントをご覧ください。

マニュアルの最終更新日: 2025 年 5 月 26 日

ラボの最終テスト日: 2025 年 5 月 26 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。