API not enabled or service account deleted
errore
Quando chiami l'API Cloud Life Sciences, potresti riscontrare uno o entrambi i seguenti errori:
API not enabled or service account deleted
checking service account permission: Account deleted: PROJECT_ID
Per risolvere questi problemi, completa i seguenti passaggi in ordine:
- Assicurati che le API Cloud Life Sciences e Compute Engine siano abilitate.
- Assicurati che l'account di servizio Agente di servizio Cloud Life Sciences sia configurato correttamente.
- Assicurati che l'account di servizio predefinito di Compute Engine sia configurato correttamente.
Attivazione delle API Cloud Life Sciences e Compute Engine
Assicurati che le API Cloud Life Sciences e Compute Engine siano attivate nel tuo Google Cloud progetto:
Abilita l'API Cloud Life Sciences:
Abilita l'API Compute Engine:
Se ricevi un messaggio di errore che ti informa che non disponi dell'autorizzazione per abilitare le Google Cloud API per il tuo progetto, consulta Abilitazione e disattivazione delle API.
Manca l'account di servizio Cloud Life Sciences o il ruolo Agente di servizio Cloud Life Sciences
L'account di servizio Cloud Life Sciences Service Agent viene creato automaticamente quando esegui una pipeline per la prima volta in un Google Cloud progetto. Puoi eseguire la pipeline utilizzando Google Cloud CLI o le API REST e RPC. Non puoi eliminare l'account di servizio, ma potrebbe non essere visualizzato nella pagina Identity and Access Management. Ciò potrebbe causare errori con l'API Cloud Life Sciences.
Affinché l'API Cloud Life Sciences funzioni e completi attività come l'esecuzione di pipeline sulle VM Compute Engine, deve essere presente l'account di servizio Agente di servizio Cloud Life Sciences. Deve inoltre disporre del ruolo IAM Agente di servizio Life Sciences.
Se riscontri uno dei seguenti problemi, ricrea l'account di servizio Cloud Life Sciences Service Agent o conceda il ruolo IAM Life Sciences Service Agent:
- Non riesci a trovare l'account di servizio Cloud Life Sciences Service Agent nella pagina Identity and Access Management.
- Puoi trovare l'account di servizio Cloud Life Sciences Service Agent, ma questo non contiene il ruolo Life Sciences Service Agent.
Utilizza la CLI Google Cloud per aggiungere il ruolo lifesciences.serviceAgent
all'account di servizio Agente di servizio Cloud Life Sciences utilizzando l'identificatore dell'account di servizio, che utilizza il formato service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com
.
Per ricreare l'account di servizio o concedergli il ruolo IAM Agente di servizio Life Sciences, esegui il comando gcloud projects add-iam-policy-binding
. Per trovare l'ID progetto (PROJECT_ID) e il numero del progetto (PROJECT_NUMBER),
consulta Identificazione dei progetti.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com \ --role=roles/lifesciences.serviceAgent
Se la richiesta va a buon fine, il prompt dei comandi visualizza un messaggio simile al seguente esempio:
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
Torna di nuovo alla pagina Identity and Access Management e verifica quanto segue:
- La colonna Membro contiene un identificatore dell'account di servizio nel formato
service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount
. - Nella stessa riga della colonna Membro, la colonna Nome contiene Cloud Life Sciences Service Agent.
- Nella stessa riga della colonna Membro, la colonna Ruolo contiene Agente di servizio Life Sciences.
Manca l'account di servizio predefinito Compute Engine
I progetti Google Cloud di nuova creazione includono l'account di servizio predefinito di Compute Engine, identificabile tramite il seguente indirizzo email:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
L'account di servizio deve esistere nel tuo Google Cloud progetto, altrimenti l'API Cloud Life Sciences non può eseguire pipeline sulle VM Compute Engine. Se elimini l'account di servizio dal progetto, tutte le applicazioni che dipendono dalle credenziali dell'account di servizio potrebbero non funzionare. Se elimini per sbaglio l'account di servizio predefinito di Compute Engine, puoi provare a recuperarlo entro 30 giorni. Per saperne di più, consulta Annullare l'eliminazione di un account di servizio.
Impossibile autenticarsi nell'API Cloud Life Sciences
Se esegui una pipeline con l'API Cloud Life Sciences utilizzando un account di servizio come credenziali (anziché utilizzare gcloud auth application-default login
come credenziali), assicurati che l'account di servizio abbia i seguenti ruoli:
roles/lifesciences.workflowsRunner
roles/iam.serviceAccountUser
Per aggiungere questi ruoli al tuo account di servizio, completa i seguenti passaggi utilizzando la Google Cloud console o lGoogle Cloud CLI:
Console
- Assicurati di aver abilitato l'API Cloud Life Sciences.
- Nella pagina IAM nella Google Cloud console, trova il tuo account di servizio.
- Fai clic sull'icona a forma di matita nella colonna Eredità corrispondente all'account di servizio. Viene visualizzato il riquadro Modifica autorizzazioni.
- Fai clic su Aggiungi un altro ruolo e cerca i ruoli Esegui attività di flusso di lavoro per le scienze della vita e Utente account di servizio.
- Seleziona il ruolo e fai clic su Salva. I ruoli
lifesciences.workflowsRunner
eiam.serviceAccountUser
vengono aggiunti all'account di servizio.
gcloud
Per aggiungere le autorizzazioni dell'account di servizio, esegui il comando gcloud projects add-iam-policy-binding
. Per trovare l'ID progetto (PROJECT_ID) e il numero del progetto (PROJECT_NUMBER),
consulta Identificazione dei progetti.
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
Impossibile eseguire l'autenticazione utilizzando le Credenziali predefinite dell'applicazione
Quando chiami l'API Cloud Life Sciences, potresti ricevere un messaggio di errore che indica che le "Credenziali predefinite dell'applicazione" non sono disponibili.
Consulta Configurare l'autenticazione per le applicazioni server-to-server per informazioni su come configurare le Credenziali predefinite dell'applicazione#39;applicazione o su come passare manualmente le credenziali di autenticazione a un'applicazione o a un comando.
Codici di errore
L'API Cloud Life Sciences può restituire i seguenti codici di errore:
RESOURCE EXHAUSTED (8)
Codice: 8
Stato: RESOURCE_EXHAUSTED
Categoria: Errore dell'utente
Descrizione: una risorsa è stata esaurita. Ciò può indicare che la tua applicazione ha esaurito una quota dell'API di amministrazione a livello di progetto.
Azione consigliata: riprova l'operazione.
FAILED_PRECONDITION (9)
Codice: 9
Stato: FAILED_PRECONDITION
Categoria: Errore dell'utente
Errore completo: Execution failed: while running "[USER_COMMAND_LINE]": unexpected exit status [NUMBER] was not ignored
Descrizione: l'operazione è stata rifiutata perché un'azione dell'utente ha restituito uno stato di uscita diverso da zero. Viene visualizzato uno snippet dell'output di errore standard dell'azione che puoi utilizzare per diagnosticare il problema. Per caricare i log completi dalla macchina virtuale (VM) Compute Engine, utilizza l'azione ALWAYS_RUN
quando effettui la richiesta della pipeline, come segue:
{ "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" }
Azione consigliata: non riprovare senza risolvere il problema.
ABORTED (10)
Codice: 10
Stato: ABORTED
Categoria: Errore di sistema
Errore completo: The assigned worker has failed to complete the operation
Descrizione: l'operazione è stata interrotta perché la VM Compute Engine che esegue la pipeline non è riuscita, probabilmente perché è stata anticipata e non ha potuto segnalare il proprio stato prima di terminare.
Azione consigliata: riprova l'operazione. Se l'errore si verifica ripetutamente, potrebbe esserci un problema che causa l'arresto anomalo della VM Compute Engine, ad esempio l'utilizzo di troppe risorse. Esamina i log di Compute Engine in Cloud Logging per ulteriori informazioni.
Code 13
Codice: 13
Errore completo: Execution failed: generic::internal: action INDEX: waiting for container: container is still running, possibly due to low system resources
Descrizione: il contenitore dell'azione potrebbe aver esaurito la memoria.
Azione consigliata: riprova la pipeline utilizzando un tipo di macchina più grande.
UNAVAILABLE (14)
Codice: 14
Stato: UNAVAILABLE
Categoria: Errore di sistema
Errore completo: Execution failed: worker was terminated
Descrizione: la VM Compute Engine che esegue la pipeline è stata preattivata.
Azione consigliata: riprova l'operazione.
Riprova dopo aver riscontrato errori
Una pipeline potrebbe non riuscire e restituire un codice di errore. I fallimenti possono verificarsi a causa di problemi non correlati al lavoro svolto dalla pipeline. Nella maggior parte dei casi, devi riprovare l'operazione della pipeline. Le pipeline sono propense a errori quando utilizzi VM prerilasciabili, che sono più economiche, ma hanno maggiori probabilità di subire interruzioni. L'API Cloud Life Sciences non può riprovare automaticamente le operazioni della pipeline perché non tutte le pipeline sono idempotenti.
Come mostrato nella sezione Codici di errore, in genere si consiglia di riprovare quando si verifica uno dei seguenti codici di errore:
RESOURCE EXHAUSTED (8)
ABORTED (10)
UNAVAILABLE (14)
Abilitazione di Cloud Monitoring
Puoi attivare Cloud Monitoring nelle tue pipeline per monitorare l'integrità
e l'utilizzo delle risorse delle VM worker utilizzate per eseguire la pipeline. Tuttavia,
l'attivazione del monitoraggio può comportare costi aggiuntivi. Per attivare il monitoraggio, specifica il flag enableStackdriverMonitoring
nell'oggetto VirtualMachine
quando effettui la richiesta della pipeline.
Lo spazio su disco della pipeline sta per esaurirsi
Se la pipeline esaurisce lo spazio su disco e non riesce a estrarre le immagini Docker o se ha bisogno di più spazio su disco per eseguire i log o le attività, puoi scegliere una delle seguenti opzioni:
- Aumenta le dimensioni del disco di avvio utilizzando il flag
bootDiskSizeGb
nell'oggettoVirtualMachine
quando effettui la richiesta della pipeline. - Collega un disco separato e aggiungilo all'oggetto
Mount
all'interno dell'oggettoAction
quando effettui la richiesta della pipeline.
Incorrere in ritardi nella quota
Se il tuo Google Cloud progetto ha superato la quota di Compute Engine, l'API Cloud Life Sciences non alloca le VM. Eventuali ulteriori tentativi di allocazione vengono ritardati per dare alle pipeline esistenti il tempo di completare l'operazione. Se questo ritardo si verifica di nuovo, puoi richiedere un aumento della quota.
Le pipeline si stanno fermando
Se le pipeline si arrestano e assegnano e rilasciano ripetutamente VM perché le VM non possono comunicare con il servizio API Cloud Life Sciences, la causa potrebbe essere dovuta alla combinazione dei seguenti problemi:
- La rete
default
delle VM potrebbe essere stata eliminata. - Non è stata specificata un'altra emittente nell'oggetto
Network
.
Per risolvere il problema, esegui una delle seguenti operazioni:
- Specifica una rete nell'oggetto
Network
. - Ricrea la rete
default
seguendo i passaggi descritti in Creare una rete in modalità automatica e nomina la nuova retedefault
.
Annullamento o eliminazione delle VM
Anziché eliminare le VM worker indesiderate, devi annullare le operazioni associate. Se elimini la VM, la pipeline non riesce lentamente e, se è in fase di avvio, potrebbe essere assegnata una nuova VM.