Solução de problemas de funções externas para o Azure

Este tópico fornece informações de solução de problemas para funções externas para o Azure.

Neste tópico:

Problemas de tempo de execução independentes da plataforma

Os valores de retorno dos tipos de dados não correspondem aos valores de retorno esperados

Ao passar argumentos de ou para uma função externa, certifique-se de que os tipos de dados sejam apropriados. Se o valor enviado não se encaixar no tipo de dados recebidos, o valor pode ser truncado ou corrompido de alguma outra forma.

Para obter mais detalhes, consulte Assegurar que os argumentos para a função externa correspondem aos argumentos analisados pelo serviço remoto.

Erro: números de linha fora de ordem

Causas possíveis

Os números de linha que você retorna dentro de cada lote devem ser inteiros monotônicos crescentes, começando em 0. Os números das linhas de entrada também devem seguir essa regra, e cada linha de saída deve coincidir com a linha de entrada correspondente. Por exemplo, a saída na linha de saída 0 deve corresponder à entrada na linha de entrada 0.

Possíveis soluções

Certifique-se de que os números de linha que você retorna sejam os mesmos que os números de linha que você recebeu, e que cada valor de saída utilize o número de linha de entrada correspondente. Se isso não funcionar, os números das linhas de entrada podem não estar corretos ou você não retornou as linhas na ordem correta.

Em seguida, certifique-se de que os números das linhas de saída comecem a partir de 0, tenham um aumento de 1 e estejam em ordem.

Para obter mais informações sobre formatos de entrada e saída de dados, consulte Formatos de dados de entrada e saída de serviços remotos.

Erro: “Error parsing JSON: Invalid response”

Causas possíveis

A causa mais provável é que o JSON retornado pelo serviço remoto (por exemplo, função AWS Lambda) não está construído corretamente.

Possíveis soluções

Certifique-se de que a função externa retorne uma matriz de matrizes, com uma matriz interna retornada para cada linha de entrada recebida. Confira a descrição do formato de saída em Formato dos dados recebidos pelo Snowflake.

Erro: o formato do valor retornado não é JSON

Causas possíveis

Seu valor de retorno inclui aspas duplas dentro do valor.

Possíveis soluções

Embora as cadeias de caracteres JSON sejam delimitadas por aspas duplas, na maioria dos casos, a cadeia em si não deve começar nem terminar com aspas. Se as aspas duplas incorporadas estiverem incorretas, remova-as.

Erro: função recebeu o número errado de linhas

Causas possíveis

O serviço remoto tentou retornar mais ou menos linhas do que recebeu. Mesmo que a função seja nominalmente escalar, ela pode receber várias linhas no campo body do parâmetro event e deve retornar exatamente a quantidade de linhas que recebeu.

Possíveis soluções

Assegure que o serviço remoto retorne uma linha para cada linha que recebe.

Questões específicas do Azure

Não é possível modificar as configurações durante a criação do Azure Function

Causas possíveis

Ao criar seu Azure Function, talvez você não consiga modificar as configurações da função no menu Authentication/Authorization.

Este problema pode ocorrer se todos os seguintes itens forem verdadeiros:

  • Seu Azure Function está sendo executado no Linux, e não no Microsoft Windows.

  • Você planeja usar a autenticação/autorização Azure AD para seu Azure Function.

  • Você está usando o nível de preço “Consumo” do Azure em vez do nível “Premium”.

A autenticação Azure AD não está disponível no plano de consumo do Linux para Azure Functions. Você deve usar um plano de preço “Serviço de Aplicativo” ou “Premium” para se autenticar com o Azure AD.

Possíveis soluções
  • Recrie o Azure Function e especifique que será executado no Microsoft Windows, e não no Linux.

  • Pule a autenticação/autorização do Azure AD para o Azure Function; em vez disso, execute as seguintes tarefas:

    Se você escolher essa solução, você deve criar o aplicativo Azure AD manualmente. Para obter mais detalhes, consulte a documentação da Microsoft:

    Se você criar o aplicativo Azure AD manualmente, registre o Azure Function AD app registration name e o Azure Function App AD Application ID em sua planilha de rastreamento.

  • Troque o plano de preço “Consumo” pelo “Premium” ou use um plano “Serviço de Aplicativo”. Para obter mais detalhes, consulte a documentação da Microsoft:

