Tutoriel : création d’une fonction Lambda de streaming de réponses avec une URL de la fonction - 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.

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 afin d’obtenir une version intégrée à Windows d’Ubuntu et Bash. Les exemples de commandes CLI de ce guide utilisent le formatage Linux. Les commandes qui incluent des documents JSON en ligne doivent être reformatées si vous utilisez la CLI Windows.

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
  1. Accédez à la page Roles (Rôles) de la AWS Identity and Access Management console (IAM).

  2. Sélectionnez Créer un rôle.

  3. Créez un rôle avec les propriétés suivantes :

    • Type d’entité sécuriséeService AWS

    • Cas d’utilisationLambda

    • AutorisationsAWSLambdaBasicExecutionRole

    • Nom de rôleresponse-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
  1. 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); });
  2. Créez un package de déploiement.

    zip function.zip index.mjs
  3. 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 \ --role arn:aws:iam::123456789012:role/response-streaming-role
Pour créer une URL de la fonction
  1. 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
  2. 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
  1. Ouvrez la page Roles (Rôles) de la console IAM.

  2. Sélectionnez le rôle d’exécution que vous avez créé.

  3. Sélectionnez Delete (Supprimer).

  4. Saisissez le nom du rôle dans le champ de saisie de texte et choisissez Delete (Supprimer).

Pour supprimer la fonction Lambda
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez la fonction que vous avez créée.

  3. Sélectionnez Actions, Supprimer.

  4. Saisissez delete dans la zone de saisie de texte et choisissez Delete (Supprimer).