管理サービス

このページでは、サービスを作成する方法とサービスの情報を表示する方法について説明します。サービスは Cloud Run の主なリソースです。

各サービスには一意で永続的な run.app URL があります。この URL は、新しいリビジョンをサービスにデプロイしても変わりません。Cloud Run にデプロイされた関数もサービスとして扱われ、run.app アドレスが割り当てられます。サービスの永続ドメインは、サービス名とハッシュで構成されます。

必要なロール

Cloud Run のサービスとリビジョンを管理するために必要な権限を取得するには、Cloud Run サービスに対する Cloud Run デベロッパーroles/run.developer)IAM ロールを付与するよう管理者に依頼してください。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run サービスが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限アクセスの管理をご覧ください。

サービスを作成する

コンテナ イメージを最初にデプロイするときに、新しいサービスが作成されます。新しいサービスをデプロイする場合は、これよりも操作が多くなります。

プロジェクト内のサービスのリストを表示する

Google Cloud コンソールまたは gcloud コマンドラインを使用して、プロジェクトで使用可能なサービスの一覧を表示できます。

コンソール

サービスリストを表示するには:

  1. Google Cloud コンソールで、[Cloud Run] に移動します。

    Cloud Run に移動

  2. プロジェクトに表示されたサービスのリストを調べます。

    サービスのリスト

gcloud

プロジェクトのサービスを一覧表示するには:

gcloud run services list

サービスには URL が関連付けられています。

割り当てられたラベルなど、サービス定義のプロパティを基準にこのリストをフィルタできます。

Cloud Code

Cloud Code でサービスを一覧表示するには、IntelliJVisual Studio Code に関する Cloud Run Explorer ガイドをご覧ください。

クライアント ライブラリ

コードからサービスのリストを表示するには:

REST API

プロジェクト内のサービスの一覧を表示するには、GET HTTP リクエストを Cloud Run Admin API の service エンドポイントに送信します。

curl の使用例を次に示します。

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X GET \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services

次のように置き換えます。

  • ACCESS_TOKEN は、サービスを表示する IAM 権限を持つアカウントの有効なアクセス トークンに置き換えます。たとえば、gcloud にログインしている場合は、gcloud auth print-access-token を使用してアクセス トークンを取得できます。Cloud Run コンテナ インスタンスから、コンテナ インスタンス メタデータ サーバーを使用してアクセス トークンを取得できます。
  • REGION は、サービスの Google Cloud リージョンに置き換えます。
  • PROJECT-ID は、Google Cloud プロジェクト ID に置き換えます。

プロジェクト内の関数のリストを表示する

Google Cloud コンソールを使用して、プロジェクトで使用可能な関数のリストを表示できます。

コンソール

サービスリストの関数をフィルタするには:

  1. Google Cloud コンソールで、[Cloud Run] に移動します。

    Cloud Run に移動

  2. プロジェクトに表示されたサービスのリストを調べます。

    サービスのリスト

  3. [サービスをフィルタ] > [デプロイタイプ] > [関数] を選択します。

    以前に Cloud Functions(第 2 世代 API)を使用して関数をデプロイした場合は、[デプロイしたユーザー] 列に「Cloud Functions」と表示されます。

サービスをコピーする

Google Cloud コンソールまたは YAML を使用して、既存のサービスのコピーを作成できます。名前やリージョンなど、コピーに含まれる任意の要素を変更できます。

コンソール

サービスをコピーするには:

  1. Google Cloud コンソールで、[Cloud Run] に移動します。

    Cloud Run に移動

  2. プロジェクトに関して表示されるサービスのリストから、コピーするサービスを選択します。

    サービスのリスト

    1. [コピー] をクリックします。

    2. サービスのコピーのページで、必要に応じて値(リージョンなど)を設定または変更します。同じリージョンを保持する場合は、サービスに新しい名前を付ける必要があります。

    3. [作成] をクリックするとコピーが作成され、新しいサービス名を使ってそれがデプロイされます。

YAML

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 必要に応じてサービスの構成を変更します。

     apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
       annotations:
         ...
       name: SERVICE
       ...
     spec:
       template:
         metadata:
           annotations:
           ...
           name: REVISION
    
    • コピーを別のリージョンにデプロイしない場合は、SERVICE を、そのコピーに使用する名前に置き換えます。コピーを別のリージョンにデプロイする場合は、元の名前を使用できます。
    • REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用してサービスをコピーします。

    gcloud run services replace service.yaml

    コピーを別のリージョンにデプロイするには、--region フラグを使用します。

サービスの詳細を表示する

サービスの詳細を表示するには、次の操作を行います。

コンソール

サービスの詳細を表示するには:

  1. Google Cloud コンソールで、[Cloud Run] に移動します。

    Cloud Run に移動

  2. 表示されているサービスの一覧で目的のサービスをクリックし、サービスの詳細ビューを開きます。

