Utilisation d’AWS Lambda avec Amazon Lex - AWS Lambda

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 paramètre invocationSource dans l'événement de message Amazon Lex indique si la fonction Lambda doit valider les entrées (DialogCodeHook) ou remplir 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 stratégie d'autorisations basée sur une ressource pour autoriser l'intention Amazon Lex à appeler 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. L'exemple suivant définit l'autorisation pour l'intention OrderFlowers.

aws lambda add-permission \ --function-name OrderFlowersCodeHook \ --statement-id LexGettingStarted-OrderFlowersBot \ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:us-east-1:123456789012 ID:intent:OrderFlowers:*"