クイックスタート: Media CDN を設定する

このクイックスタートでは、Cloud Storage バケットの前に Media CDN を設定する方法を説明します。この構成は、テストのために、または本番環境の基礎として使用できます。

このチュートリアルでは、次の手順について説明します。

  1. コンテンツを保存する場所を表す EdgeCacheOrigin リソースを作成します。
  2. 構成された EdgeCacheOrigin のコンテンツをキャッシュに保存し、デフォルトの TTL を設定する EdgeCacheService リソースを作成します。
  3. サービスの IP アドレスを取得します。
  4. レスポンスがステータス ヘッダーでキャッシュされていることを確認します。

始める前に

以下の準備を行います。

  • 現在のプロジェクトのメディア CDN に対するアクセス権。アクセスをリクエストするをご覧ください。
  • コンテンツの送信元として使用するコンテンツ(動画ファイルや画像など)またはコンテンツを含む一般公開されたアクセス可能な HTTP エンドポイントを含む、一般公開されている Cloud Storage バケット
  • インストール済みの Google Cloud CLI
  • Media CDN リソースの作成に必要な Identity and Access Management 権限。Media CDN には、次の IAM 事前定義ロールがあります。

    • roles/networkservices.edgeCacheAdmin
    • roles/networkservices.edgeCacheUser
    • roles/networkservices.edgeCacheViewer
  • gcloud CLI バージョン 345.0.0 以降

    gcloud versiongcloud components update を使用してバージョンを確認し、インストールされている gcloud CLI を更新します。

必要なサービスを有効にする

Media CDN サービスを構成してデプロイするには、Network Services API と Certificate Manager API の両方をプロジェクトで有効にする必要があります。

Console

  1. Network Services API を有効にします。

    API の有効化

  2. Certificate Manager API を有効にします。

    API の有効化

gcloud

現在のプロジェクトで Network Services API サービスを有効にするには、次のコマンドを実行します。

gcloud services enable networkservices.googleapis.com

Certificate Manager API を有効にするには、次のコマンドを実行します。

gcloud services enable certificatemanager.googleapis.com

サービスの有効化と無効化の詳細については、Service Usage のドキュメントをご覧ください。

送信元を作成する

EdgeCacheOrigin は、Cloud Storage バケット、サードパーティのストレージ ロケーション、ロードバランサなどのコンテンツのロケーションを表します。

この場合、my-bucket という名前の Cloud Storage バケットにマッピングする送信元を作成します。Cloud Storage バケットが一般公開されていない場合は、メディア CDN にバケットへのアクセス権限を付与する必要があります。詳細については、プライベート Cloud Storage バケットの使用をご覧ください。

コンソール

  1. Google Cloud Console で、[メディア CDN] ページに移動します。

    Media CDN に移動

  2. [送信元] タブをクリックします。

  3. [Create origin] をクリックします。

  4. 送信元の名前を入力します。例: cloud-storage-origin

  5. 送信元の説明を入力します(省略可)。

  6. [元のアドレス] で [Google Cloud Storage バケットを選択] を選択します。

  7. Cloud Storage バケットを参照します。

  8. 次のデフォルトの設定はそのままにします。

  9. [Create origin] をクリックします。

gcloud

gcloud CLI は、新規および既存の Media CDN 構成を管理するための gcloud edge-cache サブコマンド グループを備えています。

gcloud edge-cache origins create ORIGIN \
    --origin-address="gs://my-bucket"

Terraform

resource "google_network_services_edge_cache_origin" "default" {
  name           = "cloud-storage-origin"
  origin_address = "gs://my-bucket-123123" # Update bucket name
  description    = "Media Edge Origin with Cloud Storage as Origin"
  max_attempts   = 3 # Min is 1s, Default is 1s & Max 3
  timeout {
    connect_timeout  = "10s"  # Min is 1s, Default is 5s & Max 15s
    response_timeout = "120s" # Min is 1s, Default is 30s & Max 120s
    read_timeout     = "5s"   # Min is 1s, Default is 15s & Max 30s
  }
}

外部の送信元がある場合は、Cloud CDN の代わりにその送信元を使用するように Media CDN を構成できます。次に例を示します。

