Solucionar problemas com o streaming de respostas no API Gateway - Amazon API Gateway

Solucionar problemas com o streaming de respostas no API Gateway

As diretrizes de solução de problemas a seguir podem ajudar a resolver problemas com suas APIs que utilizam streaming de resposta.

Solução de problemas gerais

Você pode usar o TestInvokeMethod a guia de teste do console para testar a resposta do fluxo. As seguintes considerações podem afetar o uso da invocação de teste para streaming de resposta:

  • Quando você testa seu método, o API Gateway armazena em buffer sua carga útil de resposta transmitida. Depois que qualquer uma das condições a seguir for atendida, o API Gateway exibirá uma resposta única contendo a carga útil armazenada em buffer:

    • A solicitação está completa

    • 35 segundos se passaram

    • Mais de 1 MB de carga útil de resposta foi armazenada em buffer

  • Se transcorrerem mais de 35 segundos antes que seu método exiba um status de resposta HTTP e todos os cabeçalhos, o status da resposta exibido em TestInvokeMethod será 0.

  • O API Gateway não produz nenhum log de execução.

Depois de implantar sua API, você pode testar a resposta do fluxo utilizando um comando curl. É recomendável utilizar a opção -i de incluir cabeçalhos da resposta de protocolo na saída. Para ver os dados de resposta à medida que eles chegam, utilize a opção --no-buffer.

Solucionar problemas de cURL

Se você estiver testando uma integração e receber o erro curl: (18) transfer closed with outstanding read data remaining, verifique se o tempo limite da integração é longo o suficiente. Se você estiver usando uma função do Lambda, precisará atualizar o tempo limite de resposta dela. Para acessar mais informações, consulte Configurar tempo limite das funções do Lambda.

Solução de problemas no uso do registro em log do acesso

Você pode usar logs de acesso para o estágio da API REST a fim de registrar em log e solucionar problemas em seu fluxo de resposta. Além das variáveis existentes, você pode usar as seguintes variáveis de log de acesso:

$context.integration.responseTransferMode

O modo de transferência de resposta da integração. Ele pode ser BUFFERED ou STREAMED.

$context.integration.timeToAllHeaders

O tempo entre o momento em que o API Gateway estabelece a conexão de integração e o momento em que recebe todos os cabeçalhos de resposta de integração do cliente.

$context.integration.timeToFirstContent

O tempo entre o momento em que o API Gateway estabelece a conexão de integração e o momento em que recebe os primeiros bytes de conteúdo.

$context.integration.latency ou $context.integrationLatency

O momento em que o API Gateway estabelece a conexão de integração e o momento em que o fluxo de resposta de integração é concluído.

A figura a seguir mostra como essas variáveis de log de acesso representam diferentes componentes de um fluxo de resposta.

Variáveis de log de acesso para streaming de resposta no API Gateway

Para obter mais informações sobre os logs de acesso, consulte Configurar o registro em log do CloudWatch para APIs REST no API Gateway. Você também pode usar o X-Ray para monitorar seu fluxo de resposta. Para obter mais informações, consulte Rastrear solicitações de usuário para APIs REST usando o X-Ray no API Gateway.