長時間実行オペレーションの管理

このページでは、Cloud Life Sciences API の長時間実行オペレーション(LRO)のライフサイクルを管理する方法を説明します。

長時間実行オペレーションは、メソッド呼び出しが完了するまでに時間がかかる場合に返されます。Cloud Life Sciences API は、projects.locations.pipelines.run または gcloud beta lifesciences pipelines run を呼び出すたびに LRO を作成します。LRO はパイプラインのステータスを追跡します。

Cloud Life Sciences API で提供されるオペレーション API を使用して、LRO のステータスを確認できます。また、LRO の一覧表示ポーリングキャンセルも行えます。

Cloud Life Sciences API を直接呼び出すと、LRO は Google Cloud のプロジェクト レベルとロケーション レベルで管理されます。LRO に対して直接リクエストを行う場合は、Google Cloud プロジェクトと LRO を実行しているロケーションを含めます。

gcloud ツールを設定している場合、gcloud ツールを使用して Cloud Life Sciences API を呼び出すときに、LRO に対するリクエストにオペレーション ID のみを含める必要があります。Google Cloud プロジェクト ID と LRO が実行されているロケーションは、オペレーション ID から推測されます。

Cloud Life Sciences の LRO を管理するには、Google Cloud Console または gcloud コマンドライン ツールを使用するか、API を直接呼び出します。Cloud Console には、gcloud ツールを使用して、Cloud Life Sciences API を直接呼び出す場合に使用できる LRO のすべての詳細が含まれているわけではありません。

LRO のレコードは LRO が終了した後、約 30 日間保存されます。それ以降は LRO を表示したり、一覧表示したりできません。

長時間実行オペレーションの詳細の取得

次のサンプルでは、LRO の詳細を取得する方法を示しています。

Console

  1. Cloud Console で、Life Sciences Pipelines ページに移動します。

    Life Sciences Pipelines ページに移動

  2. LRO とそのステータスの一覧が表示されます。探している LRO を見つけて、そのステータスを表示します。ステータス列に使用できる値は、RunningCompletedFailed です。

gcloud

gcloud beta lifesciences pipelines run を呼び出した後に次のレスポンスを受け取ったとします。

Running [projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID].

このレスポンスは、Cloud Life Sciences API が、オペレーション ID がある LRO を作成したことを示しています。

LRO の詳細を確認するには、オペレーション ID を指定して gcloud beta lifesciences operations describe コマンドを実行します。

gcloud beta lifesciences operations describe OPERATION_ID

オペレーション ID は、長時間実行データベース オペレーションの一覧表示で取得することもできます。

リクエストが成功すると、コマンド プロンプトにオペレーションの詳細が表示されます。ここに示されている出力値は、クイックスタートのパイプライン オペレーションから取得したものです。

API

LRO のステータスを取得し、詳細を確認するには、projects.locations.operations.get メソッドを呼び出します。

REST とコマンドライン

projects.locations.pipelines.run を呼び出した後に次のレスポンスを受け取ったとします。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID"
}

このレスポンスの name 値は、Cloud Life Sciences API が、projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID という名前の LRO を作成したことを示しています。

長時間実行オペレーションの一覧表示によって LRO 名を取得することもできます。

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID
  • LOCATION: LRO を実行しているロケーション
  • OPERATION_ID:LRO の識別子

HTTP メソッドと URL:

GET https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

PowerShell

次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content

API Explorer

メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須項目を入力して、[Execute] をクリックします。

次のような JSON レスポンスが返されます。ここに示されている出力値は、クイックスタートのパイプライン オペレーションから取得したものです。

長時間実行オペレーションの一覧表示

次のサンプルでは、Google Cloud のプロジェクトとロケーションで LRO を一覧表示する方法を示しています。

Console

  1. Cloud Console で、Life Sciences Pipelines ページに移動します。

    Life Sciences Pipelines ページに移動

  2. LRO とそのステータスの一覧が表示されます。ステータス列に使用できる値は、RunningCompletedFailed です。

gcloud

Google Cloud のプロジェクトとロケーションで LRO を一覧表示するには、gcloud beta lifesciences operations list コマンドを実行します。

gcloud beta lifesciences operations list

リクエストが成功すると、コマンド プロンプトで LRO が一覧表示されます。

ID                    LOCATION     DONE
OPERATION_ID          LOCATION       {TRUE|FALSE}
...