コンソール

  1. Google Cloud Console で、[メディア CDN] ページに移動します。

    Media CDN に移動

  2. [送信元] タブをクリックします。

  3. [Create origin] をクリックします。

  4. 送信元の名前を入力します。例: external-origin

  5. [送信元アドレス] で [FQDN または IP アドレスを指定する] を選択します。

  6. 外部の送信元の FQDN または IP アドレスを入力します。

  7. 次のデフォルトの設定はそのままにします。

  8. [Create origin] をクリックします。

gcloud

gcloud edge-cache origins create external-origin \
    --origin-address="DOMAIN_NAME"

既存の送信元の送信元アドレスを更新するには、update コマンドを使用します。

サービスの作成

EdgeCacheService リソースは、ルーティング、証明書、キャッシュの設定を構成し、1 つ以上の元のリソースにマッピングできます。

次のことを行う基本的な EdgeCacheService リソースを作成します。

  • 構成された送信元からのすべてのレスポンスを 1 時間キャッシュに保存する
  • キャッシュのステータス(HIT、MISS など)を返す cache-status レスポンス ヘッダーを設定します。

EdgeCacheService を作成するには、次のようにします。

コンソール

  1. Google Cloud Console で、[メディア CDN] ページに移動します。

    Media CDN に移動

  2. [Services] タブをクリックします。

  3. [サービスを作成] をクリックします。

    1. サービスの名前を入力します。
    2. [Next(次へ)] をクリックします。
  4. [ホストルールの追加] をクリックします。

    1. ホスト ドメイン名を 1 つ以上入力します。
  5. [ルートルールを追加] をクリックします。

    1. [優先度] に「1」と入力します。
    2. [一致条件を追加] をクリックします。
      1. [Match type] で [Prefix match] を選択します。
      2. [パスマッチ] に「/」と入力します。
      3. [完了] をクリックします。
    3. [プライマリ アクション] を構成します。
      1. [原点からフェッチ] を選択します。
      2. [送信元を選択] で、構成した送信元を選択します。
    4. [アドオン アクション] をクリックします。
      1. [ヘッダー アクション] で [項目を追加] をクリックします。
        1. [タイプ] で [追加するレスポンス ヘッダー] を選択します。
        2. [ヘッダーを追加] をクリックします。
        3. [名前] に「x-cache-status」と入力します。
        4. [] に「{cdn_cache_status}」と入力します。
        5. [完了] をクリックします。
      2. [ルート アクション] で [項目を追加] をクリックします。
        1. [タイプ] で [CDN ポリシー] を選択します。
        2. 次のデフォルトの設定はそのままにします。
        3. [完了] をクリックします。
  6. [保存] をクリックします。

  7. [サービスを作成] をクリックします。

gcloud

Cloud Shell で、nano や Vim などのターミナル テキスト エディタを使用して、my-service.yaml というローカル ファイルを作成します。このファイルに次の内容を貼り付けて保存します。

name: SERVICE_NAME
routing:
  hostRules:
  - hosts:
    # List any domain names that the service handles requests for
    - DOMAIN_NAME
    pathMatcher: routes
  pathMatchers:
  - name: routes
    routeRules:
    - priority: 1
      matchRules:
      - prefixMatch: /
      # This should match the origin name created in step 1.
      origin: ORIGIN
      routeAction:
        cdnPolicy:
          # Cache static content - for example, video files
          cacheMode: CACHE_ALL_STATIC
          defaultTtl: 3600s
      headerAction:
        responseHeadersToAdd:
        - headerName: "x-cache-status"
          headerValue: "{cdn_cache_status}"

origin フィールドの値が、前の手順で作成した送信元の名前と一致していることを確認します。

このサービスを指すように 1 つ以上のドメイン名を構成するには、そのドメイン名を routing.hostRules.hosts[] リストに追加します。メディア CDN から、他のホストに対して 404 エラーが返される。

gcloud edge-cache services import SERVICE_NAME \
    --source=my-service.yaml

Terraform

