View a markdown version of this page

Streaming de réponses pour les fonctions Lambda - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Streaming de réponses pour les fonctions Lambda

Les fonctions Lambda peuvent renvoyer de manière native les charges utiles de réponse aux clients via les URL des fonctions Lambda ou en utilisant l'InvokeWithResponseStreamAPI (via le AWS SDK ou des appels d'API directs). Votre fonction Lambda peut également diffuser des charges utiles de réponse via l'intégration proxy Amazon API Gateway, qui utilise l'InvokeWithResponseStreamAPI pour appeler votre fonction. Le streaming de réponses peut profiter aux applications sensibles à la latence en améliorant les performances de temps au premier octet (TTFB). En effet, vous pouvez renvoyer des réponses partielles au client dès qu'elles sont disponibles. En outre, les fonctions de diffusion des réponses peuvent renvoyer des données utiles allant jusqu’à 200 Mo, contre un maximum de 6 Mo pour les réponses mises en mémoire tampon.

La diffusion d'une réponse signifie également que votre fonction n'a pas besoin de mémoriser l'intégralité de la réponse. Pour les réponses très volumineuses, cela peut réduire la quantité de mémoire que vous devez configurer pour votre fonction. Pour vous aider à choisir entre les URL des fonctions et API Gateway en fonction de votre cas d'utilisation, consultezSélection d’une méthode pour invoquer votre fonction Lambda à l’aide d’une requête HTTP.

Note

Le streaming de réponses Lambda n'est pas encore disponible dans tout Régions AWS le monde. Pour connaître la disponibilité des fonctionnalités par région, consultez la section AWS Fonctionnalités par région de Builder Center.

La vitesse à laquelle Lambda diffuse vos réponses dépend de la taille de la réponse. Le débit de diffusion pour les 6 premiers Mo de réponse de votre fonction n'est pas plafonné. Pour les réponses supérieures à 6 Mo, le reste de la réponse est soumis à une limite de bande passante. Pour plus d'informations sur la bande passante de diffusion, consultez Limitation de la bande passante pour la diffusion des réponses.

Les réponses en streaming sont coûteuses et les réponses diffusées ne sont ni interrompues ni arrêtées lorsque la connexion du client d'appel est interrompue. Les clients sont facturés pour la durée complète de la fonction. Les clients doivent donc faire preuve de prudence lors de la configuration de longs délais d'expiration des fonctions.

Lambda prend en charge le streaming des réponses sur les environnements d'exécution Node.js gérés. Pour les autres langages, y compris Python, vous pouvez utiliser un environnement d'exécution personnalisé avec une intégration d'API d'exécution personnalisée pour diffuser des réponses ou utiliser l'adaptateur Web Lambda.

Note

Lorsque vous testez votre fonction via la console Lambda, vous verrez toujours les réponses comme étant mises en mémoire tampon.

Pour savoir comment écrire des fonctions de diffusion en continu, consultezÉcriture de fonctions Lambda compatibles avec le streaming de réponses. Pour invoquer des fonctions de streaming via des URL de fonction, consultezInvocation d'une fonction activée pour le streaming de réponses à l'aide de la fonction Lambda URLs. Pour une procédure pas à pas, voirTutoriel : création d’une fonction Lambda de streaming de réponses avec une URL de la fonction.

Limitation de la bande passante pour la diffusion des réponses

Les 6 premiers Mo de la charge utile de réponse de votre fonction ont une bande passante non plafonnée. Après cette première salve, Lambda diffuse votre réponse à un débit maximum de 2 Mbit/s. Si les réponses de votre fonction ne dépassent jamais 6 Mo, cette limite de bande passante ne s’applique pas.

Note

Les limites de bande passante s'appliquent uniquement à la charge utile de réponse de votre fonction, et non à l'accès réseau par votre fonction.

Le débit de bande passante non plafonnée varie en fonction d'un certain nombre de facteurs, notamment de la vitesse de traitement de votre fonction. Vous pouvez normalement vous attendre à un débit supérieur à 2 Mo/s pour les 6 premiers Mo de réponse de votre fonction. Si votre fonction diffuse une réponse vers une destination extérieure AWS, le débit de diffusion dépend également de la vitesse de la connexion Internet externe.

Compatibilité du VPC avec la diffusion en continu de réponses

Lorsque vous utilisez des fonctions Lambda dans un environnement VPC, la diffusion en continu des réponses doit tenir compte de certaines considérations importantes :

  • Les URL des fonctions Lambda ne prennent pas en charge la diffusion en continu des réponses dans un environnement VPC.

  • Vous pouvez utiliser le streaming de réponses dans un VPC en invoquant votre fonction Lambda via le AWS SDK à l'aide de l'API. InvokeWithResponseStream Pour cela, vous devez configurer les points de terminaison VPC appropriés pour Lambda.

  • Pour les environnements VPC, vous devez créer un point de terminaison de VPC d’interface pour Lambda afin de permettre la communication entre vos ressources dans le VPC et dans le service Lambda.

Une architecture typique pour la diffusion en continu des réponses dans un VPC peut inclure :

Client in VPC -> Interface VPC endpoint for Lambda -> Lambda function -> Response streaming back through the same path