Pemecahan masalah

API not enabled or service account deleted error

Saat memanggil Cloud Life Sciences API, Anda mungkin mendapati 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:

    Aktifkan Cloud Life Sciences API

  2. Aktifkan Compute Engine API:

    Aktifkan Compute Engine API

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

Akun layanan Cloud Life Sciences atau peran Cloud Life Sciences Service Agent tidak ada

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

Agar Cloud Life Sciences API dapat berfungsi dan menyelesaikan tugas seperti menjalankan pipeline di VM Compute Engine, akun layanan Agen Layanan Cloud Life Sciences harus ada. Aplikasi tersebut juga harus memiliki peran IAM Agen Layanan Ilmu Hayati.

Jika Anda mengalami salah satu masalah berikut, buat ulang akun layanan Cloud Life Sciences Service Agent atau berikan peran IAM Agen Layanan Ilmu Hayati:

  • Anda tidak dapat menemukan akun layanan Agen Layanan Cloud Life Sciences di halaman Identity and Access Management.
  • Anda dapat menemukan akun layanan Agen Layanan Cloud Life Sciences, tetapi akun tersebut tidak berisi peran Agen Layanan Ilmu Hayati.

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.

Untuk membuat ulang akun layanan atau memberinya peran IAM Agen Layanan Ilmu Hayati, 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, command prompt 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 Agen Layanan Ilmu Hayati.

Akun layanan default Compute Engine tidak ada

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 informasi selengkapnya.

Tidak dapat mengautentikasi ke Cloud Life Sciences API

Jika Anda menjalankan pipeline dengan Cloud Life Sciences API menggunakan akun layanan sebagai kredensial Anda (bukan menggunakan gcloud auth application-default login sebagai kredensial Anda), 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 Google Cloud Console atau Google Cloud CLI:

Konsol

  1. Pastikan Anda telah mengaktifkan Cloud Life Sciences API.
  2. Pada halaman IAM di Konsol Google Cloud, temukan akun layanan Anda.
  3. Di kolom Pewarisan yang cocok dengan akun layanan, klik ikon pensil. Panel Edit permissions akan terbuka.
  4. Klik Add another role, lalu cari 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 mengautentikasi 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 Admin API level project.

Tindakan yang disarankan: Coba lagi operasi ini.

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 bukan nol. Cuplikan output error standar dari tindakan akan menampilkan 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 berikut:

{
  "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"
}

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, kemungkinan karena sudah di-preempt dan tidak dapat melaporkan statusnya sebelum dihentikan.

Tindakan yang disarankan: Coba lagi operasi ini. Jika error tersebut terus-menerus terjadi, 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.

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 telah 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 ini.

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 mungkin mengalami gangguan. Cloud Life Sciences API tidak dapat mencoba kembali operasi pipeline secara otomatis karena tidak semua pipeline bersifat idempoten.

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

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

Mengaktifkan Cloud Monitoring

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

Pipeline kehabisan ruang disk

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

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

Mengalami penundaan kuota

Jika project Google Cloud Anda kehabisan kuota Compute Engine, Cloud Life Sciences API tidak akan mengalokasikan VM. Setiap percobaan alokasi lebih lanjut akan ditunda agar pipeline yang ada memiliki waktu untuk menyelesaikan prosesnya. Jika penundaan ini terus terjadi, Anda dapat meminta penambahan kuota.

Pipeline berhenti

Jika pipeline Anda berhenti dan berulang kali menetapkan dan merilis VM karena VM tidak dapat berkomunikasi dengan layanan Cloud Life Sciences API, penyebabnya mungkin adalah dari beberapa 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 langkah berikut:

  • Tentukan jaringan di 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 terkaitnya. Jika Anda menghapus VM, pipeline akan gagal secara perlahan dan, jika sedang dalam proses memulai, VM baru mungkin akan ditetapkan.