Pemecahan masalah

API not enabled or service account deleted error

Saat memanggil Cloud Life Sciences API, Anda mungkin mengalami salah satu atau kedua error berikut:

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

Untuk mengatasi masalah ini, selesaikan langkah-langkah berikut secara berurutan:

  1. Pastikan Cloud Life Sciences dan Compute Engine API diaktifkan.
  2. Pastikan akun layanan Agen Layanan Cloud Life Sciences dikonfigurasi dengan benar.
  3. Pastikan akun layanan default Compute Engine dikonfigurasi dengan benar.

Mengaktifkan Cloud Life Sciences dan Compute Engine API

Pastikan Cloud Life Sciences dan Compute Engine API diaktifkan di project Google Cloud Anda:

  1. Aktifkan Cloud Life Sciences API:

    Mengaktifkan Cloud Life Sciences API

  2. Aktifkan Compute Engine API:

    Mengaktifkan Compute Engine API

Jika Anda mengalami error yang menyatakan bahwa Anda tidak memiliki izin untuk mengaktifkan Google Cloud API untuk project Anda, lihat Mengaktifkan dan menonaktifkan API.

Tidak ada akun layanan Cloud Life Sciences atau peran Cloud Life Sciences Service Agent

Akun layanan Agen Layanan Cloud Life Sciences otomatis dibuat saat Anda menjalankan pipeline untuk pertama kalinya dalam project Google Cloud . Anda dapat menjalankan pipeline menggunakan Google Cloud CLI atau REST dan RPC API. Anda tidak dapat menghapus akun layanan, tetapi akun tersebut mungkin tidak muncul di halaman Identity and Access Management. Hal ini dapat menyebabkan error pada Cloud Life Sciences API.

Agar Cloud Life Sciences API berfungsi dan menyelesaikan tugas seperti menjalankan pipeline di VM Compute Engine, akun layanan Cloud Life Sciences Service Agent harus ada. Akun tersebut juga harus memiliki peran IAM Life Sciences Service Agent.

Jika Anda mengalami salah satu masalah berikut, buat ulang akun layanan Cloud Life Sciences Service Agent atau beri peran IAM Life Sciences Service Agent:

  • Anda tidak dapat menemukan akun layanan Cloud Life Sciences Service Agent di halaman Identity and Access Management.
  • Anda dapat menemukan akun layanan Cloud Life Sciences Service Agent, tetapi akun layanan tersebut tidak berisi peran Life Sciences Service Agent.

Gunakan Google Cloud CLI untuk menambahkan peran lifesciences.serviceAgent ke akun layanan Cloud Life Sciences Service Agent menggunakan ID akun layanan, yang menggunakan format service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com.

Untuk membuat ulang akun layanan atau memberinya peran IAM Life Sciences Service Agent, jalankan perintah gcloud projects add-iam-policy-binding. Untuk menemukan PROJECT_ID dan PROJECT_NUMBER, lihat Mengidentifikasi project.

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

Jika permintaan berhasil, perintah akan menampilkan pesan yang mirip dengan contoh berikut:

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

Kembali ke halaman Identity and Access Management lagi dan verifikasi hal berikut:

  • Kolom Anggota berisi ID akun layanan dalam format service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.
  • Di baris yang sama dengan kolom Member, kolom Name berisi Cloud Life Sciences Service Agent.
  • Di baris yang sama dengan kolom Anggota, kolom Peran berisi Life Sciences Service Agent.

Tidak ada akun layanan default Compute Engine

Project Google Cloud yang baru dibuat dilengkapi dengan akun layanan default Compute Engine, yang dapat diidentifikasi menggunakan email berikut:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Akun layanan harus ada di project Google Cloud Anda. Jika tidak, Cloud Life Sciences API tidak dapat menjalankan pipeline di VM Compute Engine. Jika Anda menghapus akun layanan dari project, aplikasi apa pun yang bergantung pada kredensial akun layanan mungkin akan gagal. Jika tidak sengaja menghapus akun layanan default Compute Engine, Anda dapat mencoba memulihkan akun tersebut dalam waktu 30 hari. Lihat Membatalkan penghapusan akun layanan untuk mengetahui informasi selengkapnya.

