장기 실행 작업 관리

이 페이지에서는 Cloud Healthcare API 장기 실행 작업의 수명 주기를 관리하는 방법을 설명합니다.

메서드 호출이 완료되는 데 오래 걸릴 수 있으면 장기 실행 작업(LRO)이 반환됩니다. Cloud Healthcare API는 여러 메서드에 대해 LRO를 만듭니다. 한 예시는 projects.locations.datasets.create 데이터 세트를 만드는 메서드입니다. projects.locations.datasets.create가 호출되면 Cloud Healthcare API가 데이터 세트 만들기 상태를 추적하기 위해 LRO를 만듭니다. Cloud Healthcare API는 LRO 상태를 추적할 수 있게 해주는 작업 API를 제공합니다. 또한 LRO를 나열할 수 있습니다.

LRO는 데이터 세트 수준에서 관리됩니다. projects.locations.datasets.dicomStores.import와 같이 LRO를 반환하는 메서드를 호출하는 경우, LRO 상태를 보려면 DICOM 저장소의 상위 데이터 세트에 요청을 수행합니다.

REST API 외에도 다음 소스는 장기 실행 작업을 반환하는 메서드에 나열된 메서드를 호출할 때 장기 실행 작업을 생성합니다.

Google Cloud Console, gcloud 명령줄 도구, REST API를 사용하여 Cloud Healthcare API LRO를 관리할 수 있습니다.

LRO 레코드는 LRO가 완료된 후 약 30일 동안 유지됩니다. 이후에는 LRO를 보거나 나열할 수 없습니다.

장기 실행 작업을 반환하는 메서드

다음 메서드는 LRO를 반환합니다.

데이터 세트 작업:

DICOM 작업:

FHIR 연산:

장기 실행 작업에 대한 세부정보 확인하기

다음 샘플은 LRO에 대한 세부정보를 확인하는 방법을 보여줍니다.

LRO에 대한 세부정보를 가져올 때 응답에 표시되는 Cloud Healthcare API의 버전은 LRO를 시작한 메서드의 API 버전과 동일합니다.

Console

gcloud 도구 또는 LRO를 반환하는 API를 사용하여 메서드를 호출한 다음에는 Cloud Console에서 LRO에 대한 세부정보를 볼 수 있습니다.

  1. Cloud Console에서 데이터 세트 페이지로 이동합니다.

    데이터세트 페이지로 이동

  2. 보려는 장기 실행 작업이 포함된 데이터 세트의 이름을 클릭합니다.
  3. 작업을 클릭합니다.

데이터 세트에 있는 LRO 및 해당 상태 목록이 표시됩니다. Cloud Logging의 오류 로그를 보려면 마지막 열에 있는 추가 정보 아이콘을 클릭한 후 Stackdriver에서 세부정보 보기를 클릭합니다. 자세한 내용은 Cloud Logging에서 오류 로그 보기를 참조하세요.

gcloud

gcloud healthcare datasets deidentify 호출 후 다음 응답이 수신되었다고 가정해보세요.

Request issued for: [DATASET_ID]
Waiting for operation [OPERATION_ID] to complete...

응답에는 Cloud Healthcare API로 작업 ID가 포함된 LRO가 생성된 것이 표시됩니다. 이 명령어는 완료될 때까지 계속 실행되고, 완료되면 다음을 출력합니다.

Request issued for: [DATASET_ID]
Waiting for operation [OPERATION_ID] to complete...done
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID

LRO에 대해 세부정보를 가져오려면 데이터 세트 ID 및 작업 ID를 지정하여 gcloud healthcare operations describe 명령어를 실행합니다.

gcloud healthcare operations describe OPERATION_ID --dataset=DATASET_ID

또한 장기 실행 데이터베이스 작업을 나열하여 작업 ID를 검색할 수 있습니다.

요청이 성공하면 명령어 프롬프트에 작업 세부정보가 표시됩니다.

done: true
metadata:
'@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata
apiMethodName: google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset
createTime: 'CREATE_TIME'
endTime: 'END_TIME'
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
response:
'@type': type.googleapis.com/google.cloud.healthcare.v1.dataset.DeidentifySummary

