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

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

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 de AWS

Gateway de API retorna o erro 502 enquanto o ponto de extremidade está usando a integração de proxy do Lambda

Possível causa:

A função Lambda pode ter:

  • Expirado.

  • Lançado uma exceção.

  • Falhado de alguma outra forma.

Possível solução:

Se os logs da Lambda ou do Gateway de API estão disponíveis para você, examine-os.

Se o código-fonte da função Lambda estiver disponível para você, analise e depure o código na função Lambda. Em alguns casos, você pode conseguir executar uma cópia desse código em um contexto mais simples (fora da AWS) para ajudar na depuração do mesmo.

Verifique se os dados enviados para a função Lambda estão no formato esperado pela função Lambda. Você pode tentar enviar um conjunto de dados menor e mais simples para ver se consegue executar com sucesso.

Verifique se você não está enviando muitos dados de uma só vez.

Em alguns casos, o aumento do tempo limite pode resolver o problema, especialmente se a função Lambda exigir muitos recursos da CPU, ou se a própria função Lambda chamar outros serviços remotos e, portanto, exigir mais tempo.

Não é possível ler o corpo das solicitações no método HTTP POST dentro da função Lambda Amazon AWS

Possível causa:

Você pode não ter permitido a integração de proxy do Lambda.

Possível solução:

Habilite a integração de proxy do Lambda.

Para obter mais detalhes, consulte as etapas em Criar o ponto de extremidade do API Gateway.

Error assuming AWS_ROLE

O texto completo da mensagem é:

SQL execution error: Error assuming AWS_ROLE. Please verify the role and externalId are
configured correctly in your AWS policy.
Copy
Possível causa:
  • Na Política de Relação de Confiança da AWS para a sua função, o AWS ARN está incorreto. Possíveis causas para isso incluem:

    • Você não o definiu.

    • Você o definiu, mas usou o ARN da função AWS (incorreto) em vez do usuário ARN, que pode ser visto no comando DESCRIBE INTEGRATION no Snowflake. Certifique-se de usar o valor do campo API_AWS_IAM_USER_ARN da planilha em vez do valor do campo “API_AWS_ROLE_ARN”.

  • Na Política de Relação de Confiança da AWS, a std:ExternalId está incorreta. Possíveis causas para isso incluem:

    • Você não o definiu.

    • Você recriou o objeto de integração da API. Recriar o objeto da API muda sua ID externa.

Error: 403 ‘{“Message”:“User: <ARN> is not authorized to perform: execute-api:Invoke”}’

O texto completo da mensagem é:

Request failed for external function <function_name>.
Error: 403 '{"Message":"User: <ARN> is not authorized to perform: execute-api:Invoke on resource: <MethodRequestARN>"}'
Copy
Possível causa:
  • A política de recursos do Gateway de API tem:

    • O ARN da função IAM incorreto.

    • A função assumida incorreta.

    • O ARN da Solicitação de Método incorreto.

  • A função IAM não tem a política correta anexada.

Possível solução:
  • Certifique-se de ter seguido o modelo de política de recursos em Proteger seu ponto de extremidade do Amazon API Gateway. Especificamente, certifique-se de que sua política de recursos:

    • Substituiu <12-digit number> pelo valor no campo da planilha chamado Your AWS account ID.

    • Substituiu <external_function_role> pelo valor no campo New IAM Role Name da planilha.

    • Substituiu method_request_ARN no campo Resource pelo valor no campo Method Request ARN na planilha. Certifique-se de que não haja barras no final.

  • Se você precisar confirmar que a função IAM tem a política correta de permissões anexada, você pode encontrar a lista de políticas de permissões da função seguindo os passos abaixo:

    1. Na AWS, acesse Gerenciamento de Identidades e Acessos (IAM) e selecione a função.

    2. Consulte Summary para a função.

    3. Clique na guia Permissions.

    4. Verifique se a política exigida está na lista Permissions policies.

  • Certifique-se de que o ponto de extremidade a ser chamado é o recurso, não o estágio, que está definido no Gateway de API.

Error: 403 ‘{“Message”:”User: anonymous is not authorized to perform: execute-api:Invoke”}’

O texto completo da mensagem é:

Request failed for external function <function_name>.
Error: 403 '{"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: <MethodRequestARN>"}'
Copy
Possível causa:

Uma causa possível é que quando você estava configurando a autorização para o Gateway de API, talvez você não tenha especificado que o Method Request exige autorização AWS_IAM para o recurso.

Possível solução:

Se você não seguiu as instruções para garantir o Gateway de API, siga-as agora para especificar a autorização AWS_IAM.

Error parsing JSON response … Error: top-level JSON object must contain “data” JSON array element

O texto completo da mensagem é:

Error parsing JSON response for external function ... Error: top-level JSON object must contain "data" JSON array element
Copy
Possível causa:
  • Você pode não ter especificado a integração de proxy do Lambda para o comando POST em seu recurso do Gateway de API.

Possível solução:
  • Especifique a integração de proxy do Lambda para seu recurso do Gateway de API.

    Para obter mais detalhes sobre a integração de proxy do Lambda, consulte as etapas em Criar o ponto de extremidade do API Gateway.

Request failed for external function EXT_FUNC with remote service error: 403 ‘{“message”:“Forbidden”}’;

Possível causa:

O serviço de proxy exigia uma chave de API, geralmente para autenticação ou faturamento. A chave de API está ausente ou incorreta.

Possível solução:

Use o comando ALTER API INTEGRATION para especificar a chave de API correta.

CloudFormation stack creation fails

Este erro pode ocorrer se você estiver usando um modelo AWS CloudFormation para criar uma função externa.

Possível causa:

Você não tem permissões necessárias para criar os recursos especificados no modelo CloudFormation.

Possível solução:

Verifique a aba Events da pilha para ver os detalhes do erro.

Consulte também a página de solução de problemas das funções externas da AWS para mais dicas de solução de problemas.