resource "google_network_services_edge_cache_service" "default" {
  name        = "cloud-media-service"
  description = "Media Edge Service with Cloud Storage as Origin"
  routing {
    host_rule {
      description  = "host rule description"
      hosts        = ["googlecloudexample.com"]
      path_matcher = "routes"
    }
    path_matcher {
      name = "routes"
      route_rule {
        description = "a route rule to match against"
        priority    = 1
        match_rule {
          prefix_match = "/"
        }
        # Referring to previously defined Edge Cache Origin
        origin = google_network_services_edge_cache_origin.default.name
        route_action {
          cdn_policy {
            cache_mode  = "CACHE_ALL_STATIC"
            default_ttl = "3600s"
          }
        }
        header_action {
          response_header_to_add {
            header_name  = "x-cache-status"
            header_value = "{cdn_cache_status}"
          }
        }
      }
    }
  }
}

最初のサービスが作成されるまでに最大で 1 分かかることがあります。Media CDN は専用 IP アドレスをプロビジョニングし、構成を数千ものエッジ ロケーションに push します。その後のサービスの更新では、ルート構成の変更やパラメータの照合などをより迅速に行うことができます。

サービスのリストで、新しく作成した EdgeCacheService を表示します。

コンソール

  1. Google Cloud Console で、[メディア CDN] ページに移動します。

    Media CDN に移動

  2. [Services] タブをクリックします。

gcloud

gcloud edge-cache services list

IP アドレスを取得する

新しく作成した EdgeCacheService の IP アドレス(IPv4 と IPv6)を取得するには、describe コマンドを発行します。

コンソール

  1. Google Cloud Console で、[メディア CDN] ページに移動します。

    Media CDN に移動

  2. [Services] タブをクリックします。

  3. サービスについては、アドレスの列をご覧ください。

gcloud

gcloud edge-cache services describe SERVICE_NAME

出力には、サービスに割り当てられた IP アドレスが表示されます。

ipv4Addresses:
- IPV4_ADDRESS
ipv6Addresses:
- IPV6_ADDRESS
name: projects/my-project/locations/global/edgeCacheServices/SERVICE_NAME
...

この時点で、アドレスの準備ができたら、DNS プロバイダでドメインを指すようにドメインを構成できます。

キャッシュをテストする

サービスがコンテンツをキャッシュするように正しく構成されていることを確認するには、curl コマンドライン ツールを使用してリクエストを発行し、レスポンスを確認します。curl は、Google Cloud Console の Cloud Shell でも使用できます。

プロビジョニングされた IP アドレスを指すように DNS を構成していない場合は、curl で使用されるアドレスをオーバーライドできます。

curl -svo /dev/null --resolve DOMAIN_NAME:80:IP_ADDRESS "http://DOMAIN_NAME/file.mp4"

リクエストの送信元データがまだ送信元から取得されていないため、このコマンドは最初に MISS というステータスの出力を生成します。

< HTTP/2 200
...
< x-cache-status: MISS
...

同じリクエストを何度も送信すると、ステータスが HIT の状態で次のような出力が生成されます。

< HTTP/2 200
...
< x-cache-status: HIT
...

ステータスが HIT と表示されない場合は、次の点を確認してください。

  • レスポンスはキャッシュに保存できます。
  • 構成されたキャッシュ モードでは、コンテンツのキャッシュ保存が可能です。
  • 送信元で、キャッシュを防止するキャッシュ ディレクティブが設定されていない。

詳しくは、キャッシュの概要をご覧ください。

コンテンツをグローバルに配信できる基本的な EdgeCacheService をテストしました。本番環境レベルのサービスでは、SSL(TLS)証明書、複数の送信元、Google Cloud Armor セキュリティ ポリシーが必要になる場合があります。

オプション: クリーンアップ

未使用のリソースをクリーンアップするには、各リソースに関連する delete コマンドを使用します。

作成したリソースを一覧表示するには、services list コマンドと origins list コマンドを使用します。

コンソール

  1. Google Cloud Console で、[メディア CDN] ページに移動します。

    Media CDN に移動

  2. [Services] タブをクリックします。

  3. サービスを選択して [削除] をクリックします。

  4. [送信元] タブをクリックします。

  5. 送信元を選択して、[削除] をクリックします。

gcloud

送信元を削除するには、まずサービスを削除してから、送信元を削除します。

gcloud edge-cache services delete SERVICE_NAME
gcloud edge-cache origins delete ORIGIN

クリーンアップする他のリソースについても、この手順を繰り返します。

次のステップ