このクイックスタートでは、Cloud Storage バケットの前に Media CDN を設定する方法を説明します。この構成は、テストのために、または本番環境の基礎として使用できます。
このチュートリアルでは、次の手順について説明します。
- コンテンツを保存する場所を表す
EdgeCacheOrigin
リソースを作成します。 - 構成された
EdgeCacheOrigin
のコンテンツをキャッシュに保存し、デフォルトの TTL を設定するEdgeCacheService
リソースを作成します。 - サービスの IP アドレスを取得します。
- レスポンスがステータス ヘッダーでキャッシュされていることを確認します。
始める前に
以下の準備を行います。
- 現在のプロジェクトのメディア 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 version
とgcloud components update
を使用してバージョンを確認し、インストールされている gcloud CLI を更新します。
必要なサービスを有効にする
Media CDN サービスを構成してデプロイするには、Network Services API と Certificate Manager API の両方をプロジェクトで有効にする必要があります。
Console
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 バケットの使用をご覧ください。
コンソール
Google Cloud Console で、[メディア CDN] ページに移動します。
[送信元] タブをクリックします。
[Create origin] をクリックします。
送信元の名前を入力します。例:
cloud-storage-origin
。送信元の説明を入力します(省略可)。
[元のアドレス] で [Google Cloud Storage バケットを選択] を選択します。
Cloud Storage バケットを参照します。
次のデフォルトの設定はそのままにします。
[Create origin] をクリックします。
gcloud
gcloud CLI は、新規および既存の Media CDN 構成を管理するための gcloud edge-cache
サブコマンド グループを備えています。
gcloud edge-cache origins create ORIGIN \ --origin-address="gs://my-bucket"
Terraform
外部の送信元がある場合は、Cloud CDN の代わりにその送信元を使用するように Media CDN を構成できます。次に例を示します。
コンソール
Google Cloud Console で、[メディア CDN] ページに移動します。
[送信元] タブをクリックします。
[Create origin] をクリックします。
送信元の名前を入力します。例:
external-origin
。[送信元アドレス] で [FQDN または IP アドレスを指定する] を選択します。
外部の送信元の FQDN または IP アドレスを入力します。
次のデフォルトの設定はそのままにします。
[Create origin] をクリックします。
gcloud
gcloud edge-cache origins create external-origin \ --origin-address="DOMAIN_NAME"
既存の送信元の送信元アドレスを更新するには、update
コマンドを使用します。
サービスの作成
EdgeCacheService
リソースは、ルーティング、証明書、キャッシュの設定を構成し、1 つ以上の元のリソースにマッピングできます。
次のことを行う基本的な EdgeCacheService
リソースを作成します。
- 構成された送信元からのすべてのレスポンスを 1 時間キャッシュに保存する
- キャッシュのステータス(HIT、MISS など)を返す
cache-status
レスポンス ヘッダーを設定します。
EdgeCacheService
を作成するには、次のようにします。
コンソール
Google Cloud Console で、[メディア CDN] ページに移動します。
[Services] タブをクリックします。
[サービスを作成] をクリックします。
- サービスの名前を入力します。
- [Next(次へ)] をクリックします。
[ホストルールの追加] をクリックします。
- ホスト ドメイン名を 1 つ以上入力します。
[ルートルールを追加] をクリックします。
- [優先度] に「
1
」と入力します。 - [一致条件を追加] をクリックします。
- [Match type] で [Prefix match] を選択します。
- [パスマッチ] に「
/
」と入力します。 - [完了] をクリックします。
- [プライマリ アクション] を構成します。
- [原点からフェッチ] を選択します。
- [送信元を選択] で、構成した送信元を選択します。
- [アドオン アクション] をクリックします。
- [ヘッダー アクション] で [項目を追加] をクリックします。
- [タイプ] で [追加するレスポンス ヘッダー] を選択します。
- [ヘッダーを追加] をクリックします。
- [名前] に「
x-cache-status
」と入力します。 - [値] に「
{cdn_cache_status}
」と入力します。 - [完了] をクリックします。
- [ルート アクション] で [項目を追加] をクリックします。
- [タイプ] で [CDN ポリシー] を選択します。
- 次のデフォルトの設定はそのままにします。
- [完了] をクリックします。
- [ヘッダー アクション] で [項目を追加] をクリックします。
- [優先度] に「
[保存] をクリックします。
[サービスを作成] をクリックします。
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
最初のサービスが作成されるまでに最大で 1 分かかることがあります。Media CDN は専用 IP アドレスをプロビジョニングし、構成を数千ものエッジ ロケーションに push します。その後のサービスの更新では、ルート構成の変更やパラメータの照合などをより迅速に行うことができます。
サービスのリストで、新しく作成した EdgeCacheService
を表示します。
コンソール
Google Cloud Console で、[メディア CDN] ページに移動します。
[Services] タブをクリックします。
gcloud
gcloud edge-cache services list
IP アドレスを取得する
新しく作成した EdgeCacheService
の IP アドレス(IPv4 と IPv6)を取得するには、describe
コマンドを発行します。
コンソール
Google Cloud Console で、[メディア CDN] ページに移動します。
[Services] タブをクリックします。
サービスについては、アドレスの列をご覧ください。
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
コマンドを使用します。
コンソール
Google Cloud Console で、[メディア CDN] ページに移動します。
[Services] タブをクリックします。
サービスを選択して [削除] をクリックします。
[送信元] タブをクリックします。
送信元を選択して、[削除] をクリックします。
gcloud
送信元を削除するには、まずサービスを削除してから、送信元を削除します。
gcloud edge-cache services delete SERVICE_NAME
gcloud edge-cache origins delete ORIGIN
クリーンアップする他のリソースについても、この手順を繰り返します。
次のステップ
EdgeCacheService
に SSL(TLS)証明書を発行して添付します。- Logging でリクエストログを表示します。
- コンテンツを保護するために、署名付きリクエストを構成します。
- キャッシュキーと TTL を最適化し、キャッシュ ヒット率を改善する。
- 高度なルート マッチングを構成して、送信元を追加します。