リクエスト タイムアウトの設定(サービス)

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Cloud Run サービスの場合、リクエスト タイムアウトの設定には、Cloud Run にデプロイされたサービスがレスポンスを返すまでの制限時間を指定します。指定した時間内にレスポンスが返されない場合、リクエストが終了し、エラー 504 が返されます。

タイムアウトはデフォルトで 5 分に設定されていますが、60 分まで延長できます。

この設定は、コンテナ イメージのデプロイ時に変更できます。また、サービスの構成を更新して変更することもできます。

Cloud Run のリクエスト タイムアウトを変更するだけでなく、使用言語のフレームワークに独自のリクエスト タイムアウト設定があるかどうか確認する必要があります。

リクエスト タイムアウトの設定と更新

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、Google Cloud コンソール、gcloud コマンドライン、または YAML ファイルを使用してリクエスト タイムアウトを設定できます。

コンソール

  1. Cloud Run に移動します

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、接続、セキュリティ] をクリックしてサービス構成ページを開きます。

  4. [コンテナ] タブをクリックします。

    画像

  5. [リクエスト タイムアウト] フィールドに、使用するタイムアウト値を秒単位で入力します。13600 秒または 1~60 分の範囲の値を使用します。

  6. [作成] または [デプロイ] をクリックします。

コマンドライン

特定のリビジョンのリクエスト タイムアウトを更新するには、次のコマンドを使用します。

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 など)に置き換えます。
  • [TIMEOUT] は、必要な時間に置き換えます。整数値を使用することも、期間で指定することもできます。たとえば、1m20s は 1 分 20 秒を意味します。整数値の場合、単位は秒になります。60 分以内の値を指定する必要があります。

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. timeoutSeconds 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
          timeoutSeconds: VALUE

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

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)で置き換えます。
    • VALUE は、必要なタイムアウト(秒単位)にします。
    • REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml

Terraform

Terraform 構成の template.specgoogle_cloud_run_service リソースに次の内容を追加します。300 は、サービスで必要なリクエスト タイムアウト(秒)に置き換えます。

# Timeout
# https://cloud.google.com/run/docs/configuring/request-timeout
timeout_seconds = 300

Google Cloud プロジェクトで Terraform 構成を適用するには、次の手順を行います。

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用する Google Cloud プロジェクトを設定します。
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    
  3. ディレクトリを作成し、そのディレクトリで新規ファイルを開きます。ファイル名には .tf 拡張子が必要です(例: main.tf)。
    mkdir DIRECTORY && cd DIRECTORY && nano main.tf
    
  4. サンプルを main.tf にコピーします。
  5. 環境に適用するサンプル パラメータを確認し、変更します。
  6. Ctrl-x を押してから y を押して、変更を保存します。
  7. Terraform を初期化します。
    terraform init
  8. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  9. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」のメッセージが表示されるまで待ちます。

  10. Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

リクエスト タイムアウトの設定を表示する

Cloud Run サービスの現在のリクエスト タイムアウト設定を表示するには:

コンソール

  1. Cloud Run に移動します

  2. 目的のサービスをクリックして、[サービスの詳細] ページを開きます。

  3. [変更内容] タブをクリックします。

  4. 右側の詳細パネルの [コンテナ] タブに、リクエスト タイムアウト設定が表示されます。

コマンドライン

  1. 次のコマンドを使用します。

    gcloud run services describe SERVICE
  2. 返された構成で、リクエスト タイムアウト設定を見つけます。