문제 해결

API not enabled or service account deleted 오류

Cloud Life Sciences API를 호출할 때 다음 오류 중 하나 또는 둘 모두가 발생할 수 있습니다.

  • API not enabled or service account deleted
  • checking service account permission: Account deleted: PROJECT_ID

이 문제를 해결하려면 다음 단계를 순서대로 완료하세요.

  1. Cloud Life Sciences 및 Compute Engine API가 사용 설정되어 있는지 확인합니다.
  2. Cloud Life Sciences Service Agent 서비스 계정이 올바르게 구성되어 있는지 확인합니다.
  3. Compute Engine 기본 서비스 계정이 올바르게 구성되어 있는지 확인합니다.

Cloud Life Sciences 및 Compute Engine API 사용

Cloud Life Sciences 및 Compute Engine API가 Google Cloud 프로젝트에 사용 설정되어 있는지 확인합니다.

  1. Cloud Life Sciences API를 사용 설정합니다.

    Cloud Life Sciences API 사용 설정

  2. Compute Engine API를 사용 설정합니다.

    Compute Engine API 사용 설정

프로젝트에 Google Cloud API를 사용 설정할 권한이 없다는 오류가 발생하면 API 사용 설정 및 사용 중지를 참조하세요.

Cloud Life Sciences 서비스 계정 또는 Cloud Life Sciences Service Agent 역할 누락

Cloud Life Sciences Service Agent는 Google Cloud 프로젝트에서 파이프라인을 처음 실행하면 자동으로 생성됩니다. Google Cloud CLI 또는 REST 및 RPC API를 사용하여 파이프라인을 실행할 수 있습니다. Cloud Life Sciences Service AgentGoogle 관리형 서비스 계정입니다. 서비스 계정은 삭제할 수 없지만 Identity and Access Management 페이지에 표시되지 않을 수 있습니다. 이로 인해 Cloud Life Sciences API에 오류가 발생할 수 있습니다.

Cloud Life Sciences API가 제대로 작동하고 Compute Engine VM에서 파이프라인 실행과 같은 작업을 수행하려면 Cloud Life Sciences Service Agent 서비스 계정이 있어야 하며 Life Sciences Service Agent IAM 역할이 있어야 합니다.

다음과 같은 문제가 발생하면 Cloud Life Sciences Service Agent 서비스 계정을 다시 만들거나 Life Sciences Service Agent IAM 역할을 부여하면 됩니다.

  • ID 및 액세스 관리 페이지에서 Cloud Life Sciences Service Agent 서비스 계정을 찾을 수 없습니다.
  • Cloud Business Sciences Service Agent 서비스 계정을 찾을 수 있지만 Life Sciences Service Agent 역할은 포함되지 않습니다.

Google Cloud CLI를 사용하여 lifesciences.serviceAgent 역할을 서비스 계정 식별자(service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount 형식 사용)를 사용하는 Cloud Life Sciences Service Agent 서비스 계정에 추가합니다.

서비스 계정을 다시 생성하거나 Life Sciences Service Agent IAM 역할을 부여하려면 gcloud projects add-iam-policy-binding 명령어를 실행합니다. PROJECT_IDPROJECT_NUMBER를 찾으려면 프로젝트 식별을 참조하세요.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com \
    --role=roles/lifesciences.serviceAgent

요청이 성공하면 명령어 프롬프트에 다음 샘플과 유사한 메시지가 표시됩니다.

Updated IAM policy for project [PROJECT_ID].
bindings:
...
- members:
  - serviceAccount:service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com
  role: roles/lifesciences.serviceAgent
...
etag: VALUE
version: VALUE

Identity and Access Management 페이지로 돌아가서 다음을 확인합니다.

  • Member 열에는 service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount 형식의 서비스 계정 식별자가 포함되어 있습니다.
  • Member 열과 같은 행에 있는 Name 열에는 Cloud Life Sciences Service Agent가 포함되어 있습니다.
  • Member 열과 같은 행에 있는 Role 열에 Life Sciences Service Agent가 포함되어 있습니다.

Compute Engine 기본 서비스 계정 누락

새로 생성된 Google Cloud 프로젝트에는 다음 이메일을 사용하여 식별할 수 있는 Compute Engine 기본 서비스 계정이 포함됩니다.

PROJECT_NUMBER-compute@developer.gserviceaccount.com