API

LRO 상태를 가져오고 세부정보를 보려면 projects.locations.datasets.operations.get 메서드를 사용합니다.

curl

LRO에 대해 세부정보를 가져오려면 GET 요청을 수행하고 데이터 세트 이름, 작업 ID, 액세스 토큰을 제공합니다.

projects.locations.datasets.deidentify 호출 후 다음 응답이 수신되었다고 가정해보세요.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

name 값은 Cloud Healthcare API로 projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID라는 LRO가 생성된 것을 보여줍니다.

다음 샘플은 GET 요청을 사용해서 curl을 사용하여 LRO에 대한 세부정보를 가져오는 방법을 보여줍니다.

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

또한 장기 실행 데이터베이스 작업을 나열하여 LRO를 검색할 수 있습니다.

요청이 성공하면 서버가 JSON 형식으로 응답을 반환합니다. LRO가 완료되면 done 필드가 true로 설정됩니다.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "...",
    "successStoreCount": "SUCCESS_STORE_COUNT"
  }
}

LRO를 폴링하려면 작업이 완료될 때까지 projects.locations.datasets.operations.get 메서드를 반복해서 호출합니다. 각 폴링 요청 사이에 백오프를 사용합니다(예: 10초).

PowerShell

LRO에 대해 세부정보를 가져오려면 GET 요청을 수행하고 데이터 세트 이름, 작업 ID, 액세스 토큰을 제공합니다.

projects.locations.datasets.deidentify 호출 후 다음 응답이 수신되었다고 가정해보세요.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

name 값은 Cloud Healthcare API로 projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID라는 LRO가 생성된 것을 보여줍니다.

다음 샘플은 GET 요청을 사용해서 Windows PowerShell을 사용하여 LRO에 대해 세부정보를 가져오는 방법을 보여줍니다.

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

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

또한 장기 실행 데이터베이스 작업을 나열하여 LRO를 검색할 수 있습니다.

요청이 성공하면 서버가 JSON 형식으로 응답을 반환합니다. LRO가 완료되면 done 필드가 true로 설정됩니다.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "...",
    "successStoreCount": "SUCCESS_STORE_COUNT"
  }
}

LRO를 폴링하려면 작업이 완료될 때까지 projects.locations.datasets.operations.get 메서드를 반복해서 호출합니다. 각 폴링 요청 사이에 백오프를 사용합니다(예: 10초).

장기 실행 작업 나열

다음 샘플은 데이터 세트에서 장기 실행 작업을 나열하는 방법을 보여줍니다.

Console

gcloud 도구 또는 LRO를 반환하는 API를 사용하여 메서드를 호출한 후 Cloud Console에서 LRO 목록을 볼 수 있습니다.

  1. Cloud Console에서 데이터 세트 페이지로 이동합니다.

    데이터세트 페이지로 이동

  2. 보려는 장기 실행 작업이 포함된 데이터 세트의 이름을 클릭합니다.
  3. 작업을 클릭합니다.

데이터 세트에 있는 LRO 및 해당 상태 목록이 표시됩니다. Cloud Logging의 오류 로그를 보려면 마지막 열에 있는 추가 정보 아이콘을 클릭한 후 Stackdriver에서 세부정보 보기를 클릭합니다. 자세한 내용은 Cloud Logging에서 오류 로그 보기를 참조하세요.

gcloud

데이터 세트의 LRO를 나열하려면 gcloud healthcare operations list 명령어를 실행합니다.

gcloud healthcare operations list \
  --dataset=DATASET_ID \
  --location=LOCATION

요청이 성공하면 명령어 프롬프트가 LRO를 나열합니다.

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

API

데이터 세트의 LRO를 나열하려면 projects.locations.datasets.operations.list 메서드를 사용합니다.

curl

데이터 세트의 LRO를 나열하려면 GET 요청을 수행하고 데이터 세트 이름 및 액세스 토큰을 제공합니다. 다음 샘플은 curl을 사용하는 GET 요청을 보여줍니다.

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

