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 de plus amples informations sur la configuration des URL de fonctions, consultez Fonction 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 Command Line Interface (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
-
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.mjs
.import util from 'util'; import stream from 'stream'; const { Readable } = stream; const pipeline = util.promisify(stream.pipeline); /* global awslambda */ export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => { const requestStream = Readable.from(Buffer.from(JSON.stringify(event))); await pipeline(requestStream, responseStream); });
-
Créez un package de déploiement.
zip function.zip index.mjs
-
Créez une fonction Lambda à l’aide de la commande
create-function
. Remplacez la valeur de--role
par l’ARN de rôle de l’étape précédente.aws lambda create-function \ --function-name
my-streaming-function
\ --runtime nodejs16.x \ --zip-file fileb://function.zip \ --handler index.handler \ --rolearn:aws:iam::123456789012:role/response-streaming-role
Pour créer une URL de la fonction
-
Ajoutez une stratégie basée sur les ressources à votre fonction pour autoriser l’accès à l’URL de votre fonction. Remplacez la valeur de
--principal
par votre Compte AWS identifiant.aws lambda add-permission \ --function-name my-streaming-function \ --action lambda:InvokeFunctionUrl \ --statement-id 12345 \ --principal
123456789012
\ --function-url-auth-type AWS_IAM \ --statement-id url -
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_STREAM
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 "
<function_url>
" --user "<key:token>
" --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 avec votre clé AWS d'accès et votre clé secrète. Dans la commande précédente, remplacez par <key:token>
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.
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
delete
dans la zone de saisie de texte et choisissez Delete (Supprimer).