A função externa expira

Causas possíveis

Há muitas causas possíveis de expiração. No Azure, uma das causas possíveis é que o aplicativo Azure Functions não foi escrito para escalonar corretamente.

Possíveis soluções

Certifique-se de que você está seguindo as diretrizes do Azure para escrever funções escalonáveis .

Para obter mais informações sobre a solução de problemas de escalabilidade e desempenho, consulte Solução de problemas de escalabilidade e desempenho .

Erro: falha na obtenção do token de acesso ao Azure Active Directory.

Possíveis soluções

Tente os seguintes passos:

  • Verifique se a entidade de serviço Snowflake tem acesso ao seu inquilino do Azure AD.

  • Verifique se a ID de locatário e a ID do aplicativo Azure AD estão corretas.

    Observe que o espaço em branco, incluindo o espaço em branco inicial e final (por exemplo, espaços vazios), é considerado nos campos de ID. Verifique a existência de espaços em branco inicial e final incorretos.

Erro: 401 ‘{ “statusCode”: 401, “message”: ‘Access denied due to missing subscription key…” }’

Texto completo da mensagem de erro:

Request failed for external function <function_name>. Error: 401 '{ "statusCode": 401, "message":
"Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }'
Copy
Causas possíveis

O requisito de assinatura do serviço de gerenciamento de API pode estar ativado.

Possíveis soluções

Talvez seja necessário desativar a exigência de assinatura para o serviço de gerenciamento de API.

Erro: 401 ‘{ “statusCode”: 401, “message”: “Access denied due to missing subscription key.” }

Causas possíveis

O serviço de proxy requer uma chave de API (também chamada de “chave de assinatura”), geralmente para autenticação ou faturamento. Entretanto, nenhuma chave de API foi fornecida na cláusula API_KEY do comando CREATE API INTEGRATION.

Possíveis soluções

Use o comando ALTER API INTEGRATION para atualizar a integração de API com uma chave de API válida.

Erro: 401 ‘{ “statusCode”: 401, “message”: “Access denied due to invalid subscription key.” }’

Causas possíveis

O serviço de proxy requer uma chave de API (também chamada de “chave de assinatura”), geralmente para autenticação ou faturamento. Entretanto, a chave de API fornecida na cláusula API_KEY do comando CREATE API INTEGRATION não era válida.

Possíveis soluções

Use o comando ALTER API INTEGRATION para atualizar a integração de API com uma chave de API válida.

Erro: 401 ‘{ “statusCode”: 401, “message”: “Invalid JWT.” }’

Texto completo da mensagem de erro:

Request failed for external function <function_name>. Error: 401 '{ "statusCode": 401, "message": "Invalid JWT." }'
Copy
Causas possíveis
  • Você pode não ter terminado de definir a política de segurança no serviço de gerenciamento de API no Azure. Por exemplo, você pode ter:

    • Criado, mas não editado, o JWT (Token Web JSON).

    • Omitido uma ou mais das declarações/valores necessários. Por exemplo, você pode ter especificado a declaração para o Snowflake, mas não o

    • serviço remoto (Azure Function), ou vice-versa.

  • Você pode ter usado uma URL Open ID inválida.

Possíveis soluções
  • Termine de definir a política de segurança no serviço de gerenciamento de API no Azure. Por exemplo, revise o JWT e verifique se você incluiu as declarações/valores necessários, incluindo a declaração para o Snowflake e a declaração para o serviço remoto (Azure Function).

  • Verifique se você usou uma URL Open ID válida.

Erro (serviço remoto): 401 ‘{ “statusCode”: 401, “message”: “Invalid JWT.” }’

Texto completo da mensagem de erro:

Request failed for external function <function_name> with remote service error: 401 '{ "statusCode": 401, "message": "Invalid JWT." }'
Copy
Causas possíveis

Se você usou o modelo ARM, talvez não tenha atualizado o JWT (Token Web JSON) que o modelo criou para você.

Possíveis soluções

Atualize o JWT, conforme documentado em Etapa 6: atualizar a política de segurança do Azure para o serviço de proxy no Portal.

Erro: 500 …

Causas possíveis

Você pode ter escolhido a opção errada para seu aplicativo Azure AD:

  • Opção incorreta: Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)

  • Opção correta: Accounts in this organizational directory only (Default Directory only - Single tenant)