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âmetroevent
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:
Defina uma política Validar JWT (Token Web JSON) para a instância de gerenciamento de API, conforme documentado em Etapa 6: criar a política de segurança do Azure para o serviço de proxy no portal.
Use restrições de endereço IP para limitar o serviço remoto a aceitar conexões somente da instância do serviço de gerenciamento de API.
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 oAzure 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." }'
- 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." }'
- 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." }'
- 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)