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:
- Pastikan Cloud Life Sciences dan Compute Engine API diaktifkan.
- Pastikan akun layanan Agen Layanan Cloud Life Sciences dikonfigurasi dengan benar.
- 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:
Aktifkan Cloud Life Sciences 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
- Pastikan Anda telah mengaktifkan Cloud Life Sciences API.
- Pada halaman IAM di Konsol Google Cloud, temukan akun layanan Anda.
- Di kolom Pewarisan yang cocok dengan akun layanan, klik ikon pensil. Panel Edit permissions akan terbuka.
- Klik Add another role, lalu cari peran Life Sciences Workflows Runner dan Service Account User.
- Pilih peran, lalu klik Simpan. Peran
lifesciences.workflowsRunner
daniam.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 objekVirtualMachine
saat membuat permintaan pipeline. - Pasang disk terpisah dan tambahkan ke objek
Mount
di dalam objekAction
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:
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 barudefault
.
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.