Uso de AWS Lambda con Amazon Lex - AWS Lambda

Uso de AWS Lambda con Amazon Lex

Puede utilizar Amazon Lex para integrar un bot de conversación en su aplicación. El bot de Amazon Lex proporciona una interfaz de conversación con sus usuarios. Amazon Lex proporciona una integración prediseñada con Lambda, lo que permite utilizar una función de Lambda con el bot de Amazon Lex.

Al configurar un bot de Amazon Lex, puede especificar una función de Lambda para llevar a cabo la validación, el procesamiento o ambos. Para la validación, Amazon Lex invoca la función de Lambda después de cada respuesta del usuario. La función de Lambda puede validar la respuesta y proporcionar retroalimentación correctiva al usuario, si es necesario. Para el procesamiento, Amazon Lex invoca la función de Lambda para procesar la solicitud del usuario una vez que el bot haya recopilado correctamente toda la información requerida y haya recibido la confirmación del usuario.

Puede administrar la simultaneidad de la función de Lambda para controlar el número máximo de conversaciones de bot simultáneas que se pueden atender. La API de Amazon Lex devuelve un código de estado HTTP 429 (Too Many Requests (Demasiadas solicitudes)) si se alcanza la simultaneidad máxima de la función.

La API devuelve un código de estado HTTP 424 (Dependency Failed Exception (Excepción con error de dependencia)) si la función de Lambda genera una excepción.

El bot de Amazon Lex invoca la función de Lambda de forma síncrona. El parámetro de evento contiene información sobre el bot y el valor de cada ranura del diálogo. Para obtener definiciones acerca de los campos de evento y respuesta, consulte Formato del evento de entrada y de la respuesta de Lambda en la Guía para desarrolladores de Amazon Lex. El invocationSource parámetro del evento del mensaje Amazon Lex indica si la función Lambda debe validar las entradas (DialogCodeHook) o cumplir con la intención (FulfillmentCodeHook).

Para ver un tutorial de ejemplo que muestra cómo utilizar Lambda con Amazon Lex, consulte Ejercicio 1: creación de un bot de Amazon Lex mediante un proyecto en la Guía para desarrolladores de Amazon Lex.

Roles y permisos

Debe configurar un rol vinculado a servicio como rol de ejecución su función. Amazon Lex define el rol vinculado a servicio con permisos predefinidos. Al crear un bot de Amazon Lex mediante la consola, el rol vinculado a servicio se crea automáticamente. Para crear un rol vinculado a servicio con la CLI de AWS CLI, utilice el comando create-service-linked-role.

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

Este comando crea el siguiente rol.

{ "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 la función de Lambda utiliza otros servicios de AWS, debe agregar los permisos correspondientes al rol vinculado a servicio.

Utilice una política de permisos basada en recursos para permitir que el bot de Amazon Lex invoque la función de Lambda. Si utiliza la consola de Amazon Lex, la política de permisos se crea automáticamente. En la AWS CLI, utilice el comando Lambda add-permission para establecer el permiso.

Para Amazon Lex V2, ejecute el siguiente comando. En el ARN de origen, sustituya us-east-1 por el Región de AWS en el que aparece su bot de Amazon Lex y utilice su propio número de Cuenta de AWS y alias del bot.

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"

También puede utilizar Amazon Lex V1 para invocar una función de Lambda. Para Amazon Lex V1, ejecute el siguiente comando. En el ARN de origen, sustituya us-east-1 por el Región de AWS en el que aparece su intención de Amazon Lex y utilice su propio número Cuenta de AWS y nombre de intención.

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:*"

Tenga en cuenta que Amazon Lex V1 ya no se mantiene. Le recomendamos utilizar Amazon Lex V2.