このページでは、サービスを作成する方法とサービスの情報を表示する方法について説明します。サービスは 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 コマンドラインを使用して、プロジェクトで使用可能なサービスの一覧を表示できます。
コンソール
サービスリストを表示するには:
Google Cloud コンソールで、[Cloud Run] に移動します。
プロジェクトに表示されたサービスのリストを調べます。
gcloud
プロジェクトのサービスを一覧表示するには:
gcloud run services list
サービスには URL が関連付けられています。
割り当てられたラベルなど、サービス定義のプロパティを基準にこのリストをフィルタできます。
Cloud Code
Cloud Code でサービスを一覧表示するには、IntelliJ と Visual 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 コンソールを使用して、プロジェクトで使用可能な関数のリストを表示できます。
コンソール
サービスリストの関数をフィルタするには:
Google Cloud コンソールで、[Cloud Run] に移動します。
プロジェクトに表示されたサービスのリストを調べます。
[サービスをフィルタ] > [デプロイタイプ] > [関数] を選択します。
以前に Cloud Functions(第 2 世代 API)を使用して関数をデプロイした場合は、[デプロイしたユーザー] 列に「Cloud Functions」と表示されます。
サービスをコピーする
Google Cloud コンソールまたは YAML を使用して、既存のサービスのコピーを作成できます。名前やリージョンなど、コピーに含まれる任意の要素を変更できます。
コンソール
サービスをコピーするには:
Google Cloud コンソールで、[Cloud Run] に移動します。
プロジェクトに関して表示されるサービスのリストから、コピーするサービスを選択します。
[コピー] をクリックします。
サービスのコピーのページで、必要に応じて値(リージョンなど)を設定または変更します。同じリージョンを保持する場合は、サービスに新しい名前を付ける必要があります。
[作成] をクリックするとコピーが作成され、新しいサービス名を使ってそれがデプロイされます。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
必要に応じてサービスの構成を変更します。
apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: ... name: SERVICE ... spec: template: metadata: annotations: ... name: REVISION
- コピーを別のリージョンにデプロイしない場合は、SERVICE を、そのコピーに使用する名前に置き換えます。コピーを別のリージョンにデプロイする場合は、元の名前を使用できます。
- REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります。
SERVICE-
で始まる- 小文字、数字、
-
のみが使用されている - 末尾が
-
ではない - 63 文字以内である
次のコマンドを使用してサービスをコピーします。
gcloud run services replace service.yaml
コピーを別のリージョンにデプロイするには、
--region
フラグを使用します。
サービスの詳細を表示する
サービスの詳細を表示するには、次の操作を行います。
コンソール
サービスの詳細を表示するには:
Google Cloud コンソールで、[Cloud Run] に移動します。
表示されているサービスの一覧で目的のサービスをクリックし、サービスの詳細ビューを開きます。
gcloud
サービスの詳細を表示するには:
gcloud run services describe SERVICESERVICE は、サービスの名前に置き換えます。
--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 でサービスの詳細を表示するには、IntelliJ と Visual 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 が使用されます。
コンソール
サービスを削除するには:
Google Cloud コンソールで、[Cloud Run] に移動します。
削除するサービスをサービスリストで探し、そのチェックボックスをクリックして選択します。
[削除] をクリックします。これにより、サービスのすべてのリビジョンが削除されます。
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 に置き換えます。