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:
- 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 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
- Verifique se você ativou a API do Cloud Life Sciences.
- Na página do IAM no 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", "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 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 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:
Para resolver esse problema, faça uma das seguintes ações:
- Especifique uma rede no objeto
Network
. - 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.