Cloud Run インスタンスを作成して管理する

このページでは、個別にアドレス指定可能なシングルトン Cloud Run インスタンスを作成して管理する方法について説明します。受信トラフィックに基づいてスケーリングする Cloud Run サービスとは異なり、インスタンスはライフサイクル遷移(作成、停止、開始、更新、削除)を使用して手動で管理する専用のコンピューティング コンテナです。

サポートされるリージョン

Cloud Run インスタンスは、サポートされているリージョンのいずれかに作成できます。ただし、次のリージョンは除きます。

  • europe-west1
  • us-central1
  • us-east1

始める前に

  1. 設定ページの説明に従って、Cloud Run に新しいプロジェクトを設定します。

  2. Cloud Run Admin API を有効にします。

    gcloud services enable run.googleapis.com
    
  3. gcloud コンポーネントを最新バージョンに更新します。

    gcloud components update
  4. ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。

必要なロール

Cloud Run インスタンスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

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

インスタンスの作成

コンテナ イメージをデプロイして、新しいインスタンスを作成できます。名前を指定しない場合は、自動的に生成されます。

gcloud

gcloud beta run instances create コマンドを使用して新しい Cloud Run インスタンスを作成するには:

gcloud beta run instances create INSTANCE_NAME \
    --image IMAGE_URL \
    --region REGION

gcloud beta run instances deploy コマンドを使用して新しい Cloud Run インスタンスを作成するには:

gcloud beta run instances deploy INSTANCE_NAME \
    --image IMAGE_URL \
    --region REGION

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

  • INSTANCE_NAME: 作成するインスタンスの名前。インスタンス名は、プロジェクトとリージョン内で一意である必要があります。既存の Cloud Run インスタンスまたはサービスと同じ名前のインスタンスを作成することはできません。
  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/instances:latest など)。
  • REGION: インスタンスを実行している Google Cloud リージョン(europe-west1 など)。

クライアント ライブラリ

コードから新しいインスタンスを作成するには:

REST API

新しい Cloud Run インスタンスを作成するには、instances エンドポイントに POST HTTP リクエストを送信します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "containers": [{
      "image": "IMAGE_URL",
      "ports": [{"containerPort": PORT}]
    }],
    "ingress": "INGRESS_TRAFFIC_ALL",
    "invokerIamDisabled": true,
    "timeout": "3600s"
  }' \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances?instance_id=INSTANCE_NAME"

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

  • IMAGE_URL: コンテナ イメージの URL。
  • PORT: コンテナがリッスンするポート。
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • REGION: デプロイの Google Cloud リージョン。
  • INSTANCE_NAME: 新しいインスタンスの名前。

インスタンスを作成すると、インスタンスには次の形式の Cloud Run URL が割り当てられます。

https://INSTANCE_NAME-PROJECT_NUMBER.REGION.run.app

インスタンスの更新

コンテナ イメージ、ポート、環境変数などのインスタンスを更新すると、インスタンスが再起動します。

gcloud

gcloud beta run instances update コマンドを使用して Cloud Run インスタンスを更新するには:

gcloud beta run instances update INSTANCE_NAME \
    --image NEW_IMAGE_URL \
    --region REGION

gcloud beta run instances deploy コマンドを使用して Cloud Run インスタンスを更新するには:

gcloud beta run instances deploy INSTANCE_NAME \
    --image IMAGE_URL \
    --region REGION

REST API

API から Cloud Run インスタンス構成を更新するには、インスタンス URI エンドポイントに PATCH HTTP リクエストを送信します。

curl -H "Content-Type: application/json" \
  -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME"

インスタンスの停止

実行中の Cloud Run インスタンスを停止するには、停止コマンドまたはメソッドを使用します。

gcloud

インスタンスを停止するには:

gcloud beta run instances stop INSTANCE_NAME \
    --region REGION

クライアント ライブラリ

コードから実行中のインスタンスを停止するには:

REST API

インスタンスを停止するには、:stop デコレータを使用して POST HTTP リクエストを送信します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME:stop"

インスタンスを起動または再起動する

start コマンドまたはメソッドを使用して、停止したインスタンスを起動するか、既存のインスタンスを強制的に再起動します。

gcloud

インスタンスを起動または再起動するには:

gcloud beta run instances start INSTANCE_NAME \
    --region REGION

クライアント ライブラリ

コードから停止されたインスタンスを起動するには:

REST API

インスタンスを起動するには、:start デコレータを使用して POST HTTP リクエストを送信します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME:start"

プロジェクト内のインスタンスのリストを表示する

プロジェクト内のアクティブなインスタンスと非アクティブなインスタンスをすべて表示できます。

gcloud

特定のリージョン内のインスタンスを一覧表示するには:

gcloud beta run instances list \
    --region REGION

REGION は、インスタンスを実行している Google Cloud リージョンに置き換えます。

クライアント ライブラリ

コードからアクティブなインスタンスと非アクティブなインスタンスを一覧表示するには:

REST API

インスタンスのリストを取得するには、GET HTTP リクエストを送信します。

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances"

インスタンスの詳細情報を表示

describe コマンドまたはメソッドを使用して、構成の詳細と現在のステータスを表示します。

gcloud

インスタンスの説明を取得するには:

gcloud beta run instances describe INSTANCE_NAME \
    --region REGION

クライアント ライブラリ

コードからインスタンス構成の詳細とステータスを表示するには:

REST API

インスタンスの詳細を取得するには、GET HTTP リクエストを送信します。

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME"

インスタンスを削除する

インスタンスを削除すると、構成、メタデータ、パブリック直接 URL マッピング、ID ロールがプロジェクトから完全に削除されます。

gcloud

インスタンスを削除するには:

gcloud beta run instances delete INSTANCE_NAME \
    --region REGION

クライアント ライブラリ

コードからインスタンスを削除するには:

REST API

インスタンスを削除するには、DELETE HTTP リクエストを送信します。

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_NAME"

次のステップ