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.
Tutoriel : création d’une fonction Lambda de streaming de réponses avec une URL de la fonction
Dans ce didacticiel, vous créez une fonction Lambda définie comme archive de fichier ZIP avec un point de terminaison d’URL de la fonction qui renvoie un flux de réponses. Pour plus d'informations sur la configuration de la fonction URLs, consultezFonction URLs.
Prérequis
Ce didacticiel suppose que vous avez quelques connaissances des opérations Lambda de base et de la console Lambda. Si ce n’est déjà fait, suivez les instructions fournies dans Créer une fonction Lambda à l'aide de la console pour créer votre première fonction Lambda.
Pour effectuer les étapes suivantes, vous avez besoin de l’AWS CLI version 2. Les commandes et la sortie attendue sont répertoriées dans des blocs distincts :
aws --version
Vous devriez voir la sortie suivante:
aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2
Pour les commandes longues, un caractère d’échappement (\) est utilisé pour les fractionner en plusieurs lignes.
Sur Linux et macOS, utilisez votre gestionnaire de shell et de package préféré.
Note
Sous Windows, certaines commandes CLI Bash que vous utilisez couramment avec Lambda (par exemple zip) ne sont pas prises en charge par les terminaux intégrés du système d’exploitation. Installez le sous-système Windows pour Linux
Créer un rôle d’exécution
Créez le rôle d’exécution qui donne à votre fonction Lambda l’autorisation d’accéder aux ressources AWS .
Pour créer un rôle d’exécution
-
Accédez à la page Roles (Rôles)
de la AWS Identity and Access Management console (IAM). -
Sélectionnez Créer un rôle.
-
Créez un rôle avec les propriétés suivantes :
-
Type d’entité sécurisée – Service AWS
-
Cas d’utilisation – Lambda
-
Permissions (Autorisations – AWSLambdaBasicExecutionRole
-
Nom de rôle –
response-streaming-role
-
La AWSLambdaBasicExecutionRolepolitique dispose des autorisations dont la fonction a besoin pour écrire des CloudWatch journaux sur Amazon Logs. Après avoir créé le rôle, notez son Amazon Resource Name (ARN). Vous en aurez besoin à l’étape suivante.
Création d’une fonction de streaming de réponses (AWS CLI)
Créez une fonction Lambda de streaming de réponses avec un point de terminaison d’URL de la fonction à l’aide de l’ AWS Command Line Interface (AWS CLI).
Pour créer une fonction capable de diffuser des réponses
-
Copiez l’exemple de code suivant dans un fichier nommé
index.js. Cette fonction diffuse trois réponses, séparées d'une seconde.exports.handler = awslambda.streamifyResponse( async (event, responseStream, _context) => { // Metadata is a JSON serializable JS object. Its shape is not defined here. const metadata = { statusCode: 200, headers: { "Content-Type": "application/json", "CustomHeader": "outerspace" } }; // Assign to the responseStream parameter to prevent accidental reuse of the non-wrapped stream. responseStream = awslambda.HttpResponseStream.from(responseStream, metadata); responseStream.write("Streaming with Helper \n"); await new Promise(r => setTimeout(r, 1000)); responseStream.write("Hello 0 \n"); await new Promise(r => setTimeout(r, 1000)); responseStream.write("Hello 1 \n"); await new Promise(r => setTimeout(r, 1000)); responseStream.write("Hello 2 \n"); await new Promise(r => setTimeout(r, 1000)); responseStream.end(); await responseStream.finished(); } ); -
Créez un package de déploiement.
zip function.zip index.js -
Créez une fonction Lambda à l’aide de la commande
create-function. Remplacez la valeur de--rolepar l’ARN de rôle de l’étape précédente. Cette commande définit le délai d'expiration de la fonction à 10 secondes, ce qui permet à la fonction de diffuser trois réponses.aws lambda create-function \ --function-namemy-streaming-function\ --runtime nodejs22.x \ --zip-file fileb://function.zip \ --handler index.handler \ --timeout 10 \ --rolearn:aws:iam::123456789012:role/response-streaming-role
Pour créer une URL de la fonction
-
Ajoutez à votre fonction une politique basée sur les ressources qui octroie
lambda:InvokeFunctionUrldeslambda:InvokeFunctionautorisations. Chaque instruction doit être ajoutée dans une commande distincte. Remplacez la valeur de--principalpar votre Compte AWS identifiant.aws lambda add-permission \ --function-name my-streaming-function \ --action lambda:InvokeFunctionUrl \ --statement-id UrlPolicyInvokeURL \ --principal123456789012\ --function-url-auth-type AWS_IAMaws lambda add-permission \ --function-name my-streaming-function \ --action lambda:InvokeFunction \ --statement-id UrlPolicyInvokeFunction \ --principal123456789012 -
Créez un point de terminaison d’URL pour la fonction avec la commande
create-function-url-config.aws lambda create-function-url-config \ --function-name my-streaming-function \ --auth-type AWS_IAM \ --invoke-mode RESPONSE_STREAMNote
Si un message d'erreur s'affiche à propos de
--invoke-mode, il se peut que vous deviez effectuer une mise à niveau vers une version plus récente du AWS CLI.
Test du point de terminaison d’URL de fonction
Testez votre intégration en invoquant votre fonction. Vous pouvez ouvrir l’URL de votre fonction dans un navigateur ou utiliser curl.
curl --request GET "https://abcdefghijklm7nop7qrs740abcd.lambda-url.us-east-1.on.aws/" --user "AKIAIOSFODNN7EXAMPLE" --aws-sigv4 "aws:amz:us-east-1:lambda" --no-buffer
Notre URL de la fonction utilise le type d’authentification IAM_AUTH. Cela signifie que vous devez signer les demandes à la fois avec votre cléAWS d'accès et votre clé secrète. Dans la commande précédente, remplacez par AKIAIOSFODNN7EXAMPLE l'ID de la clé d' AWS accès. Entrez votre clé AWS secrète lorsque vous y êtes invité. Si vous n'avez pas votre clé AWS secrète, vous pouvez utiliser des AWS informations d'identification temporaires à la place.
Vous devriez obtenir une réponse comme celle-ci :
Streaming with Helper Hello 0 Hello 1 Hello 2
Nettoyage de vos ressources
Vous pouvez maintenant supprimer les ressources que vous avez créées pour ce didacticiel, sauf si vous souhaitez les conserver. En supprimant AWS les ressources que vous n'utilisez plus, vous évitez des frais inutiles pour votre Compte AWS.
Pour supprimer le rôle d’exécution
-
Ouvrez la page Roles (Rôles)
de la console IAM. -
Sélectionnez le rôle d’exécution que vous avez créé.
-
Sélectionnez Delete (Supprimer).
-
Saisissez le nom du rôle dans le champ de saisie de texte et choisissez Delete (Supprimer).
Pour supprimer la fonction Lambda
-
Ouvrez la page Functions (Fonctions)
de la console Lambda. -
Sélectionnez la fonction que vous avez créée.
-
Sélectionnez Actions, Supprimer.
-
Saisissez
confirmdans la zone de saisie de texte et choisissez Delete (Supprimer).