서비스 계정이 Google Cloud 프로젝트에 존재해야 합니다. 그렇지 않으면 Cloud Life Sciences API가 Compute Engine VM에서 파이프라인을 실행할 수 없습니다. 프로젝트에서 서비스 계정을 삭제하면 서비스 계정의 사용자 인증 정보를 사용하는 모든 애플리케이션이 실패할 수 있습니다. 실수로 Compute Engine 기본 서비스 계정을 삭제한 경우 30일 이내에 계정을 복구할 수 있습니다. 자세한 내용은 서비스 계정 삭제 취소를 참조하세요.

Cloud Life Sciences API를 인증할 수 없음

gcloud auth application-default login을 사용자 인증 정보로 사용하는 대신 서비스 계정을 사용자 인증 정보로 사용해서 Cloud Life Sciences API로 파이프라인을 실행할 경우에는 서비스 계정에 다음 역할이 포함되어 있는지 확인합니다.

  • roles/lifesciences.workflowsRunner
  • roles/iam.serviceAccountUser

서비스 계정에 이러한 역할을 추가하려면 Google Cloud Console 또는 Google Cloud CLI를 사용하여 다음 단계를 수행합니다.

콘솔

  1. Cloud Life Sciences API를 사용 설정했는지 확인합니다.
  2. Google Cloud Console의 IAM 페이지에서 서비스 계정을 찾습니다.
  3. 서비스 계정과 일치하는 상속 열에서 연필 아이콘을 클릭합니다. 권한 수정 창이 열립니다.
  4. 역할 추가를 클릭한 후 Life Sciences Workflows Runner서비스 계정 사용자 역할을 검색합니다.
  5. 역할을 선택하고 저장을 클릭합니다. 그러면 lifesciences.workflowsRunneriam.serviceAccountUser 역할이 서비스 계정에 추가됩니다.

gcloud

서비스 계정 권한을 추가하려면 gcloud projects add-iam-policy-binding 명령어를 실행합니다. PROJECT_IDPROJECT_NUMBER를 찾으려면 프로젝트 식별을 참조하세요.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@SERVICE_ACCOUNT_ID.iam.gserviceaccount.com \
    --role=roles/lifesciences.workflowsRunner
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@SERVICE_ACCOUNT_ID.iam.gserviceaccount.com \
    --role=roles/iam.serviceAccountUser

애플리케이션 기본 사용자 인증 정보를 사용하여 인증할 수 없음

Cloud Life Sciences API를 호출할 때 '애플리케이션 기본 사용자 인증 정보'를 사용할 수 없다는 오류 메시지가 표시될 수 있습니다.

애플리케이션 기본 자격 증명을 구성하는 방법 또는 애플리케이션 또는 명령어에 인증 자격 증명을 수동으로 전달하는 방법에 대한 자세한 내용은 서버 간 인증을 위한 설정을 참조하세요.

오류 코드

Cloud Life Sciences API는 다음 오류 코드를 반환할 수 있습니다.

RESOURCE EXHAUSTED (8)

코드: 8

상태: RESOURCE_EXHAUSTED

카테고리: 사용자 오류

설명: 리소스가 소진되었습니다. 이는 애플리케이션이 프로젝트 수준 관리자 API 할당량을 소진했음을 나타냅니다.

권장 조치: 작업을 재시도하세요.

FAILED_PRECONDITION (9)

코드: 9

상태: FAILED_PRECONDITION

카테고리: 사용자 오류

전체 오류: Execution failed: while running "[USER_COMMAND_LINE]": unexpected exit status [NUMBER] was not ignored

설명: 사용자 작업이 0이 아닌 종료 상태를 반환하여 작업이 거부되었습니다. 조치에서 표준 오류 출력의 스니펫을 사용하여 문제를 진단할 수 있습니다. Compute Engine 가상 머신(VM)에서 전체 로그를 업로드하려면 다음과 같이 파이프라인 요청을 할 때 ALWAYS_RUN 작업을 사용합니다.

{
  "commands": [
    "-c",
    "gsutil -q cp /google/logs/output gs://CLOUD_STORAGE_BUCKET/output"
  ],
  "entrypoint": "bash",
  "flags": [ "ALWAYS_RUN" ],
  "imageUri": "gcr.io/cloud-genomics-pipelines/io"
}

권장 조치: 문제를 해결하지 않은 상태로 다시 시도하지 마세요.

ABORTED (10)

코드: 10

상태: ABORTED

카테고리: 시스템 오류

