Risoluzione dei problemi

API not enabled or service account deleted errore

Quando chiami l'API Cloud Life Sciences, potresti riscontrare una o entrambe 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 nell'ordine indicato:

  1. Assicurati che le API Cloud Life Sciences e Compute Engine siano abilitate.
  2. Assicurati che l'account di servizio dell'agente di servizio Cloud Life Sciences 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 sono abilitate nel tuo progetto Google Cloud:

  1. Abilita l'API Cloud Life Sciences:

    Abilita l'API Cloud Life Sciences

  2. Abilita l'API Compute Engine:

    Abilita l'API Compute Engine

Se si verifica un errore che indica che non hai l'autorizzazione Per attivare le API Google Cloud per il tuo progetto, consulta Attivazione 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 dell'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. Non puoi eliminare l'account di servizio, ma potrebbe non essere visualizzato nella pagina Identity and Access Management. Questo potrebbe causare errori nell'API Cloud Life Sciences.

Affinché l'API Cloud Life Sciences funzioni e completi attività quali che eseguono le pipeline sulle VM di Compute Engine, L'account di servizio dell'agente di servizio Cloud Life Sciences deve esistono. Deve inoltre disporre dell'agente di servizio di Life Sciences ruolo.

Se si verifica uno dei seguenti problemi, ricrea l'account di servizio dell'agente di servizio Cloud Life Sciences oppure assegnagli l'agente di servizio IAM Life Sciences ruolo:

  • Impossibile trovare l'account di servizio dell'agente di servizio Cloud Life Sciences della pagina Identity and Access Management.
  • Puoi trovare l'account di servizio dell'agente di servizio Cloud Life Sciences, non contiene il ruolo Agente di servizio Life Sciences.

Utilizza Google Cloud CLI per aggiungere il ruolo lifesciences.serviceAgent a Account di servizio dell'agente di servizio Cloud Life Sciences che utilizza 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 assegnargli l'agente di servizio Life Sciences IAM esegui il comando gcloud projects add-iam-policy-binding . Per trovare 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 a nel 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. di nuovo 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 Agente di servizio Cloud Life Sciences.
  • Nella stessa riga della colonna Membro, la colonna Ruolo contiene Agente di servizio Life Sciences.

Manca l'account di servizio predefinito di Compute Engine

I progetti Google Cloud appena creati includono Account di servizio predefinito Compute Engine, identificabili mediante il seguente indirizzo email:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

L'account di servizio deve esistere nel tuo 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 recuperare l'account entro 30 giorni. Consulta: Annullare l'eliminazione di un account di servizio per ulteriori informazioni.

Impossibile eseguire l'autenticazione nell'API Cloud Life Sciences

Se esegui una pipeline con l'API Cloud Life Sciences utilizzando una l'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 nella console Google Cloud o in Google Cloud CLI:

Console

  1. Assicurati di aver abilitato l'API Cloud Life Sciences.
  2. Nella pagina IAM nella console Google Cloud, trova il tuo account di servizio.
  3. Nella colonna Ereditarietà corrispondente all'account di servizio, fai clic sull'icona icona a forma di matita. Viene visualizzato il riquadro Modifica autorizzazioni.
  4. Fai clic su Aggiungi un altro ruolo e cerca Runner Flussi di lavoro per le scienze biologiche. e Utente account di servizio.
  5. Seleziona il ruolo e fai clic su Salva. Le lifesciences.workflowsRunner e I ruoli iam.serviceAccountUser vengono quindi aggiunti all'account di servizio.

gcloud

Per aggiungere le autorizzazioni dell'account di servizio, esegui gcloud projects add-iam-policy-binding . Per trovare 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 con 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 l'articolo Configurare l'autenticazione per le applicazioni server-to-server per informazioni su come configurare le credenziali predefinite dell'applicazione come passare manualmente le credenziali di autenticazione a un'applicazione .

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 l'applicazione ha esaurito la quota dell'API amministrativa 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 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, in questo modo:

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

Azione consigliata: riprova l'operazione. Se l'errore si ripete regolarmente, potrebbe esserci un problema che causa il mancato funzionamento 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 container per l'azione potrebbe aver esaurito la memoria.

Azione consigliata: riprova a eseguire 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.

Nuovo tentativo dopo aver riscontrato errori

Una pipeline potrebbe non riuscire e restituire un codice di errore. Errori a causa di problemi non correlati al lavoro svolto dalla pipeline. Nella maggior parte dei casi, devi riprovare a eseguire l'operazione della pipeline. Le pipeline sono è soggetta a errori quando utilizzi VM prerilasciabili, che sono più economici, ma hanno maggiori probabilità di subire interruzioni. API Cloud Life Sciences non può riprovare automaticamente le operazioni della pipeline perché non tutte le pipeline vengono idempotente.

Come mostrato nella sezione Codici di errore, in genere viene eseguito un nuovo tentativo consigliato 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 delle VM worker utilizzate per eseguire la pipeline. Tuttavia, l'abilitazione di Monitoring può comportare costi aggiuntivi. Per attivare Monitoraggio, specifica il enableStackdriverMonitoring flag in VirtualMachine quando viene effettuata la richiesta della pipeline.

Lo spazio su disco della pipeline sta per esaurirsi

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

  • Aumenta le dimensioni del disco di avvio utilizzando bootDiskSizeGb flag nel VirtualMachine quando viene effettuata la richiesta della pipeline.
  • Collega un disco separato e aggiungilo a Mount all'interno di Action quando viene effettuata la richiesta della pipeline.

Si verificano ritardi nelle quote

Se il tuo progetto Google Cloud non rientra nella quota di Compute Engine, l'API Cloud Life Sciences non alloca le VM. Eventuali ulteriori tentativi di allocazione vengono ritardati per concedere alle pipeline esistenti il tempo di essere completato. Se questo ritardo continua a verificarsi, puoi richiedere un aumento della quota.

Le pipeline sono in fase di interruzione

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

  • Le VM La rete default potrebbe essere stata eliminata.
  • Un'altra rete non è stata specificata nell'oggetto Network.

Per risolvere il problema, procedi in uno dei seguenti modi:

Annullamento o eliminazione delle VM

Anziché eliminare le VM worker indesiderate, devi annullare le VM associate operazioni aziendali. Se elimini la VM, la pipeline si arresta lentamente e, se è in fase di avvio, potrebbe essere assegnata una nuova VM.