Didacticiel : Creating a Lambda function with a function URL (Création d’une fonction Lambda avec une URL de 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.

Didacticiel : Creating a Lambda function with a function URL (Création d’une fonction Lambda avec une URL de 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 fonction public qui renvoie le produit de deux nombres. Pour de plus amples informations sur la configuration des URL de fonctions, consultez Création et gestion des URL de fonctions.

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. Ouvrez la page Rôles de la console AWS Identity and Access Management (IAM).

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

  3. Pour Type d'entité fiable, sélectionnez AWS service, puis pour Cas d'utilisation, sélectionnez Lambda.

  4. Choisissez Suivant.

  5. Dans le volet Permissions policies, entrez AWSLambdaBasicExecutionRole dans le champ de recherche.

  6. Cochez la case à côté de la politique AWSLambdaBasicExecutionRole AWS gérée, puis choisissez Next.

  7. Entrez lambda-url-role le nom du rôle, puis choisissez Créer un rôle.

La AWSLambdaBasicExecutionRole politique dispose des autorisations dont la fonction a besoin pour écrire des CloudWatch journaux sur Amazon Logs. Plus loin dans le didacticiel, vous aurez besoin du nom de ressource Amazon (ARN) du rôle pour créer votre fonction Lambda.

Pour trouver l'ARN de votre rôle d'exécution
  1. Ouvrez la page Rôles de la console AWS Identity and Access Management (IAM).

  2. Sélectionnez le rôle que vous venez de créer (lambda-url-role).

  3. Dans le volet Résumé, copiez l'ARN.

Création d’une fonction Lambda avec une URL de fonction (archive de fichier ZIP)

Créer une fonction Lambda avec un point de terminaison d’URL de fonction en utilisant une archive de fichier .zip.

Pour créer la fonction
  1. Copiez l’exemple de code suivant dans un fichier nommé index.js.

    Exemple index.js
    exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; };
  2. Créez un package de déploiement.

    zip function.zip index.js
  3. Créez une fonction Lambda à l’aide de la commande create-function. Assurez-vous de remplacer l'ARN du rôle par l'ARN de votre propre rôle d'exécution que vous avez copié plus tôt dans le didacticiel.

    aws lambda create-function \ --function-name my-url-function \ --runtime nodejs18.x \ --zip-file fileb://function.zip \ --handler index.handler \ --role arn:aws:iam::123456789012:role/lambda-url-role
  4. Ajoutez une stratégie basée sur les ressources à votre fonction en accordant des autorisations pour autoriser l’accès public à l’URL de votre fonction.

    aws lambda add-permission \ --function-name my-url-function \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type "NONE" \ --statement-id url
  5. 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-url-function \ --auth-type NONE

Test du point de terminaison d’URL de fonction

Appelez votre fonction Lambda en appelant le point de terminaison d’URL de la fonction avec un client HTTP tel que curl ou Postman.

curl 'https://abcdefg.lambda-url.us-east-1.on.aws/' \ -H 'Content-Type: application/json' \ -d '{"num1": "10", "num2": "10"}'

Vous devriez voir la sortie suivante :

The product of 10 and 10 is 100

Création d'une fonction Lambda avec une URL de fonction () CloudFormation

Vous pouvez également créer une fonction Lambda avec un point de terminaison URL de fonction en utilisant le AWS CloudFormation type. AWS::Lambda::Url

Resources: MyUrlFunction: Type: AWS::Lambda::Function Properties: Handler: index.handler Runtime: nodejs18.x Role: arn:aws:iam::123456789012:role/lambda-url-role Code: ZipFile: | exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; }; Description: Create a function with a URL. MyUrlFunctionPermissions: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref MyUrlFunction Action: lambda:InvokeFunctionUrl Principal: "*" FunctionUrlAuthType: NONE MyFunctionUrl: Type: AWS::Lambda::Url Properties: TargetFunctionArn: !Ref MyUrlFunction AuthType: NONE

Créer une fonction Lambda avec une URL de fonction (AWS SAM)

Vous pouvez également créer une fonction Lambda configurée avec une URL de fonction en utilisant AWS Serverless Application Model ()AWS SAM.

ProductFunction: Type: AWS::Serverless::Function Properties: CodeUri: function/. Handler: index.handler Runtime: nodejs18.x AutoPublishAlias: live FunctionUrlConfig: AuthType: NONE

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).