Tidak dapat melakukan autentikasi ke Cloud Life Sciences API

Jika Anda menjalankan pipeline dengan Cloud Life Sciences API menggunakan akun layanan sebagai kredensial (bukan menggunakan gcloud auth application-default login sebagai kredensial), pastikan akun layanan memiliki peran berikut:

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

Untuk menambahkan peran ini ke akun layanan Anda, selesaikan langkah-langkah berikut menggunakan konsol Google Cloud atau Google Cloud CLI:

Konsol

  1. Pastikan Anda telah mengaktifkan Cloud Life Sciences API.
  2. Di halaman IAM di Google Cloud console, temukan akun layanan Anda.
  3. Di kolom Pewarisan yang cocok dengan akun layanan, klik ikon pensil. Panel Edit izin akan terbuka.
  4. Klik Add another role, lalu telusuri peran Life Sciences Workflows Runner dan Service Account User.
  5. Pilih peran, lalu klik Simpan. Peran lifesciences.workflowsRunner dan iam.serviceAccountUser kemudian ditambahkan ke akun layanan.

gcloud

Untuk menambahkan izin akun layanan, jalankan perintah gcloud projects add-iam-policy-binding. Untuk menemukan PROJECT_ID dan PROJECT_NUMBER, lihat Mengidentifikasi project.

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

Tidak dapat melakukan autentikasi menggunakan Kredensial Default Aplikasi

Saat memanggil Cloud Life Sciences API, Anda mungkin menerima pesan error yang menunjukkan bahwa "Kredensial Default Aplikasi" tidak tersedia.

Lihat Menyiapkan autentikasi untuk aplikasi server ke server untuk mengetahui informasi tentang cara mengonfigurasi Kredensial Default Aplikasi atau cara meneruskan kredensial autentikasi secara manual ke aplikasi atau perintah.

Kode error

Cloud Life Sciences API dapat menampilkan kode error berikut:

RESOURCE EXHAUSTED (8)

Kode: 8

Status: RESOURCE_EXHAUSTED

Kategori: Error pengguna

Deskripsi: Resource telah habis. Hal ini dapat menunjukkan bahwa aplikasi Anda telah menghabiskan kuota API admin tingkat project.

Tindakan yang disarankan: Coba lagi operasi tersebut.

FAILED_PRECONDITION (9)

Kode: 9

Status: FAILED_PRECONDITION

Kategori: Error pengguna

Error lengkap: Execution failed: while running "[USER_COMMAND_LINE]": unexpected exit status [NUMBER] was not ignored

Deskripsi: Operasi ditolak karena tindakan pengguna menampilkan status keluar yang bukan nol. Cuplikan output error standar dari tampilan tindakan yang dapat Anda gunakan untuk mendiagnosis masalah. Untuk mengupload log lengkap dari virtual machine (VM) Compute Engine, gunakan tindakan ALWAYS_RUN saat membuat permintaan pipeline, seperti ini:

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

Tindakan yang disarankan: Jangan mencoba lagi tanpa memperbaiki masalah.

ABORTED (10)

Kode: 10

Status: ABORTED

Kategori: Error sistem

Error lengkap: The assigned worker has failed to complete the operation

Deskripsi: Operasi dibatalkan karena VM Compute Engine yang menjalankan pipeline gagal, mungkin karena di-preempt dan tidak dapat melaporkan statusnya sebelum dihentikan.

Tindakan yang disarankan: Coba lagi operasi tersebut. Jika error terus terjadi secara konsisten, mungkin ada masalah yang menyebabkan VM Compute Engine gagal, seperti menggunakan terlalu banyak resource. Periksa log Compute Engine di Cloud Logging untuk mengetahui informasi lebih lanjut.

