Utilisation d’AWS Lambda avec Amazon Lex - 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.

Utilisation d’AWS Lambda avec Amazon Lex

Vous pouvez utiliser Amazon Lex pour intégrer un bot conversationnel dans votre application. Le bot Amazon Lex fournit une interface conversationnelle avec vos utilisateurs. Amazon Lex offre une intégration préintégrée avec Lambda, qui vous permet d'utiliser une fonction Lambda avec votre bot Amazon Lex.

Lorsque vous configurez un bot Amazon Lex, vous pouvez spécifier une fonction Lambda afin d'effectuer la validation, l'exécution ou les deux. Pour la validation, Amazon Lex appelle la fonction Lambda après chaque réponse de l'utilisateur. La fonction Lambda peut valider la réponse et fournir une rétroaction corrective à l'utilisateur, si nécessaire. Pour l'exécution, Amazon Lex appelle la fonction Lambda pour exécuter la demande de l'utilisateur une fois que le bot a recueilli avec succès toutes les informations requises, et reçu la confirmation de l'utilisateur.

Vous pouvez gérer la simultanéité de votre fonction Lambda pour contrôler le nombre maximal de conversations de bot simultanées que vous servez. L'API Amazon Lex renvoie un code d'état HTTP 429 (Too Many Requests) si la fonction est au niveau maximum de simultanéité.

L'API renvoie un code d'état HTTP 424 (Dependency Failed Exception) si la fonction Lambda lève une exception.

Le bot Amazon Lex appelle votre fonction Lambda de manière synchrone. Le paramètre d'événement contient des informations sur le bot et la valeur de chaque emplacement dans la boîte de dialogue. Pour les définitions des champs d'événement et de réponse, consultez Format d'événement et de réponse Lambda dans le Guide du développeur Amazon Lex. Le invocationSource paramètre figurant dans l'événement de message Amazon Lex indique si la fonction Lambda doit valider les entrées (DialogCodeHook) ou répondre à l'intention (FulfillmentCodeHook).

Pour un exemple de didacticiel montrant comment utiliser Lambda avec Amazon Lex, consultez Exercice 1 : Créer un bot Amazon Lex à l'aide d'un modèle dans le Manuel du développeur Amazon Lex.

Rôles et autorisations

Vous devez configurer un rôle lié au service en tant que rôle d'exécution. Amazon Lex définit le rôle lié au service avec des autorisations prédéfinies. Lorsque vous créez un bot Amazon Lex à l'aide de la console, le rôle lié au service est créé automatiquement. Pour créer un rôle lié à un service avec AWS CLI, utilisez la commande create-service-linked-role.

aws iam create-service-linked-role --aws-service-name lex.amazonaws.com

Cette commande crée le rôle suivant :

{ "Role": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "lex.amazonaws.com" } } ] }, "RoleName": "AWSServiceRoleForLexBots", "Path": "/aws-service-role/lex.amazonaws.com/", "Arn": "arn:aws:iam::account-id:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" }

Si votre fonction Lambda utilise d'autres services AWS, vous devez ajouter les autorisations correspondantes au rôle lié au service.

Vous utilisez une politique d'autorisations basée sur les ressources pour permettre au robot Amazon Lex d'invoquer votre fonction Lambda. Si vous utilisez la console Amazon Lex, la stratégie d'autorisations est créée automatiquement. À partir de l'AWS CLI, utilisez la commande add-permission pour définir l'autorisation.

Pour Amazon Lex V2, exécutez la commande suivante. Dans l'ARN source, remplacez us-east-1 par la Région AWS dans laquelle se trouve votre robot Amazon Lex, et utilisez votre propre numéro Compte AWS et pseudonyme de robot.

aws lambda add-permission \ --function-name LexCodeHook \ --statement-id LexInvoke-MyBot \ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:us-east-1:123456789012:bot-alias/MYBOT/MYBOTALIAS"

Vous pouvez également utiliser Amazon Lex V1 pour invoquer une fonction Lambda. Pour Amazon Lex V1, exécutez la commande suivante. Dans l'ARN source, remplacez us-east-1 par la Région AWS dans laquelle se trouve votre intention Amazon Lex et utilisez votre propre numéro Compte AWS et nom d'intention.

aws lambda add-permission \ --function-name LexCodeHook \ --statement-id LexInvoke-MyIntent \ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:us-east-1:123456789012 ID:intent:MYINTENT:*"

Veuillez noter qu'Amazon Lex V1 n'est plus maintenu. Nous vous recommandons d'utiliser Amazon Lex V2.