전체 오류: The assigned worker has failed to complete the operation

설명: 파이프라인을 실행 중인 Compute Engine VM이 실패했기 때문에 작업이 중단되었습니다. 종료되기 전에 선점되어 상태를 보고할 수 없었기 때문일 수 있습니다.

권장 조치: 작업을 재시도하세요. 오류가 지속적으로 발생하면 리소스를 너무 많이 사용하는 등 Compute Engine VM이 실패하는 문제가 발생할 수 있습니다. 자세한 내용은 Cloud Logging에서 Compute Engine 로그 조사를 참조하세요.

13

코드: 13

전체 오류: Execution failed: generic::internal: action INDEX: waiting for container: container is still running, possibly due to low system resources

설명: 작업을 위한 컨테이너에 메모리가 부족할 수 있습니다.

권장 조치: 더 큰 머신 유형을 사용해서 파이프라인을 다시 시도하세요.

UNAVAILABLE (14)

코드: 14

상태: UNAVAILABLE

카테고리: 시스템 오류

전체 오류: Execution failed: worker was terminated

설명: 파이프라인을 실행하는 Compute Engine VM이 선점되었습니다.

권장 조치: 작업을 재시도하세요.

오류 발생 후 재시도

파이프라인이 실패하고 오류 코드가 반환될 수 있습니다. 파이프라인이 수행 중인 작업과 관련이 없는 문제로 인해 실패할 수 있습니다. 대부분의 경우 파이프라인 작업을 다시 시도해야 합니다. 병목 현상이 발생할 가능성이 높은 선점형 VM을 사용하면 파이프라인이 실패하는 경향이 있습니다. Cloud Life Sciences API는 모든 파이프라인이 멱등성이 아니므로 파이프라인 작업을 자동으로 재시도할 수 없습니다.

오류 코드 섹션에 표시된 대로 일반적으로 다음 오류 코드가 발생하면 재시도하는 것이 좋습니다.

  • RESOURCE EXHAUSTED (8)
  • ABORTED (10)
  • UNAVAILABLE (14)

Cloud Monitoring 사용 설정

파이프라인에서 Cloud Monitoring을 사용하여 파이프라인을 실행하는 데 사용되는 작업자 VM의 상태 및 리소스 사용을 모니터링할 수 있습니다. 그러나 Monitoring을 사용하면 추가 비용이 발생할 수 있습니다. 모니터링을 사용 설정하려면 파이프라인 요청을 수행할 때 VirtualMachine 객체에 enableStackdriverMonitoring 플래그를 지정합니다.

파이프라인의 디스크 공간 부족

파이프라인의 디스크 공간이 부족하여 Docker 이미지를 가져오지 못하거나 작업을 로깅하거나 수행할 디스크 공간이 더 필요한 경우 다음 옵션 중 하나를 선택할 수 있습니다.

  • 파이프라인 요청을 수행할 때 VirtualMachine 객체에 bootDiskSizeGb 플래그를 사용하여 부팅 디스크 크기를 늘립니다.
  • 파이프라인 요청을 수행할 때 별도의 디스크를 연결하여 Action 객체의 내부 Mount 객체에 추가합니다.

할당량 지연 발생

Google Cloud 프로젝트의 Compute Engine 할당량이 부족한 경우 Cloud Life Sciences API는 VM을 할당하지 않습니다. 추가 할당 시도는 기존 파이프라인이 완료될 때까지 지연됩니다. 이 지연이 계속 발생하면 할당량 증가를 요청할 수 있습니다.

파이프라인 중지

VM이 Cloud Life Sciences API 서비스와 통신할 수 없기 때문에 파이프라인이 중지되고 반복적으로 할당 및 해제되는 경우 다음과 같은 문제가 함께 발생할 수 있습니다.

  • VM의 default 네트워크가 삭제되었을 수 있습니다.
  • Network 객체에 다른 네트워크가 지정되지 않았습니다.

이 문제를 해결하려면 다음 중 하나를 수행합니다.

  • Network 객체에서 네트워크 지정
  • 자동 모드 네트워크 만들기의 단계에 따라 default 네트워크를 다시 만들고 새 네트워크 이름을 default로 지정합니다.

VM 취소 또는 삭제

원치 않는 작업자 VM을 삭제하는 대신 연결된 작업을 취소해야 합니다. VM을 삭제하면 파이프라인이 느리게 실패하고, 시작하는 중이라면 새 VM이 할당될 수 있습니다.