Solução de problemas

API not enabled or service account deleted erro

Ao chamar a API do Cloud Life Sciences, é possível encontrar um destes erros ou ambos:

  • API not enabled or service account deleted
  • checking service account permission: Account deleted: PROJECT_ID

Para resolver esses problemas, conclua as seguintes etapas em ordem:

  1. Verifique se as APIs do Cloud Life Sciences e do Compute Engine estão ativadas.
  2. Verifique se a conta de serviço do Agente de serviço do Cloud Life Sciences está configurada corretamente.
  3. Verifique se a conta de serviço padrão do Compute Engine está configurada corretamente.

Como ativar as APIs do Cloud Life Sciences e do Compute Engine

Verifique se as APIs do Cloud Life Sciences e do Compute Engine estão ativadas no projeto do Google Cloud:

  1. Ative a API do Cloud Life Sciences:

    Ativar a API do Cloud Life Sciences

  2. Ative a API Compute Engine:

    Ativar a API do Compute Engine

Se você encontrar um erro dizendo que não tem permissão para ativar as APIs do Google Cloud para seu projeto, consulte Como ativar e desativar APIs.

Conta de serviço do Cloud Life Sciences ou papel do agente de serviço do Cloud Life Sciences não encontradas

A conta de serviço do agente de serviço do Cloud Life Sciences é criada automaticamente quando você executa um pipeline pela primeira vez em um projeto do Google Cloud. É possível executar o pipeline usando a Google Cloud CLI ou as APIs REST e RPC. Não é possível excluir a conta de serviço, talvez ele não apareça na página "Identity and Access Management". Isso pode causar erros na API Cloud Life Sciences.

Para que a API Cloud Life Sciences funcione e conclua as tarefas, como executar pipelines nas VMs do Compute Engine, é preciso que a conta de serviço do agente de serviço do Cloud Life Sciences exista e tenha o papel Agente de serviço do Life Sciences do IAM.

Se você encontrar qualquer um dos seguintes problemas, recrie a conta de serviço do agente de serviço do Cloud Life Sciences ou conceda a ela o papel Agente de serviço do Life Sciences do IAM:

  • Não é possível encontrar a conta de serviço do Agente de serviço do Cloud Life Sciences na página Gerenciamento de identidade e acesso.
  • É possível encontrar a conta de serviço do Agente de serviço do Cloud Life Sciences, mas ela não contém o papel agente de serviço do Life Sciences.

use a Google Cloud CLI; para adicionar o papel lifesciences.serviceAgent ao Conta de serviço do Agente de serviço do Cloud Life Sciences usando a identificador da conta de serviço, que usa o formato service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.

Para recriar a conta de serviço ou conceder o papel de agente de serviço do Life Sciences do IAM, execute o comando gcloud projects add-iam-policy-binding. Para encontrar PROJECT_ID e PROJECT_NUMBER, consulte Como identificar projetos.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com \
    --role=roles/lifesciences.serviceAgent

Se a solicitação for bem-sucedida, o prompt de comando exibirá uma mensagem semelhante à seguinte amostra:

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

Retorne à página Gerenciamento de identidade e acesso novamente e verifique o seguinte:

  • A coluna Membro contém um identificador de conta de serviço no formato service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.
  • Na mesma linha da coluna Membro, a coluna Nome contém o Agente de serviço do Cloud Life Sciences.
  • Na mesma linha da coluna Membro, a coluna Papel contém o Agente de serviços do Life Sciences.

Conta de serviço padrão do Compute Engine não encontrada

Os projetos do Google Cloud recém-criados vêm com a conta de serviço padrão do Compute Engine , que pode ser identificada com o seguinte e-mail:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

A conta de serviço precisa existir em seu projeto do Google Cloud. Caso contrário, a API Cloud Life Sciences não poderá executar pipelines em VMs do Compute Engine. Se você excluir a conta de serviço do projeto, os aplicativos que dependem das credenciais da conta de serviço poderão falhar. Se você excluir acidentalmente a conta de serviço padrão do Compute Engine, tente recuperá-la em até 30 dias. Para mais informações, consulte Como cancelar a exclusão de uma conta de serviço.

Não é possível autenticar na API do Cloud Life Sciences

Se você executa um pipeline com a API Cloud Life Sciences usando uma conta de serviço como credencial (em vez de usar gcloud auth application-default login como credencial), verifique se a conta de serviço tem os seguintes papéis:

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

Para adicionar esses papéis à sua conta de serviço, conclua as etapas a seguir usando o console ou a Google Cloud CLI:

Console

  1. Verifique se você ativou a API do Cloud Life Sciences.
  2. Na página do IAM no console do Google Cloud, encontre sua conta de serviço.
  3. Na coluna Herança correspondente à conta de serviço, clique no ícone de lápis. O painel Editar permissões é aberto.
  4. Clique em Adicionar outro papel e pesquise os papéis executor de fluxos de trabalho do Cloud Life Sciences e usuário da conta de serviço.
  5. Selecione o papel e clique em Salvar. Em seguida, os papéis lifesciences.workflowsRunner e iam.serviceAccountUser são adicionados à conta de serviço.

gcloud

Para adicionar as permissões da conta de serviço, execute o comando gcloud projects add-iam-policy-binding. Para encontrar PROJECT_ID e PROJECT_NUMBER, consulte Como identificar projetos.

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

Não é possível autenticar usando o Application Default Credentials

Ao chamar a API do Cloud Life Sciences, é possível que você receba uma mensagem de erro indicando que suas "credenciais padrão do aplicativo" não estão disponíveis.

Consulte Como configurar a autenticação para aplicativos de servidor para servidor a fim de conseguir informações sobre como configurar o Application Default Credentials ou como transmitir manualmente as credenciais de autenticação para um aplicativo ou comando.

Códigos de erro

A API do Cloud Life Sciences pode retornar os seguintes códigos de erro:

RESOURCE EXHAUSTED (8)

Código: 8

Status: RESOURCE_EXHAUSTED

Categoria: erro do usuário

Descrição: um recurso foi esgotado. Isso pode indicar que o aplicativo esgotou uma cota da API de administrador para envolvidos no projeto.

Ação recomendada: repita a operação.

FAILED_PRECONDITION (9)

Código: 9

Status: FAILED_PRECONDITION

Categoria: erro do usuário

Erro completo: Execution failed: while running "[USER_COMMAND_LINE]": unexpected exit status [NUMBER] was not ignored

Descrição: a operação foi rejeitada porque uma ação do usuário retornou um status de saída diferente de zero. Um snippet da saída de erro padrão da ação mostra que é possível usá-lo para diagnosticar o problema. Para fazer upload de registros completos da máquina virtual (VM, na sigla em inglês) do Compute Engine, use a ação ALWAYS_RUN ao fazer a solicitação de pipeline, assim:

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

Ação recomendada: não tente novamente sem corrigir o problema.

ABORTED (10)

Código: 10

Status: ABORTED

Categoria: erro do sistema

Erro completo: The assigned worker has failed to complete the operation

Descrição: a operação foi cancelada porque a VM do Compute Engine que executou o pipeline falhou. Provavelmente, essa VM passou por uma interrupção forçada e não pôde relatar seu status antes de ser encerrada.

Ação recomendada: repita a operação. Se o erro ocorrer de forma consistente, pode haver um problema causando a falha na VM do Compute Engine, como o uso de muitos recursos. Para mais informações, inspecione os registros do Compute Engine no Cloud Logging.

13

Código: 13

Erro completo: Execution failed: generic::internal: action INDEX: waiting for container: container is still running, possibly due to low system resources

Descrição: o contêiner da ação pode ter ficado sem memória.

Ação recomendada: repita o pipeline usando um tipo de máquina maior.

UNAVAILABLE (14)

Código: 14

Status: UNAVAILABLE

Categoria: erro do sistema

Erro completo: Execution failed: worker was terminated

Descrição: a VM do Compute Engine que executa o pipeline teve a interrupção forçada.

Ação recomendada: repita a operação.

Como tentar novamente após encontrar erros

Um pipeline pode falhar e retornar um código de erro. As falhas podem ocorrer devido a problemas não relacionados ao trabalho que o pipeline estava fazendo. Na maioria dos casos, tente executar a operação do pipeline novamente. Os pipelines são propensos a falhas quando você usa VMs preemptivas, que são mais baratas, mas têm maior probabilidade de sofrer interrupções. A API do Cloud Life Sciences não pode tentar operações de pipeline automaticamente porque nem todos os pipelines são idempotentes.

Conforme mostrado na seção códigos de erro, costuma-se recomendar uma nova tentativa quando você encontra qualquer um dos seguintes códigos de erro:

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

Como ativar o Cloud Monitoring

É possível ativar o Cloud Monitoring nos pipelines para monitorar a integridade e o uso de recursos das VMs de worker usadas para executar o pipeline. No entanto, ativar o Monitoring pode gerar custos extras. Para ativar o Monitoring, especifique a sinalização enableStackdriverMonitoring no objeto VirtualMachine ao fazer a solicitação de pipeline.

O pipeline está ficando sem espaço em disco

Se o pipeline ficar sem espaço em disco e não puder extrair imagens do Docker ou se precisar de mais espaço em disco para registrar ou executar tarefas, escolha uma das seguintes opções:

  • Aumente o tamanho do disco de inicialização usando a sinalização bootDiskSizeGb no objeto VirtualMachine ao fazer a solicitação de pipeline.
  • Anexe um disco separado e adicione-o ao objeto Mount dentro do objeto Action ao fazer a solicitação do pipeline.

Como encontrar atrasos nas cotas

Se o projeto do Google Cloud estiver fora da cota do Compute Engine, a API Cloud Life Sciences não alocará VMs. Todas as outras tentativas de alocação são atrasadas para que os pipelines atuais sejam concluídos. Se o atraso persistir, solicite um aumento na cota.

Os pipelines estão sendo interrompidos

Se os pipelines forem interrompidos e atribuírem e liberarem VMs várias vezes porque elas não podem se comunicar com o serviço da API Cloud Life Sciences, talvez os seguintes problemas ocorreram juntos:

  • A rede default das VMs pode ter sido excluída.
  • Outra rede não foi especificada no objeto Network.

Para resolver esse problema, faça uma das seguintes ações:

Como cancelar ou excluir VMs

Em vez de excluir VMs de worker indesejadas, cancele as operações associadas. Se você excluir a VM, o pipeline falhará gradativamente e, se estiver no processo de inicialização, uma nova VM poderá ser atribuída.