Como corrigir o problema “O Runtime das Funções do Azure está inacessível”

Este artigo ajuda você a solucionar a seguinte cadeia de erro que aparece no portal do Azure:

"Erro: o Azure Functions Runtime está inacessível. Clique aqui para obter detalhes sobre a configuração do armazenamento."

Esse problema ocorre quando o tempo de execução do Functions não pode iniciar. A razão mais comum para isso é que o aplicativo de função perdeu o acesso à sua conta de armazenamento. Para obter mais informações, consulte Requisitos da conta de armazenamento.

O restante deste artigo ajuda você a solucionar causas específicas desse erro, incluindo como identificar e resolver cada caso.

A conta de armazenamento foi excluída

Cada aplicativo de função requer uma conta de armazenamento para operar. Se essa conta for excluída, suas funções não funcionarão.

Comece pesquisando o nome da sua conta de armazenamento nas configurações do aplicativo. Ou AzureWebJobsStorageWEBSITE_CONTENTAZUREFILECONNECTIONSTRING contém o nome da sua conta de armazenamento como parte de uma cadeia de conexão. Para obter mais informações, consulte Referência de configurações de aplicativo para o Azure Functions.

Pesquise sua conta de armazenamento no portal do Azure para ver se ela ainda existe. Se ela tiver sido excluída, recrie a conta de armazenamento e substitua as cadeias de conexão de armazenamento. Seu código de função é perdido e você precisa reimplantá-lo.

As configurações do aplicativo de conta de armazenamento foram excluídas

Na etapa anterior, se você não conseguir encontrar uma cadeia de conexão de conta de armazenamento, ela provavelmente foi excluída ou substituída. A exclusão de configurações de aplicativo geralmente acontece quando você está usando slots de implantação ou scripts do Azure Resource Manager para definir configurações de aplicativo.

Configurações necessárias do aplicativo

Para obter mais informações, consulte Referência de configurações de aplicativo para o Azure Functions.

Orientação

  • Não verifique a configuração do slot para nenhuma dessas configurações. Se você trocar slots de implantação, o aplicativo de função será interrompido.
  • Não modifique essas configurações como parte de implantações automatizadas.
  • Essas configurações devem ser fornecidas e válidas no momento da criação. Uma implantação automatizada que não contém essas configurações resulta em um aplicativo de função que não será executado, mesmo que as configurações sejam adicionadas posteriormente.

As credenciais da conta de armazenamento são inválidas

As cadeias de conexão de conta de armazenamento discutidas anteriormente devem ser atualizadas se você regenerar chaves de armazenamento. Para obter mais informações sobre o gerenciamento de chaves de armazenamento, consulte Criar uma conta de armazenamento do Azure.

A conta de armazenamento está inacessível

A sua aplicação de funções tem de poder aceder à conta de armazenamento. Os problemas comuns que impedem uma aplicação de funções de aceder a uma conta de armazenamento são:

A quota de execução diária está cheia

Se você tiver uma cota de execução diária configurada, seu aplicativo de função será temporariamente desativado, o que fará com que muitos dos controles do portal fiquem indisponíveis.

Para verificar a cota no portal do Azure, selecione Configurações do aplicativo de função de recursos da plataforma em seu aplicativo de>função. Se tiver ultrapassado a Quota de Utilização Diária que definiu, é apresentada a seguinte mensagem:

"O aplicativo de função atingiu a cota de uso diário e foi interrompido até o próximo período de 24 horas."

Para resolver esse problema, remova ou aumente a cota diária e reinicie o aplicativo. Caso contrário, a execução do seu aplicativo será bloqueada até o dia seguinte.

A aplicação está atrás de uma firewall

Seu aplicativo de função pode estar inacessível por um dos seguintes motivos:

  • Seu aplicativo de função está hospedado em um Ambiente de Serviço de Aplicativo com balanceamento de carga interna e está configurado para bloquear o tráfego de entrada da Internet.

  • Seu aplicativo de função tem restrições de IP de entrada configuradas para bloquear o acesso à Internet.

O portal do Azure faz chamadas diretamente para o aplicativo em execução para buscar a lista de funções e faz chamadas HTTP para o ponto de extremidade Kudu. As configurações no nível da plataforma na guia Recursos da plataforma ainda estão disponíveis.

