Solucionar o erro: “O Azure Functions Runtime está inacessível”

Este artigo ajuda a solucionar problemas da seguinte cadeia de caracteres 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 de armazenamento”.

Esse problema ocorre quando não é possível iniciar o Azure Functions Runtime. O motivo mais comum para esse erro ocorrer é o aplicativo de funções perder o acesso à sua conta de armazenamento. Para saber mais, veja Requisitos da conta de armazenamento.

O restante deste artigo ajuda a solucionar problemas específicos desse erro, incluindo como identificar e resolver cada caso.

A conta de armazenamento foi excluída

Cada aplicativo de funções exige uma conta de armazenamento para ser operado. Se essa conta for excluída, o aplicativo de funções não funcionará.

Comece procurando o nome da conta de armazenamento nas configurações do aplicativo. AzureWebJobsStorage ou WEBSITE_CONTENTAZUREFILECONNECTIONSTRING contém o nome da conta de armazenamento como parte de uma cadeia de conexão. Para obter mais informações, veja Referência das configurações de aplicativos para o Azure Functions.

Procure sua conta de armazenamento no portal do Azure para ver se ela ainda existe. Se ela tiver sido excluída, você precisará recriá-la e substituir as cadeias de conexão de armazenamento. O código de função é perdido e será necessário reimplantá-lo.

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

Se você não conseguiu encontrar uma cadeia de conexão da conta de armazenamento na etapa anterior, isso significa que ela poderá ter sido excluída ou substituída. A exclusão das configurações do aplicativo geralmente ocorre quando slots de implantação ou scripts do Azure Resource Manager são usados para definir as configurações do aplicativo.

Configurações de aplicativo obrigatórias

Para saber mais, veja Referência das configurações de aplicativos para o Azure Functions.

Diretrizes

  • Não marque configurações de slot para nenhuma dessas configurações. Se você trocar os slots de implantação, o aplicativo de funções será desativado.
  • Não modifique essas configurações como parte de implantações automatizadas.
  • Essas configurações precisam ser fornecidas e estarem 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ções que não funciona, mesmo se as configurações forem adicionadas posteriormente.

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

As cadeias de conexão da conta de armazenamento acima precisarão ser atualizadas se você regenerar chaves de armazenamento. Para obter mais informações sobre o gerenciamento de chaves de armazenamento, veja Criar uma conta de Armazenamento do Microsoft Azure.

A conta de armazenamento está inacessível

O aplicativo de funções precisa ser capaz de acessar a conta de armazenamento. Os problemas comuns que bloqueiam o acesso do aplicativo de funções a uma conta de armazenamento são:

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

Se uma cota de execução diária estiver configurada, o aplicativo de funções será desabilitado temporariamente e vários controles do portal ficarão indisponíveis.

Para verificar a cota no portal do Azure, selecione Recursos de Plataforma>Configurações do Aplicativo de Funções no aplicativo de funções. Se estiver acima da Cota de Uso Diário que você definiu, a seguinte mensagem será exibida:

“O aplicativo de funções atingiu a cota de uso diária e foi desativado até o próximo período de 24 horas”.

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

O aplicativo está por trás de um firewall

O aplicativo de funções pode estar inacessível por qualquer um dos seguintes motivos:

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 de nível de plataforma na guia Recursos da Plataforma ainda estão disponíveis.

Para verificar a configuração do ASE:

  1. Vá para o NSG (grupo de segurança de rede) 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 que está conectado à rede virtual que está sendo executado seu aplicativo ou a uma máquina virtual que está sendo executada em sua rede virtual.

Para saber mais sobre a configuração de regra de entrada, veja a seção “Grupos de segurança de rede” em Considerações de rede para um Ambiente do Serviço de Aplicativo.

Erros de contêiner no Linux

Para aplicativos de funções que executam no Linux em um contêiner, o erro Azure Functions runtime is unreachable poderá ocorrer como resultado de problemas com o contêiner. Use o procedimento a seguir para examinar erros nos logs do contêiner:

  1. Procure o ponto de extremidade do Kudu do aplicativo de funções, que está localizado em https://<FUNCTION_APP>.scm.azurewebsites.net, em que <FUNCTION_APP> é o nome do aplicativo.

  2. Baixe o arquivo .zip de logs do Docker e examine o conteúdo no computador local.

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

Imagem do contêiner indisponível

Podem ocorrer erros quando a imagem do contêiner que está sendo referenciada está indisponível ou não inicia corretamente. Verifique se há erros registrados que indiquem que o contêiner não pode iniciar com êxito.

Será necessário corrigir todos erros que impedem o início do contêiner para que o aplicativo de funções execute corretamente.

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

O contêiner do aplicativo tem portas conflitantes

O aplicativo de funções pode estar em um estado sem resposta devido à atribuição de porta conflitante após a inicialização. Isso pode ocorrer nos seguintes casos:

  • O contêiner tem serviços separados em execução em que um ou mais serviços estão vinculados à mesma porta que o aplicativo de funções.
  • Há uma Conexão Híbrida do Azure adicionada que compartilha o mesmo valor de porta que o aplicativo de funções.

Por padrão, o contêiner no qual o aplicativo de funções executa 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ções poderá 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 Functions Runtime, a colisão de ID do host é detectada e registrada como um aviso. Na versão 4.x, um erro é registrado e o host é interrompido. Se o runtime não puder iniciar no aplicativo de funções, analise os logs. Se houver um aviso ou um erro sobre colisões de ID do host, siga as etapas de mitigação em Considerações sobre a ID do host.

Configurações de aplicativo somente leitura

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

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

Aplica-se somente a aplicativos C# em execução em processo com o host do Functions.

Configurar a autenticação do 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, dentre outras coisas, 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óximas etapas

Saiba como monitorar os aplicativos de funções: