Cloud Run サービスの場合、リクエスト タイムアウトの設定には、Cloud Run にデプロイされたサービスがレスポンスを返すまでの制限時間を指定します。指定した時間内にレスポンスが返されない場合、リクエストが終了し、エラー 504 が返されます。リクエストを処理したコンテナ インスタンスは終了しません。コンテナまたはコードは、終了したリクエストの処理を続行し、他のリクエストの処理を行っている可能性があります。
タイムアウト期間
タイムアウトはデフォルトで 5 分(300 秒)に設定されていますが、60 分(3,600 秒)まで延長できます。
この設定は、コンテナ イメージのデプロイ時に変更できます。また、サービス構成を更新して変更することもできます。
Cloud Run のリクエスト タイムアウトを変更するだけでなく、使用言語のフレームワークに独自のリクエスト タイムアウト設定があるかどうか確認する必要があります。Cloud Run サービスの一部のクライアントでは、制限がより厳格なタイムアウトが適用される場合もあります。
必要なロール
Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
Cloud Run サービスに対する Cloud Run デベロッパー(
roles/run.developer
)ロール -
サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)ロール
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
リクエスト タイムアウトの設定と更新
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、Google Cloud コンソール、gcloud コマンドライン、または YAML ファイルを使用してリクエスト タイムアウトを設定できます。
コンソール
Google Cloud コンソールで Cloud Run に移動します。
[コンテナをデプロイ] をクリックし、[サービス] を選択して、新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。
[コンテナ] タブをクリックします。
- [リクエスト タイムアウト] フィールドに、使用するタイムアウト値を秒単位で入力します。
1
~3600
秒または 1~60
分の範囲の値を使用します。
- [リクエスト タイムアウト] フィールドに、使用するタイムアウト値を秒単位で入力します。
[作成] または [デプロイ] をクリックします。
gcloud
特定のリビジョンのリクエスト タイムアウトを更新するには、次のコマンドを使用します。
gcloud run services update SERVICE --timeout=TIMEOUT
次のように置き換えます。
- SERVICE は、実際のサービスの名前に置き換えます。
TIMEOUT は、応答期限に置き換えます。整数値または期間を示す絶対値を使用します。たとえば、
1m20s
は 1 分 20 秒を表します。整数値を使用すると、単位は秒であるとみなされます。60 分未満の値を指定する必要があります。
デプロイ中に、次のコマンドを使用してリクエスト タイムアウトを設定することもできます。
gcloud run deploy --image IMAGE_URL --timeout=TIMEOUT
次のように置き換えます。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。 - TIMEOUT は、応答期限に置き換えます。整数値または期間を示す値を使用します。たとえば、
1m20s
は 1 分 20 秒を表します。整数値を使用すると、単位は秒であるとみなされます。60 分未満の値を指定する必要があります。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
timeoutSeconds
属性を更新します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE timeoutSeconds: VALUE
次のように置き換えます。
- SERVICE は、Cloud Run サービスの名前に置き換えます。
- IMAGE_URL は、コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。 - VALUE は、選択したタイムアウト(秒単位)に置き換えます。
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Terraform 構成の template
の google_cloud_run_v2_service
リソースに次の内容を追加します。300s
は、サービスで必要なリクエスト タイムアウトに置き換えます。
リクエスト タイムアウトの設定を表示する
Cloud Run サービスの現在のリクエスト タイムアウト設定を表示するには:
コンソール
Google Cloud コンソールで Cloud Run に移動します。
目的のサービスをクリックして、[サービスの詳細] ページを開きます。
[変更内容] タブをクリックします。
右側の詳細パネルの [コンテナ] タブに、リクエスト タイムアウト設定が表示されます。
gcloud
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、リクエスト タイムアウト設定を見つけます。