Acción de invocación de una función de Lambda - Amazon Simple Email Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acción de invocación de una función de Lambda

La acción de Lambda llama al código a través de una función de Lambda y, opcionalmente, se lo notifica a usted a través de Amazon SNS. Esta acción tiene las siguientes opciones y requisitos.

Opciones
  • Lambda function (Función de Lambda): ARN de la función de Lambda. Un ejemplo de ARN de una función de Lambda es arn:aws:lambda:us-east-1:account-id:function:MyFunction.

  • Invocation type (Tema de invocación): tipo de invocación de la función de Lambda. Un tipo de invocación de RequestResponse (Solicitud de respuesta) significa que la ejecución de la función da como resultado una respuesta inmediata. Un tipo de invocación de Event (Evento) significa que la función se invoca de forma asíncrona. Le recomendamos que utilice el tipo de invocación Event (Evento) a menos que su caso de uso requiera la ejecución sincrónica.

    Se produce un desfase de 30 segundos en las invocaciones RequestResponse.

    Para obtener más información, consulte Invocar funciones de Lambda en la Guía para desarrolladores de AWS Lambda.

  • SNS Topic (Tema de SNS): nombre o ARN del tema de Amazon SNS al que se debe enviar la notificación cuando se desencadena la función de Lambda especificada. Un ejemplo de un ARN de tema de Amazon SNS es: arn:aws:sns:us-east-1:123456789012:MyTopic. Para obtener instrucciones, consulte el tema Creación de un tema de Amazon SNS en la Guía para desarrolladores de Amazon Simple Notification Service.

Requisitos
  • La función de Lambda que elija deberá estar en la misma región de AWS que el punto de conexión de Amazon SES que utilice para recibir correo electrónico.

  • El tema de Amazon SNS que elija deberá estar en la misma región de AWS que el punto de conexión de Amazon SES que utilice para recibir correo electrónico.

Escritura de la función de Lambda

Para procesar el correo electrónico, la función de Lambda se puede invocar de manera asíncrona (es decir, utilizando el tipo de invocación Event). El objeto de evento transferido a su función de Lambda contendrá metadatos pertenecientes al evento de correo electrónico de entrada. También puede utilizar los metadatos para acceder al contenido del mensaje desde su bucket de Amazon S3.

Si desea controlar realmente el flujo de correo electrónico, debe invocar la función de Lambda de forma síncrona (es decir, utilizando el tipo de invocación RequestResponse) y la función de Lambda debe llamar al método callback con dos argumentos: el primer argumento es null y el segundo argumento es una propiedad disposition que se establece en STOP_RULE, STOP_RULE_SET o CONTINUE. Si el segundo argumento es null o no tiene una propiedad disposition válida, el flujo de correo continúa y se procesan acciones y reglas adicionales, que es lo mismo que con CONTINUE.

Por ejemplo, puede detener el conjunto de reglas de recepción escribiendo la siguiente línea al final del código de la función de Lambda:

callback( null, { "disposition" : "STOP_RULE_SET" });

Para obtener ejemplos de código de AWS Lambda, consulte Ejemplos de funciones de Lambda. Para ver ejemplos de casos de uso de alto nivel, consulte Ejemplos de casos de uso.

Formato de entrada

Amazon SES transfiere información a la función de Lambda en formato JSON. El objeto de nivel superior contiene una matriz Records, que se rellena con las propiedades eventSource, eventVersion y ses. El objeto ses contiene objetos receipt y mail, que tienen exactamente el mismo formato que en las notificaciones de Amazon SNS descritas en Contenido de las notificaciones.

Los datos que Amazon SES transmite a Lambda incluyen metadatos acerca del mensaje, así como varios encabezados de correo electrónico. Sin embargo, no contiene el cuerpo del mensaje.

A continuación, se ofrece una vista de alto nivel de la estructura de la entrada que Amazon SES proporciona a la función de Lambda.

{ "Records": [ { "eventSource": "aws:ses", "eventVersion": "1.0", "ses": { "receipt": { <same contents as SNS notification> }, "mail": { <same contents as SNS notification> } } } ] }

Return values

La función de Lambda puede controlar el flujo de correo electrónico devolviendo uno de los siguientes valores:

  • STOP_RULE: no se procesarán acciones adicionales en la regla de recepción actual, pero se pueden procesar reglas de recepción adicionales.

  • STOP_RULE_SET: no se procesarán acciones o reglas de recepción adicionales.

  • CONTINUE o cualquier otro valor no válido: esto significa que se pueden procesar acciones y reglas de recepción adicionales.

En los siguientes temas se tratan ejemplos de eventos de correo electrónico entrante, ejemplos de casos de uso de alto nivel y ejemplos de código de AWS Lambda: