Resolver problemas

Erro API not enabled or service account deleted

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 de permissão indicando que não tem permissão para ativar as APIs do Google Cloud para seu projeto, consulte Como ativar e desativar APIs para informações sobre como ativar as APIs do Google Cloud.

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ê ativa o Cloud Life Sciences. Esta é uma conta de serviço gerenciada pelo Google. Não é possível excluir completamente a conta de serviço. No entanto, em algumas circunstâncias, ela pode não aparecer na página Gerenciamento de identidade e acesso e você pode ter problemas com a API Cloud Life Sciences.

Para que a API Cloud Life Sciences funcione corretamente e conclua tarefas, como executar pipelines em VMs do Compute Engine, é preciso que a conta de serviço do Agente de serviço do Cloud Life Sciences exista e tenha a função Papel de IAM do Agente de serviço do Life Sciences.

É possível recriar a conta de serviço do Agente de serviço do Cloud Life Sciences ou conceder a ela o papel de IAM de agente de serviço do Life Sciences se você encontrar um dos seguintes problemas:

  • 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 ferramenta de linha de comando gcloud para adicionar o papel lifesciences.serviceAgent à conta de serviço do Agente de serviço do Cloud Life Sciences usando o 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ê estiver executando um pipeline com a API do Cloud Life Sciences usando uma conta de serviço como credencial (em vez de, por exemplo, 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 do Google Cloud ou a ferramenta de linha de comando gcloud:

Console

  1. Verifique se você ativou a API do Cloud Life Sciences.
  2. Na página IAM do 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",
    "gsutil -q cp /google/logs/output gs://CLOUD_STORAGE_BUCKET/output"
  ],
  "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. Podem ocorrer falhas devido a problemas não relacionados ao trabalho que o pipeline estava fazendo. Na maioria dos casos, você precisa repetir a operação do pipeline. Os pipelines são particularmente 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 estiver ficando sem espaço em disco e não puder puxar imagens do Docker ou se precisar de mais espaço em disco para registrar ou executar suas 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 de pipeline.

Como encontrar atrasos nas cotas

A API Cloud Life Sciences não alocará VMs se o projeto do Google Cloud estiver fora da cota do Compute Engine. 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.

Pipelines pendentes

Se os pipelines estiverem pendentes e atribuindo e liberando VMs repetidamente porque eles não podem se comunicar com o serviço de API do Cloud Life Sciences, talvez a rede default das VMs tenha sido excluída e outra rede não tenha sido especificada no objeto Network.

Para resolver esse problema:

  • Especifique uma rede no objeto Network.

OR

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.