API

Google Cloud のプロジェクトとロケーションで LRO を一覧表示するには、projects.locations.operations.list メソッドを呼び出します。

REST とコマンドライン

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID
  • LOCATION:1 つ以上の LRO を実行しているロケーション

HTTP メソッドと URL:

GET https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations

PowerShell

次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations" | Select-Object -Expand Content

API Explorer

メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドに入力して、[Execute] をクリックします。

次のような JSON レスポンスが返されます。

{
  "operations": [
    {
      "name": "PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.lifesciences.v2beta.Metadata",
        "pipeline": {
          ...
        }
        "createTime": "CREATE_TIME",
        "startTime": "START_TIME",
        "endTime": "END_TIME"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/cloud.lifesciences.pipelines.RunPipelineResponse"
      }
    },
    ...
  ]
}

長時間実行オペレーションのポーリング

次のサンプルでは、LRO のステータスをポーリングする方法を示しています。

Console

  1. Cloud Console で、Life Sciences Pipelines ページに移動します。

    Life Sciences Pipelines ページに移動

  2. LRO とそのステータスの一覧が表示されます。更新アイコンをクリックすると、LRO の更新されたステータスが表示されます。

gcloud

パイプラインを開始した後、LRO をポーリングするには、gcloud beta lifesciences operations wait コマンドを実行します。

gcloud beta lifesciences operations wait OPERATION_ID

リクエストが成功すると、コマンド プロンプトに次のように表示されます。

Waiting for [projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID] to complete...

オペレーションが完了すると、コマンド プロンプトに次のように表示されます。

Waiting for [projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID] to complete...done.

API

LRO をポーリングするには、オペレーションか完了するまで projects.locations.operations.getメソッドを繰り返し呼び出します。各ポーリング リクエスト間でバックオフ(たとえば、10 秒)を使用します。

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID
  • LOCATION: LRO を実行しているロケーション
  • OPERATION_ID:LRO の識別子

HTTP メソッドと URL:

GET https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行して、10 秒ごとに LRO のステータスをポーリングします。

while true; \
    do curl -X GET \
    -H "Authorization: Bearer "$(gcloud auth print-access-token) \
    "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"; \
    sleep 10; \
    done

次のような JSON レスポンスが返されます。ここに示されている出力値は、クイックスタートのパイプライン オペレーションから取得したものです。オペレーションが終了すると、レスポンスに "done": trueendTime フィールドの値が含まれます。

PowerShell

次のコマンドを実行して、10 秒ごとに LRO のステータスをポーリングします。

$cred = gcloud auth print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Do {
  Invoke-WebRequest `
    -Method Get `
    -Headers $headers `
    -Uri "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content
sleep 10
}

while ($true)

次のような JSON レスポンスが返されます。ここに示されている出力値は、クイックスタートのパイプライン オペレーションから取得したものです。オペレーションが終了すると、レスポンスに "done": trueendTime フィールドの値が含まれます。

長時間実行オペレーションのキャンセル

以下のサンプルでは、LRO の実行中に LRO をキャンセルする方法を示しています。

Console

  1. Cloud Console で、Life Sciences Pipelines ページに移動します。

    Life Sciences Pipelines ページに移動

  2. キャンセルする LRO の ID をクリックします。
  3. キャンセル アイコンをクリックします。

gcloud

LRO をキャンセルするには、gcloud beta lifesciences operations cancel コマンドを実行します。

gcloud beta lifesciences operations cancel OPERATION_ID

リクエストが成功すると、キャンセルのプロンプトが表示されます。

Operation [OPERATION_ID] will be canceled.

Do you want to continue (Y/n)?  Y

確認するには、「Y」と入力してください。キャンセルを確認すると、レスポンスで空の本文が返されます。

Operation [OPERATION_ID] will be canceled.

Do you want to continue (Y/n)?  Y

{}

API

LRO をキャンセルするには、projects.locations.operations.cancel メソッドを呼び出します。

REST とコマンドライン

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID
  • LOCATION: LRO を実行しているロケーション
  • OPERATION_ID:LRO の識別子

HTTP メソッドと URL:

POST https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel

PowerShell

次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel" | Select-Object -Expand Content

API Explorer

メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドに入力して、[Execute] をクリックします。

次のような JSON レスポンスが返されます。

{}