Streaming de resposta para funções do Lambda
É possível configurar seus URLs de função do Lambda para fazer o streaming de cargas de resposta de volta aos clientes. O streaming de respostas pode beneficiar aplicações sensíveis à latência ao melhorar o desempenho do tempo até o primeiro byte (TTFB). Isso ocorre porque é possível enviar respostas parciais de volta ao cliente assim que elas se tornarem disponíveis. Além disso, é possível usar o streaming de respostas para construir funções que retornem cargas maiores. As cargas de streams de resposta têm um limite flexível de 20 MB em comparação com o limite de 6 MB para respostas armazenadas em buffer. O streaming de uma resposta também significa que sua função não precisa caber em toda a resposta na memória. Para respostas muito grandes, isso pode reduzir a quantidade de memória que você precisa configurar para sua função.
A velocidade com que o Lambda faz o streaming das suas respostas depende do tamanho da resposta. A taxa de streaming dos primeiros 6 MB da resposta da sua função é ilimitada. Para respostas maiores que 6 MB, o restante da resposta está sujeito a um limite de largura de banda. Para obter mais informações sobre largura de banda de streaming, consulte Limites de largura de banda para streaming de resposta.
O streaming de respostas gera um custo. Para obter mais informações, consulte Preços do AWS Lambda
O Lambda oferece suporte ao streaming de respostas em runtimes gerenciados por Node.js. Em outras linguagens, é possível usar um runtime personalizado com uma integração personalizada da API de runtime para transmitir respostas ou usar o Lambda Web Adapter
nota
Ao testar sua função por meio do console do Lambda, você sempre verá as respostas como armazenadas em buffer.
Tópicos
Limites de largura de banda para streaming de resposta
Os primeiros 6 MB da carga útil de resposta da sua função têm largura de banda ilimitada. Após essa intermitência inicial, o Lambda faz o streaming da sua resposta a uma taxa máxima de 2 MBps. Se as respostas da sua função nunca excederem 6 MB, esse limite de largura de banda nunca será aplicado.
nota
Os limites de largura de banda se aplicam somente à carga útil da resposta da sua função e não ao acesso à rede por sua função.
A taxa de largura de banda ilimitada varia de acordo com diversos fatores, incluindo a velocidade de processamento da sua função. Normalmente, você pode esperar uma taxa superior a 2 MBps para os primeiros 6 MB da resposta da sua função. Se sua função estiver fazendo o streaming de uma resposta para um destino fora da AWS, a taxa de streaming também dependerá da velocidade da conexão externa com a Internet.
Compatibilidade da VPC com streaming de resposta
Ao usar funções do Lambda em um ambiente de VPC, há considerações importantes sobre o streaming de resposta:
-
Os URLs das funções do Lambda não são compatíveis com streaming de resposta em um ambiente de VPC.
-
Você pode usar streaming de resposta em uma VPC invocando a função do Lambda por meio do SDK da AWS usando a API
InvokeWithResponseStream
. Isso requer a configuração dos endpoints da VPC apropriados para o Lambda. -
Para ambientes de VPC, você precisará criar um endpoint da VPC de interface para o Lambda de modo a permitir a comunicação entre os recursos da VPC e o serviço Lambda.
Uma arquitetura típica para streaming de resposta em uma VPC pode incluir:
Client in VPC -> Interface VPC endpoint for Lambda -> Lambda function -> Response streaming back through the same path