gcloud

サービスの詳細を表示するには:

gcloud run services describe SERVICE
SERVICE は、サービスの名前に置き換えます。

--format フラグを使用して出力をフォーマットできます。たとえば、YAML としてフォーマットします。

gcloud run services describe SERVICE --region REGION --format yaml

次のように置き換えます。

  • SERVICE: サービスの名前。
  • REGION: サービスの Google Cloud リージョン。

--format export を使用すると、自動生成のラベルやステータスを含まない YAML としてエクスポートできます。

gcloud run services describe SERVICE --region REGION --format export

--format フラグを使用して、サービスの URL を取得することもできます。

gcloud run services describe SERVICE --region REGION --format='value(status.url)'

Cloud Code

Cloud Code でサービスの詳細を表示するには、IntelliJVisual Studio Code に関する Cloud Run Explorer ガイドをご覧ください。

サービスのリビジョンの詳細については、リビジョンの管理をご覧ください。

クライアント ライブラリ

コードからサービスの詳細を表示するには:

REST API

サービスの詳細を表示するには、GET HTTP リクエストを Cloud Run Admin API の service エンドポイントに送信します。

curl の使用例を次に示します。

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X GET \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE-NAME

次のように置き換えます。

  • ACCESS_TOKEN は、サービスの詳細を表示する IAM 権限を持つアカウントの有効なアクセス トークンに置き換えます。たとえば、gcloud にログインしている場合は、gcloud auth print-access-token を使用してアクセス トークンを取得できます。Cloud Run コンテナ インスタンスから、コンテナ インスタンス メタデータ サーバーを使用してアクセス トークンを取得できます。
  • SERVICE-NAME は、サービスの名前に置き換えます。
  • REGION: サービスの Google Cloud リージョン。
  • PROJECT-ID は、Google Cloud プロジェクト ID に置き換えます。

既存のサービスを無効にする

既存の Cloud Run サービスとリビジョンを無効にするために必要な権限を取得するには、プロジェクトに対する Cloud Run 管理者roles/run.admin)IAM ロールを付与するよう管理者に依頼してください。

Cloud Run では、トラフィックを処理するサービスを直接停止することはできませんが、サービスを呼び出している ID のサービス呼び出し権限を取り消すことで、同様の結果を得ることができます。たとえば、サービスが public の場合、Cloud Run 呼び出し元ロール(roles/run.invoker)から allUsers を削除します。

既存のサービスを削除する

サービスを削除する場合は、次の点に注意してください。

  • サービスを削除すると、トラフィック処理中であるかどうかにかかわらず、このサービスに関連するすべてのリソースが削除されます。このサービスのリビジョンもすべて削除されます。
  • サービスを削除しても、Container Registry からコンテナ イメージが自動的に削除されることはありません。削除されたリビジョンで使用されているコンテナ イメージを Container Registry から削除するには、イメージの削除をご覧ください。
  • 1 つ以上の Eventarc トリガーを持つサービスを削除しても、これらのトリガーは自動的に削除されません。トリガーを削除するには、トリガーを管理するをご覧ください。
  • 削除が完全に完了するまで、Google Cloud コンソールとコマンドライン インターフェースにはサービスが表示されています。ただし、サービスの更新はできません。
  • サービスは完全に削除されます。元に戻すことも、復元することもできません。サービスを削除した後、同じリージョンに同じ名前のサービスを新たにデプロイすると、同じエンドポイント URL が使用されます。

コンソール

サービスを削除するには:

  1. Google Cloud コンソールで、[Cloud Run] に移動します。

    Cloud Run に移動

  2. 削除するサービスをサービスリストで探し、そのチェックボックスをクリックして選択します。

  3. [削除] をクリックします。これにより、サービスのすべてのリビジョンが削除されます。

gcloud

サービスを削除するには、次のコマンドを使用します。

gcloud run services delete SERVICE --region REGION

次のように置き換えます。

  • SERVICE: 実際のサービスの名前。
  • REGION: サービスの Google Cloud リージョン。

クライアント ライブラリ

コードからサービスを削除するには:

REST API

サービスを削除するには、Cloud Run Admin API の service エンドポイントDELETE HTTP リクエストを送信します。

curl の使用例を次に示します。

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X DELETE \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE-NAME

次のように置き換えます。

  • ACCESS_TOKEN は、サービスを削除する IAM 権限を持つアカウントの有効なアクセス トークンに置き換えます。たとえば、gcloud にログインしている場合は、gcloud auth print-access-token を使用してアクセス トークンを取得できます。Cloud Run コンテナ インスタンスから、コンテナ インスタンス メタデータ サーバーを使用してアクセス トークンを取得できます。
  • SERVICE-NAME は、サービスの名前に置き換えます。
  • REGION: サービスの Google Cloud リージョン。
  • PROJECT-ID は、Google Cloud プロジェクト ID に置き換えます。