Risolvere i problemi

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, segui questi passaggi nell'ordine indicato:

  1. Accertati che le API Cloud Life Sciences e Compute Engine siano abilitate.
  2. Assicurati che l'account di servizio Cloud Life Sciences Service Agent sia configurato correttamente.
  3. Assicurati che l'account di servizio predefinito di Compute Engine sia configurato correttamente.

Abilitazione delle API Cloud Life Sciences e Compute Engine

Assicurati che le API Cloud Life Sciences e Compute Engine siano abilitate nel progetto Google Cloud:

  1. Abilita l'API Cloud Life Sciences:

    Abilita l'API Cloud Life Sciences

  2. Abilita l'API Compute Engine:

    Abilita API Compute Engine

Se visualizzi un errore che indica che non hai l'autorizzazione per abilitare le API Google Cloud per il tuo progetto, consulta Abilitare e disabilitare le API.

Manca l'account di servizio Cloud Life Sciences o il ruolo Agente di servizio Cloud Life Sciences

L'account di servizio Agente di servizio Cloud Life Sciences viene creato automaticamente quando esegui una pipeline per la prima volta in un progetto Google Cloud. Puoi eseguire la pipeline utilizzando Google Cloud CLI o le API REST e RPC. L'agente di servizio Cloud Life Sciences è un account di servizio gestito da Google. Non puoi eliminare l'account di servizio, ma potrebbe non essere visualizzato nella pagina Identity and Access Management. Questo potrebbe causare errori con l'API Cloud Life Sciences.

Affinché l'API Cloud Life Sciences funzioni e completi attività come l'esecuzione di pipeline su VM di Compute Engine, deve esistere l'account di servizio Agente di servizio Cloud Life Sciences. Deve inoltre avere il ruolo IAM Agente di servizio Life Sciences.

Se riscontri uno dei seguenti problemi, ricrea l'account di servizio Agente di servizio Cloud Life Sciences o concedigli il ruolo IAM Agente di servizio Life Sciences:

  • Non puoi trovare l'account di servizio Cloud Life Sciences Service Agent nella pagina Identity and Access Management.
  • Puoi trovare l'account di servizio Agente di servizio Cloud Life Sciences, ma non contiene il ruolo Agente di servizio Life Sciences.

Utilizza Google Cloud CLI 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.

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 gli elementi PROJECT_ID e 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 ha esito positivo, 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 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 Member (Membro), la colonna Name (Nome) contiene Cloud Life Sciences Service Agent.
  • Nella stessa riga della colonna Member (Membro), la colonna Role (Ruolo) contiene Life Sciences Service Agent.

Manca l'account di servizio predefinito di Compute Engine

I nuovi progetti Google Cloud creati vengono forniti con l'account di servizio predefinito di Compute Engine, che può essere identificato utilizzando il seguente indirizzo email:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

L'account di servizio deve esistere nel progetto Google Cloud, altrimenti l'API Cloud Life Sciences non può eseguire pipeline sulle VM di Compute Engine. Se elimini l'account di servizio dal progetto, tutte le applicazioni che dipendono dalle credenziali dell'account di servizio potrebbero non riuscire. Se elimini accidentalmente l'account di servizio predefinito di Compute Engine, puoi provare a recuperarlo entro 30 giorni. Per ulteriori informazioni, consulta Annullare l'eliminazione di un account di servizio.

Impossibile eseguire l'autenticazione nell'API Cloud Life Sciences

Se esegui una pipeline con l'API Cloud Life Sciences utilizzando un account di servizio come credenziale (anziché utilizzare gcloud auth application-default login come credenziale), assicurati che l'account di servizio abbia i ruoli seguenti:

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

Per aggiungere questi ruoli al tuo account di servizio, completa i passaggi seguenti utilizzando la console Google Cloud o Google Cloud CLI:

Console

  1. Assicurati di aver attivato l'API Cloud Life Sciences.
  2. Nella pagina IAM della console Google Cloud, individua il tuo account di servizio.
  3. Nella colonna Ereditarietà che corrisponde all'account di servizio, fai clic sull'icona a forma di matita. Viene visualizzato il riquadro Modifica autorizzazioni.
  4. Fai clic su Aggiungi un altro ruolo e cerca i ruoli Runner dei flussi di lavoro di Life Sciences e Utente account di servizio.
  5. Seleziona il ruolo e fai clic su Salva. I ruoli lifesciences.workflowsRunner e iam.serviceAccountUser vengono quindi 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 gli elementi PROJECT_ID e 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 tue "Credenziali predefinite dell'applicazione" non sono disponibili.