Para verificar a configuração do ASE:

  1. Vá para o grupo de segurança de rede (NSG) da sub-rede onde o ASE reside.
  2. Valide as regras de entrada para permitir o tráfego proveniente do IP público do computador onde você está acessando o aplicativo.

Você também pode usar o portal de um computador conectado à rede virtual que está executando seu aplicativo ou a uma máquina virtual que está sendo executada em sua rede virtual.

Para obter mais informações sobre a configuração de regras de entrada, consulte a seção "Grupos de segurança de rede" de Considerações de rede para um ambiente do Serviço de Aplicativo.

Erros de contêiner no Linux

Para aplicativos funcionais que são executados no Linux em um contêiner, o erro pode ocorrer como resultado de problemas com o Azure Functions runtime is unreachable contêiner. Use o procedimento a seguir para revisar os logs de contêiner em busca de erros:

  1. Navegue até o ponto de extremidade Kudu para o aplicativo de função, que está localizado em https://<FUNCTION_APP>.scm.azurewebsites.net, onde <FUNCTION_APP> é o nome do seu aplicativo.

  2. Transfira os registos do Docker .zip ficheiro e reveja o conteúdo no computador local.

  3. Verifique se há erros registrados que indiquem que o contêiner não pode ser iniciado com êxito.

Imagem de contêiner indisponível

Erros podem ocorrer quando a imagem de contêiner que está sendo referenciada não está disponível ou não é iniciada corretamente. Verifique se há erros registrados que indiquem que o contêiner não pode ser iniciado com êxito.

Você precisa corrigir quaisquer erros que impeçam o contêiner de iniciar para que o aplicativo de função seja executado corretamente.

Quando a imagem do contêiner não pode ser encontrada, você vê um manifest unknown erro nos logs do Docker. Nesse caso, você pode usar os comandos da CLI do Azure documentados em Como direcionar versões de tempo de execução do Azure Functions para alterar a imagem de contêiner que está sendo referenciada. Se você implantou uma imagem de contêiner personalizada, precisará corrigir a imagem e reimplantar a versão atualizada no registro referenciado.

O contêiner de aplicativo tem portas conflitantes

Seu aplicativo de função pode estar em um estado sem resposta devido à atribuição de porta conflitante na inicialização. Isto pode acontecer nos seguintes casos:

  • Seu contêiner tem serviços separados em execução onde um ou mais serviços estão vinculados para vincular à mesma porta que o aplicativo de função.
  • Você adicionou uma Conexão Híbrida do Azure que compartilha o mesmo valor de porta que o aplicativo de função.

Por padrão, o contêiner no qual seu aplicativo de função é executado usa a porta :80. Quando outros serviços no mesmo contêiner também estão tentando usar a porta :80, o aplicativo de função pode falhar ao iniciar. Se os logs mostrarem conflitos de porta, altere as portas padrão.

Colisão de ID do host

A partir da versão 3.x do tempo de execução do Functions, a colisão de ID do host é detetada e registrada como um aviso. Na versão 4.x, um erro é registrado e o host é interrompido. Se o tempo de execução não puder ser iniciado para seu aplicativo de função, revise os logs. Se houver um aviso ou um erro sobre colisões de ID de host, siga as etapas de mitigação em Considerações de ID de host.

Configurações do aplicativo somente leitura

Alterar qualquer configuração de aplicativo do Serviço de Aplicativo somenteleitura pode colocar seu aplicativo de função em um estado inacessível.

ASP.NET substituições de autenticação

Aplica-se somente a aplicativos C# executados em processo com o host Functions.

Configurar a autenticação ASP.NET em uma classe de inicialização do Functions pode substituir os serviços necessários para que o portal do Azure se comunique com o host. Isso inclui, mas não está limitado a, chamadas para AddAuthentication(). Se os serviços de autenticação do host forem substituídos e o portal não puder se comunicar com o host, ele considerará o aplicativo inacessível. Esse problema pode resultar em erros como: No authentication handler is registered for the scheme 'ArmToken'..

Próximos passos

Saiba mais sobre como monitorar seus aplicativos de função: