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:
- Verifique se as APIs do Cloud Life Sciences e do Compute Engine estão ativadas.
- Verifique se a conta de serviço do Agente de serviço do Cloud Life Sciences está configurada corretamente.
- 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:
Ative a API do Cloud Life Sciences:
Ative a API 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ê executa um pipeline pela primeira vez (usando a ferramenta gcloud
ou as APIs RPC e REST) em um projeto do Google Cloud. O Agente de serviço do Cloud Life Sciences é uma conta de serviço gerenciada pelo Google.
Não é possível excluir totalmente a conta de serviço. No entanto, em algumas circunstâncias, ela pode não aparecer na página de gerenciamento de identidade e acesso e talvez você tenha problemas com a API do 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
- Verifique se você ativou a API do Cloud Life Sciences.
- Na página IAM do Console do Google Cloud encontre sua conta de serviço.
- Na coluna Herança correspondente à conta de serviço, clique no ícone de lápis. O painel Editar permissões é aberto.
- 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.
- Selecione o papel e clique em Salvar. Em seguida, os papéis
lifesciences.workflowsRunner
eiam.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 objetoVirtualMachine
ao fazer a solicitação de pipeline. - Anexe um disco separado e adicione-o ao objeto
Mount
dentro do objetoAction
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 interrompidos
Se os pipelines estiverem interrompendo e atribuindo repetidamente e lançando VMs porque não conseguem se comunicar com o serviço de API do Cloud Life Sciences, talvez seja porque as VMsdefault
foi excluída, e outra rede não foi especificada noNetwork
.
Para resolver esse problema:
- Especifique uma rede no objeto
Network
.
OR
- Recrie a rede
default
usando as etapas descritas em Como criar uma rede de modo automático e nomeie a nova rededefault
.
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.