요청이 성공하면 서버가 JSON 형식으로 응답을 반환합니다.

{
  "operations": [
    {
      "name": "PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
        "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
        "createTime": "CREATE_TIME",
        "endTime": "END_TIME",
        "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
      },
      "done": true,
      "response": {
        "@type": "...",
        "successStoreCount": "SUCCESS_STORE_COUNT"
      }
    },
    ...
  ]
}

PowerShell

데이터 세트의 LRO를 나열하려면 GET 요청을 수행하고 데이터 세트 이름 및 액세스 토큰을 제공합니다. 다음 샘플은 Windows PowerShell을 사용한 GET 요청을 보여줍니다.

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

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations" | Select-Object -Expand Content

요청이 성공하면 서버가 JSON 형식으로 응답을 반환합니다.

{
  "operations": [
    {
      "name": "PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
        "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
        "createTime": "CREATE_TIME",
        "endTime": "END_TIME",
        "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
      },
      "done": true,
      "response": {
        "@type": "...",
        "successStoreCount": "SUCCESS_STORE_COUNT"
      }
    },
    ...
  ]
}

장기 실행 작업 취소

다음 샘플은 데이터 세트에서 LRO를 취소하는 방법을 보여줍니다.

Console

gcloud 도구 또는 LRO를 반환하는 API를 사용하여 메서드를 호출한 후 계속 처리되는 동안 Cloud Console에서 취소할 수 있습니다.

  1. Cloud Console에서 데이터 세트 페이지로 이동합니다.

    데이터세트 페이지로 이동

  2. 취소하려는 장기 실행 작업이 포함된 데이터 세트의 이름을 클릭합니다.
  3. 작업을 클릭합니다.
  4. 관련 LRO에 대해 마지막 열의 추가 정보 메뉴에서 작업 중지를 선택합니다.

API

데이터 세트의 LRO를 취소하려면 projects.locations.datasets.operations.cancel 메서드를 사용합니다.

curl

데이터 세트에서 LRO를 취소하려면 POST 요청을 수행하고 다음 정보를 지정합니다.

  • 데이터 세트의 이름
  • 액세스 토큰
  • 작업 ID
  • cancel 매개변수

다음 샘플은 curl을 사용하는 POST 요청을 보여줍니다.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID:cancel"

취소 요청의 상태를 보려면 GET 요청을 수행하고 다음 정보를 지정합니다.

  • 데이터 세트의 이름
  • 액세스 토큰
  • 작업 ID

다음 샘플은 curl을 사용하는 GET 요청을 보여줍니다.

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

요청이 성공하면 서버가 JSON 형식으로 응답을 반환합니다.

{
  "name": "PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "API_METHOD_NAME",
    "createTime": "OPERATION_START_TIME",
    "endTime": "OPERATION_END_TIME",
    "cancelRequested": true,
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "error": {
    "code": 1,
    "message": "Operation cancelled by user."
  }
}

PowerShell

데이터 세트에서 LRO를 취소하려면 POST 요청을 수행하고 다음 정보를 지정합니다.

  • 데이터 세트의 이름
  • 액세스 토큰
  • 작업 ID
  • cancel 매개변수

다음 샘플은 Windows PowerShell을 사용한 POST 요청을 보여줍니다.

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

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID:cancel" | Select-Object -Expand Content

취소 요청의 상태를 보려면 GET 요청을 수행하고 다음 정보를 지정합니다.

  • 데이터 세트의 이름
  • 액세스 토큰
  • 작업 ID

다음 샘플은 Windows PowerShell을 사용한 GET 요청을 보여줍니다.

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

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

요청이 성공하면 서버가 JSON 형식으로 응답을 반환합니다.

{
  "name": "PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "API_METHOD_NAME",
    "createTime": "OPERATION_START_TIME",
    "endTime": "OPERATION_END_TIME",
    "cancelRequested": true,
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "error": {
    "code": 1,
    "message": "Operation cancelled by user."
  }
}