このクイックスタートでは、Cloud Storage バケットの前に Media CDN サービスを設定する方法について説明します。この構成は、テストで使用するか、本番環境のベースとして使用できます。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
このチュートリアルでは、次の手順について説明します。
- コンテンツを保存する Cloud Storage バケットを作成します。
- 必要なサービスを有効にする。
- Media CDN をバケットに接続する
EdgeCacheOrigin送信元を作成する EdgeCacheServiceリソースを作成して、送信元のコンテンツのリクエスト ルーティングとキャッシュを構成します。- レスポンスがキャッシュに保存されるかどうかをテストする。
始める前に
次の準備ができていることを確認します。
Google Cloud CLI がインストールされている。バージョン 345.0.0 以降を使用してください。
必要に応じて、
gcloud versionを使用してバージョンを確認し、gcloud components updateを使用してインストールされている gcloud CLI を更新します。gcloud CLI には、
gcloud edge-cacheサブコマンド グループ 新規および既存の Media CDN 構成を管理するための機能が用意されています。Media CDN リソースの作成に必要な Identity and Access Management(IAM)権限 。
必要なロール
このドキュメントのタスクを完了するために必要な権限を取得するには、管理者に次のロールの付与を依頼してください。
roles/networkservices.edgeCacheAdmin: すべての Edge Cache リソースの作成、更新、削除、管理を行うためのアクセス権。roles/networkservices.edgeCacheUser: Edge Cache リソースを表示して使用するためのアクセス権。roles/networkservices.edgeCacheViewer: Edge Cache リソースに対する読み取り専用アクセス権。
ストレージ バケットを作成するには
- ストレージ管理者ロール
(
roles/storage.admin)
Media CDN で SSL を有効にするには
- Certificate Manager 編集者ロール (
roles/certificatemanager.editor)
必要な権限は、カスタム ロールや他の事前定義 ロールを使用して取得することもできます。
Cloud Storage バケットを作成する
Media CDN コンテンツは、Cloud Storage バケット、サードパーティのストレージ ロケーション、ロードバランサなどのロケーションから配信できます。
このクイックスタートでは、Cloud Storage バケットにコンテンツを保存します。
一般公開されている Cloud Storage バケットを作成 し、
my-bucketという名前を付けます。Cloud Storage バケットを一般公開しない場合は、Media CDN にバケットへのアクセス権を付与する必要があります。詳細については、 非公開の Cloud Storage バケットを使用するをご覧ください。
ファイルをバケットにアップロードします。
必要なサービスを有効にする
Media CDN サービスを構成してデプロイするには、プロジェクトで 両方の Network Services API と Certificate Manager API を有効にする必要があります。
Console
gcloud
Network Services API を有効にします。
gcloud services enable networkservices.googleapis.comCertificate Manager API を有効にします。
gcloud services enable certificatemanager.googleapis.com
サービスの有効化と無効化の詳細については、 Service Usage のドキュメントをご覧ください。
EdgeCacheOrigin リソースを作成する
Cloud Storage バケットを指す送信元を作成します。
Console
コンソールで、[Media CDN] ページに移動します。 Google Cloud
[送信元] タブをクリックします。
[オリジンを作成] をクリックします。
送信元の名前として「
cloud-storage-origin」と入力します。省略可: ルールの説明を入力します。
[元のアドレス] で、[Google Cloud Storage バケットを選択] を選択して
my-bucketという名前の Cloud Storage バケットを参照し、[選択] をクリックします。代わりに外部送信元がある場合は、[FQDN または IP アドレスを指定] を選択し、FQDN または IP アドレスを入力します。
[オリジンを作成] をクリックします。
約 10 分後、新しく作成した EdgeCacheOrigin リソースが [送信元] ページのプロジェクトの送信元リストに表示されます。
送信元アドレスを更新するには、送信元をクリックして [編集]をクリックします。
gcloud
gcloud edge-cache origins create コマンドを使用します。
gcloud edge-cache origins create ORIGIN \
--origin-address="ADDRESS"
次のように置き換えます。
ORIGIN: 新しい送信元の名前ADDRESS: バケットの名前。gs://my-bucket代わりに外部送信元がある場合は、
ADDRESSを FQDN または IP アドレスに置き換えます。
新しく作成した送信元を表示するには、
gcloud edge-cache origins list コマンドを使用します。
送信元アドレスを更新するには、
gcloud edge-cache origins update コマンドを使用します。
API
edgeCacheOrigins.create メソッドを使用します。
POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheOrigins?edgeCacheOriginId=ORIGIN_ID
{
"name": "ORIGIN_ID",
"originAddress: "ADDRESS"
}
次のように置き換えます。
PARENT: 親リソース。形式は です。projects/PROJECT/locations/globalORIGIN_ID: 新しい送信元の略称ADDRESS: バケットの名前。gs://my-bucket代わりに外部送信元がある場合は、
ADDRESSを FQDN または IP アドレスに置き換えます。
新しく作成した送信元を表示するには、
edgeCacheOrigins.list メソッドを使用します。
送信元アドレスを更新するには、
edgeCacheOrigins.patch メソッドを使用します。
Terraform
EdgeCacheService リソースを作成する
EdgeCacheService リソースは、ルーティング、証明書、キャッシュの設定を構成し、EdgeCacheOrigin リソースを指すことができます。
次の処理を行う基本的な EdgeCacheService リソースを作成します。
- 構成済みの送信元からのすべてのレスポンスを 1 時間キャッシュに保存する
- キャッシュ ステータス(
HIT、MISSなど)を返すx-cache-statusレスポンス ヘッダーを設定する
必要に応じて、ドメイン名を登録します このサービスのために。
Console
コンソールで、[Media CDN] ページに移動します。 Google Cloud
[Services] タブをクリックします。
[サービスを作成] をクリックします。
サービスの一意の名前(
my-serviceなど)を入力して、[次へ] をクリックします。[**ルーティング**] セクションで、[**ホストルールを追加**] をクリックし、1 つ 以上のホスト ドメイン名を入力します。
[ホスト] にホストのドメイン名(例:
web.example.com)を入力します。[ルートのルールを追加] をクリックします。
- [優先度] には
1を指定します。 - [Add match condition] をクリックし、[パスの一致] に
/を指定して [完了] をクリックします。 - [Origin から取得] を選択し、構成した送信元を選択します。
- [アドオンのアクション] をクリックします。
- [ヘッダーのアクション] で、[項目を追加] をクリックします。次に、以下の操作を行います。
- [タイプ] で、[追加するレスポンス ヘッダー] を選択します。
- [ヘッダーを追加] をクリックします。
- [名前] に
x-cache-statusを指定し、[値] に{cdn_cache_status}を指定します。 - [完了] をクリックします。
- [ルートのアクション] で、[項目を追加] をクリックします。次に、以下の操作を行います。
- [タイプ] で [CDN ポリシー] を選択します。
- [キャッシュ モード] で、[FORCE_CACHE_ALL] を選択します。
- [完了] をクリックします。
- [保存] をクリックします。
- [優先度] には
[サービスを作成] をクリックします。
新しく作成した EdgeCacheService リソースが、プロジェクトのサービスリストの [Services] ページに表示されます。
gcloud
Cloud Shell で、テキスト エディタを使用して
my-service.yamlという名前のローカル ファイルを作成します。このようなファイルは、次のことを示します。
- ルーティングの仕組み - まずホストを照合し、次にパスを照合します。
- キャッシュの仕組み - キャッシュ モードと TTL に基づきます。
- リクエストとレスポンスの変更方法(レスポンス ヘッダーに
cdn_cache_status変数を挿入するなど)
次のサンプル コンテンツをファイルに貼り付けて保存します。
name: SERVICE routing: hostRules: - hosts: - DOMAIN pathMatcher: routes pathMatchers: - name: routes routeRules: - priority: 1 matchRules: - prefixMatch: / origin: ORIGIN routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC defaultTtl: 3600s headerAction: responseHeadersToAdd: - headerName: "x-cache-status" headerValue: "{cdn_cache_status}"次のように置き換えます。
SERVICE: Service の名前。DOMAIN: 新しいサービスのドメイン。ドメイン名を指定すると、Media CDN は他のホストに対して
404エラーを返します。ORIGIN: 関連する送信元の名前。
YAML ファイルで
gcloud edge-cache services importコマンド を使用します。gcloud edge-cache services import SERVICE \ --source=my-service.yamlプロジェクトの
EdgeCacheServiceリソースのリストに新しく作成したサービスを表示するには、gcloud edge-cache services listコマンドを使用します。
API
edgeCacheServices.create メソッドを使用します。
POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheServices?edgeCacheServiceId=SERVICE_ID
{
"name": "SERVICE_ID",
"routing": {
"hostRules": [
{
"hosts": ["DOMAIN"],
"pathMatcher": "routes"
}
],
"pathMatchers": [
{
"name": "routes",
"routeRules": [
{
"priority": "1",
"matchRules": [
{
"prefixMatch": "/"
}
],
"origin": "ORIGIN",
"routeAction": {
"cdnPolicy": {
"cacheMode": "CACHE_ALL_STATIC",
"defaultTtl": "3600s"
}
}
"headerAction": {
"responseHeadersToAdd": [
{
"headerName": "x-cache-status",
"headerValue": "{cdn_cache_status}"
}
]
},
}
]
}
]
}
}
次のように置き換えます。
PARENT: 親リソース。形式は です。projects/PROJECT/locations/globalSERVICE_ID: サービスの名前。DOMAIN: 新しいサービスのドメイン。ドメイン名を指定すると、Media CDN は他のホストに対して
404エラーを返します。ORIGIN_NAME: 関連する送信元の名前。
プロジェクトの EdgeCacheService リソースのリストに新しく作成したサービスを表示するには、edgeCacheServices.list メソッドを使用します。
Terraform
最初のサービスが作成されるまでに数分かかることがあります。 Media CDN は専用の IP アドレスをプロビジョニングし、構成を数千のエッジ ロケーションにプッシュします。ルート構成や照合パラメータの変更など、サービスに対する後続の更新は高速です。
IP アドレスを取得する
新しく作成したサービスの IP アドレスを表示するには、次の操作を行います。
Console
コンソールで、[Media CDN] ページに移動します。 Google Cloud
[Services] タブをクリックします。
サービスの IP アドレスについては、[アドレス] セルをご覧ください。
セルが空の場合は、ブラウザを更新してください。
gcloud
gcloud edge-cache services describe コマンドを使用します。
gcloud edge-cache services describe SERVICE
SERVICE は、サービスの名前に置き換えます。
出力には、サービスに割り当てられた IP アドレスが表示されます。
ipv4Addresses:
IPV4_ADDRESS
ipv6Addresses:
IPV6_ADDRESS
name: projects/my-project/locations/global/edgeCacheServices/SERVICE
...
API
edgeCacheServices.get メソッドを使用します。
GET https://networkservices.googleapis.com/v1/SERVICE_NAME
SERVICE_NAME は、サービス名に置き換えます。形式は次のようにします。
projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
SERVICE_ID は、サービスの略称に置き換えます。
取得した詳細には、サービスに割り当てられた IP アドレスが含まれます。
ipv4Addresses:
IPV4_ADDRESS
ipv6Addresses:
IPV6_ADDRESS
レスポンスがキャッシュに保存されているかどうかをテストする
サービスをテストする前に、Media CDN が取得できるように、送信元に キャッシュに保存可能な コンテンツが保存されていることを確認してください。
サービスがコンテンツをキャッシュするように正しく構成されていることをテストするには、curl コマンドライン ツールを使用してリクエストを発行し、レスポンスを確認します。curl
は、 Cloud Shell がインストールされたコンソールでも使用できます。 Google Cloud
ドメインで EdgeCacheService を使用する場合は、EdgeCacheService の IP アドレスをドメイン レコードに割り当てることができます。手順については、Cloud DNS を使用してドメインを設定するをご覧ください。ドメインを設定したら、次の curl コマンドでコンテンツにアクセスします。
curl -svo /dev/null "http://DOMAIN_NAME/FILE_NAME"
プロビジョニングされた IP アドレスを指すように DNS を構成していない場合は、resolve オプションを使用して、curl が使用するアドレスをオーバーライドします。
curl -svo /dev/null --resolve DOMAIN_NAME:80:IP_ADDRESS "http://DOMAIN_NAME/FILE_NAME"
次のように置き換えます。
DOMAIN_NAME: サービスの作成時に指定したホストドメインIP_ADDRESS: サービスのリストの [アドレス] 列に表示されるサービスの IP アドレスFILE_NAME: バケットにアップロードしたファイルの名前
例:
curl -svo /dev/null --resolve web.example.com:80:34.104.37.129 "http://web.example.com/file.mp4"
このコマンドを実行すると、最初は次のような出力が生成されます。ステータスは miss です。これは、Media CDN にはリクエストされた送信元から取得済みのデータがないためです。
< HTTP/2 200 OK
...
< x-cache-status: den;miss
...
同じリクエストを何度か送信すると、次のような出力が生成されます。ステータスは hit です。
< HTTP/2 200 OK
...
< x-cache-status: den;hit
...
ステータス hit が表示されない場合は、次の点を確認してください。
- レスポンスがキャッシュに保存可能である。
- 構成されたキャッシュ モードでコンテンツのキャッシュが許可されている。
- 送信元がキャッシュを防止するキャッシュ ディレクティブを設定していない。詳細については、キャッシュ構成をご覧ください。
これで、コンテンツをグローバルに配信できる基本的な EdgeCacheService リソースをテストしました。本番環境グレードのサービスには、SSL(TLS)
証明書、複数の送信元、
Google Cloud Armor セキュリティ ポリシーが必要になる場合があります。
オプション: クリーンアップ
今後使用しないリソースを削除します。
Console
コンソールで、[Media CDN] ページに移動します。 Google Cloud
[Services] タブをクリックします。
サービスを選択して [削除] をクリックします。
[送信元] タブをクリックします。
送信元を選択して [削除] をクリックします。
gcloud
作成したリソースを一覧表示するには、
gcloud edge-cache origins listコマンドとgcloud edge-cache services listコマンドを使用します。Pod を削除するには、
gcloud edge-cache services deleteコマンドを使用します。gcloud edge-cache services delete SERVICESERVICEは、サービスの名前に置き換えます。Pod を削除するには、
gcloud edge-cache origins deleteコマンドを使用します。gcloud edge-cache origins delete ORIGINORIGINは、送信元の名前に置き換えます。
API
作成したリソースを一覧表示するには、
edgeCacheServices.listメソッドとedgeCacheOrigins.listメソッドを使用します。サービスを削除するには、
edgeCacheServices.deleteメソッドを使用します。DELETE https://networkservices.googleapis.com/v1/SERVICE_NAMESERVICE_NAMEは、サービス名に置き換えます。形式は次のようにします。projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
SERVICE_IDは、サービスの略称に置き換えます。Pod を削除するには、
edgeCacheOrigins.deleteメソッドを使用します。DELETE https://networkservices.googleapis.com/v1/ORIGINORIGINは、送信元の名前に置き換えます。形式は次のようにします。projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
ORIGIN_IDは、送信元の略称に置き換えます。
作成した他のリソース(Cloud Storage バケットなど)で、今後使用しないリソースについても、このプロセスを繰り返します。
次のステップ
- SSL(TLS)証明書を発行してアタッチする
EdgeCacheServiceに。 - リクエストログを表示する Cloud Logging で。
- 署名付きリクエストを構成 してコンテンツを保護する。
- キャッシュ ヒット率を向上させるためにキャッシュキーと TTL を最適化する
- 高度なルート照合を構成して 、追加の送信元を作成する。