Code 13

Kode: 13

Error lengkap: Execution failed: generic::internal: action INDEX: waiting for container: container is still running, possibly due to low system resources

Deskripsi: Penampung untuk tindakan mungkin kehabisan memori.

Tindakan yang disarankan: Coba lagi pipeline menggunakan jenis mesin yang lebih besar.

UNAVAILABLE (14)

Kode: 14

Status: UNAVAILABLE

Kategori: Error sistem

Error lengkap: Execution failed: worker was terminated

Deskripsi: VM Compute Engine yang menjalankan pipeline di-preempt.

Tindakan yang disarankan: Coba lagi operasi tersebut.

Mencoba lagi setelah mengalami error

Pipeline mungkin gagal dan menampilkan kode error. Kegagalan dapat terjadi karena masalah yang tidak terkait dengan pekerjaan yang dilakukan pipeline. Pada umumnya, Anda harus mencoba kembali operasi pipeline. Pipeline rentan terhadap kegagalan saat Anda menggunakan preemptible VM, yang lebih murah tetapi lebih cenderung mengalami gangguan. Cloud Life Sciences API tidak dapat mencoba kembali operasi pipeline secara otomatis karena tidak semua pipeline bersifat idempotent.

Seperti yang ditunjukkan di bagian kode error, mencoba lagi biasanya direkomendasikan saat Anda mengalami salah satu kode error berikut:

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

Mengaktifkan Cloud Monitoring

Anda dapat mengaktifkan Cloud Monitoring di pipeline untuk memantau kondisi dan penggunaan resource VM pekerja yang digunakan untuk menjalankan pipeline. Namun, mengaktifkan Monitoring dapat menimbulkan biaya tambahan. Untuk mengaktifkan Pemantauan, tentukan tanda enableStackdriverMonitoring pada objek VirtualMachine saat membuat permintaan pipeline.

Pipeline kehabisan ruang disk

Jika pipeline Anda kehabisan ruang disk dan tidak dapat mengambil image Docker, atau jika memerlukan lebih banyak ruang disk untuk mencatat log atau melakukan tugasnya, Anda dapat memilih salah satu opsi berikut:

  • Tingkatkan ukuran disk booting menggunakan flag bootDiskSizeGb dalam objek VirtualMachine saat membuat permintaan pipeline.
  • Lampirkan disk terpisah dan tambahkan ke objek Mount di dalam objek Action saat membuat permintaan pipeline.

Mengalami penundaan kuota

Jika kuota Compute Engine Google Cloud project Anda sudah habis, Cloud Life Sciences API tidak akan mengalokasikan VM. Setiap upaya alokasi lebih lanjut akan tertunda untuk memberi pipeline yang ada waktu untuk menyelesaikan. Jika penundaan ini terus terjadi, Anda dapat meminta penambahan kuota.

Pipeline berhenti

Jika pipeline Anda berhenti dan berulang kali menetapkan serta merilis VM karena VM tidak dapat berkomunikasi dengan layanan Cloud Life Sciences API, penyebabnya mungkin karena masalah berikut yang terjadi secara bersamaan:

  • Jaringan default VM mungkin telah dihapus.
  • Jaringan lain tidak ditentukan dalam objek Network.

Untuk mengatasi masalah ini, lakukan salah satu tindakan berikut:

  • Tentukan jaringan dalam objek Network.
  • Buat ulang jaringan default menggunakan langkah-langkah dalam Membuat jaringan mode otomatis dan beri nama jaringan baru default.

Membatalkan atau menghapus VM

Daripada menghapus VM pekerja yang tidak diinginkan, Anda harus membatalkan operasi terkait. Jika Anda menghapus VM, pipeline akan gagal secara perlahan dan, jika VM sedang dalam proses dimulai, VM baru mungkin akan ditetapkan.