Per informazioni su come configurare le Credenziali predefinite dell'applicazione dell'applicazione o su come passare manualmente le credenziali di autenticazione a un'applicazione o a un comando, consulta Configurazione dell'autenticazione per le applicazioni server-to-server.

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 utente

Descrizione: una risorsa è stata esaurita. Questo può indicare che la tua applicazione ha esaurito la quota API di amministratore a livello di progetto.

Azione consigliata: riprova l'operazione.

FAILED_PRECONDITION (9)

Codice: 9

Stato: FAILED_PRECONDITION

Categoria: errore 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. Uno snippet dell'output dell'errore standard dell'azione mostra quello che puoi utilizzare per diagnosticare il problema. Per caricare i log completi dalla macchina virtuale (VM) di Compute Engine, utilizza l'azione ALWAYS_RUN quando effettui la richiesta di pipeline, in questo modo:

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

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 di Compute Engine che esegue la pipeline non è andata a buon fine, probabilmente perché è stata prerilasciata e non è riuscita a segnalarne lo stato prima dell'arresto.

Azione consigliata: riprova l'operazione. Se l'errore si ripete regolarmente, potrebbe esserci un problema che causa il malfunzionamento della VM di Compute Engine, ad esempio l'utilizzo di troppe risorse. Esamina i log di Compute Engine in Cloud Logging per ulteriori informazioni.

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 essere esaurito.

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 di Compute Engine che esegue la pipeline è stata prerilasciata.

Azione consigliata: riprova l'operazione.

Riprova dopo aver riscontrato errori

Una pipeline potrebbe non riuscire e restituire un codice di errore. Gli errori possono verificarsi a causa di problemi non correlati al lavoro svolto dalla pipeline. Nella maggior parte dei casi, devi riprovare l'operazione di pipeline. Le pipeline sono soggette a errori quando utilizzi VM prerilasciabili, che sono più economiche ma più soggette a 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 abilitare Cloud Monitoring sulle tue pipeline per monitorare l'integrità e l'utilizzo delle risorse dalle VM worker utilizzate per eseguire la pipeline. Tuttavia, l'attivazione di Monitoring può comportare costi aggiuntivi. Per abilitare Monitoring, specificare il flag enableStackdriverMonitoring nell'oggetto VirtualMachine quando effettui la richiesta di pipeline.

La pipeline sta per esaurire lo spazio su disco

Se la pipeline esaurisce lo spazio su disco e non può estrarre immagini Docker o se ha bisogno di più spazio su disco per registrare o eseguire le attività, puoi scegliere una delle seguenti opzioni:

  • Aumenta la dimensione del disco di avvio utilizzando il flag bootDiskSizeGb nell'oggetto VirtualMachine quando effettui la richiesta di pipeline.
  • Collega un disco separato e aggiungilo all'oggetto Mount all'interno dell'oggetto Action quando effettui la richiesta di pipeline.

Ritardi nelle quote

Se il tuo progetto Google Cloud è fuori quota, l'API Cloud Life Sciences non alloca le VM. Eventuali altri tentativi di allocazione vengono ritardati per garantire il completamento delle pipeline esistenti. Se questo ritardo continua a verificarsi, puoi richiedere un aumento della quota.

Le pipeline vengono interrotte

Se le pipeline si interrompono e assegnano e rilasciano ripetutamente VM perché non possono comunicare con il servizio API Cloud Life Sciences, la causa potrebbe essere dovuta ai seguenti problemi che si verificano insieme:

  • La rete default delle VM potrebbe essere stata eliminata.
  • Non è stata specificata un'altra rete nell'oggetto Network.

Per risolvere il problema, esegui una delle seguenti operazioni:

Annullamento o eliminazione delle VM

Invece di eliminare le VM worker indesiderate, devi annullare le operazioni associate. Se elimini la VM, la pipeline si guasta lentamente e, se è in corso il processo di avvio, potrebbe essere assegnata una nuova VM.