Suspensión automática del envío de correos electrónicos para un conjunto de configuración - 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.

Suspensión automática del envío de correos electrónicos para un conjunto de configuración

Puede configurar Amazon SES para exportar métricas de reputación específicas de los mensajes de correo electrónico enviados mediante un conjunto de configuración específico a Amazon CloudWatch. A continuación, puede utilizar estas métricas para crear alarmas de CloudWatch específicas de estos conjuntos de configuración. Cuando estas alarmas superen determinados umbrales, puede suspender automáticamente el envío de mensajes de correo electrónico que utilizan los conjuntos de configuración especificados, sin que esto afecte a las funcionalidades generales de envío de correo de su cuenta de Amazon SES.

nota

La solución que se describe en esta sección detiene el envío de correo electrónico para un conjunto de configuración específico de una sola región de AWS. Si envía correo electrónico desde varias regiones, repita los procedimientos de esta sección para cada región en la que desee implementar esta solución.

Parte 1: habilitar los informes de métricas de reputación de un conjunto de configuración

Para poder configurar Amazon SES para suspender automáticamente el envío de correo electrónico para un conjunto de configuración, primero debe habilitar la exportación de métricas de reputación para el conjunto de configuración.

Para habilitar la exportación de métricas de rebotes y reclamaciones para el conjunto de configuración, realice los pasos de Visualización y exportación de métricas de reputación.

Parte 2: crear un rol de IAM

El primer paso para configurar la suspensión automática del envío de correo electrónico es crear un rol de IAM que pueda ejecutar la operación de la API UpdateConfigurationSetSendingEnabled.

Para crear el rol de IAM
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Seleccione Roles en el panel de navegación.

  3. Elija Create role (Crear rol).

  4. En Select type of trusted entity (Seleccionar tipo de entidad de confianza), elija AWS service (Servicio de AWS).

  5. En Choose the service that will use this role (Elegir el servicio que usará este rol), elija Lambda. Elija Next: Permissions (Siguiente: permisos).

  6. En la página Attach permissions policies (Adjuntar políticas de permisos), elija las siguientes políticas:

    • AWS LambdaBasicExecutionRole

    • AmazonSESFullAccess

    sugerencia

    Utilice el cuadro de búsqueda de la parte superior de la lista de políticas para buscar rápidamente estas políticas.

    Elija Next: Review (Siguiente: revisar).

  7. En la página Review (Revisar), en Name (Nombre), escriba un nombre para el rol. Elija Create role (Crear rol).

Parte 3: crear la función de Lambda

Después de crear un rol de IAM, puede crear la función de Lambda que suspende el envío de correo electrónico para el conjunto de configuración.

Para crear la función de Lambda
  1. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.

  2. Utilice el selector de regiones para elegir la región en la que desea implementar esta función de Lambda.

    nota

    Esta función solo detiene el envío de correo electrónico para los conjuntos de configuración de la región de AWS que seleccione en este paso. Si envía correos electrónicos desde más de una región, repita los procedimientos de esta sección para cada región en la que desee suspender automáticamente el envío de correos electrónicos.

  3. Elija Crear función.

  4. En Create function (Crear función), elija Author from scratch (Autor desde cero).

  5. En Author from scratch (Autor desde cero), haga lo siguiente:

    • En Name (Nombre), escriba un nombre para la función de Lambda.

    • Para Runtime (Tiempo de ejecución), elija Node.js 14 x (o la versión que se ofrece actualmente en la lista de selección).

    • En Role (Rol), elija Choose an existing role (Elegir un rol existente).

    • En Existing role (Rol existente), elija el rol de IAM que creó en Parte 2: crear un rol de IAM.

    Elija Crear función.

  6. En Function code (Código de función), en el editor de código, pegue el código siguiente:

    'use strict'; var aws = require('aws-sdk'); // Create a new SES object. var ses = new aws.SES(); // Specify the parameters for this operation. In this example, you pass the // Enabled parameter, with a value of false (Enabled = false disables email // sending, Enabled = true enables it). You also pass the ConfigurationSetName // parameter, with a value equal to the name of the configuration set for // which you want to pause email sending. var params = { ConfigurationSetName: ConfigSet, Enabled: false }; exports.handler = (event, context, callback) => { // Pause sending for a configuration set ses.updateConfigurationSetSendingEnabled(params, function(err, data) { if(err) { console.log(err.message); } else { console.log(data); } }); };

    Reemplace ConfigSet en el código anterior por el nombre del conjunto de configuración. Seleccione Save.

  7. Seleccione Test (Probar). Si aparece la ventana Configure test event (Configurar prueba de evento), escriba un nombre en el campo Event name (Nombre de evento) y, a continuación, elija Create (Crear).

  8. Asegúrese de que en la barra de notificación de la parte superior de la página se indica Execution result: succeeded. Si la función no se pudo ejecutar, haga lo siguiente:

    • Compruebe que el rol de IAM que creó en Parte 2: crear un rol de IAM contiene las políticas correctas.

    • Compruebe que el código de la función de Lambda no contiene ningún error. El editor de código de Lambda resalta automáticamente los errores de sintaxis y otros posibles problemas.

Parte 4: volver a habilitar el envío de correo electrónico para el conjunto de configuración

Un efecto secundario de probar la función de Lambda en Parte 3: crear la función de Lambda es que el envío de correo electrónico para el conjunto de configuración se suspende. En la mayoría de los casos, no conviene suspender el envío para el conjunto de configuración hasta que se activa la alarma de CloudWatch.

Los procedimientos de esta sección vuelven a habilitar el envío de correos electrónicos para su conjunto de configuración. Para completar estos procedimientos, debe instalar y configurar la AWS Command Line Interface. Para obtener más información, consulte la Guía del usuario de AWS Command Line Interface.

Para volver a habilitar el envío de correo electrónico
  1. En la línea de comandos, escriba el siguiente comando para volver a habilitar el envío de correos electrónicos para el conjunto de configuración:

    aws ses update-configuration-set-sending-enabled \ --configuration-set-name ConfigSet \ --enabled

    En el comando anterior, sustituya ConfigSet por el nombre del conjunto de configuración para el que desea poner en pausa el envío de correo electrónico.

  2. En la línea de comandos, escriba el siguiente comando para asegurarse de que el envío de correos electrónicos está habilitado:

    aws ses describe-configuration-set \ --configuration-set-name ConfigSet \ --configuration-set-attribute-names reputationOptions

    El comando genera resultados similares al siguiente ejemplo:

    { "ConfigurationSet": { "Name": "ConfigSet" }, "ReputationOptions": { "ReputationMetricsEnabled": true, "SendingEnabled": true } }

    Si el valor de SendingEnabled es true, el envío de correos electrónicos para el conjunto de configuración se ha vuelto a habilitar correctamente.

Parte 5: crear un tema de Amazon SNS

Para que CloudWatch ejecute la función de Lambda cuando se desencadene una alarma, primero debe crear un tema de Amazon SNS y suscribir la función de Lambda a ese tema.

Para crear el tema de Amazon SNS
  1. Abra la consola de Amazon SNS en https://console.aws.amazon.com/sns/v3/home.

  2. Utilice el selector de regiones para elegir la región en la que desea suspender automáticamente el envío de correos electrónicos.

  3. En el panel de navegación, elija Topics (Temas).

  4. Elija Create new topic (Crear nuevo tema).

  5. En la ventana Create new topic (Crear nuevo tema), para Topic name (Nombre del tema), escriba un nombre para el tema. También puede incluir un nombre más descriptivo en el campo Display name (Mostrar nombre).

    Elija Create new topic (Crear nuevo nombre).

  6. En la lista de temas, active la casilla situada junto al tema que creó en el paso anterior. En el menú Actions (Acciones), seleccione Subscribe to topic (Suscribirse al tema).

  7. En la ventana Create subscription (Crear suscripción), seleccione estas opciones:

    • En Protocol (Protocolo), elija AWS Lambda.

    • En Endpoint (Punto de enlace), elija la función de Lambda que creó en Parte 3: crear la función de Lambda.

    • En Version or alias (Versión o alias), elija default (predeterminado).

  8. Seleccione Create subscription (Crear suscripción).

Parte 6: crear una alarma de CloudWatch

Esta sección contiene los procedimientos para crear una alarma de CloudWatch que se desencadena cuando una métrica alcanza un determinado umbral. Cuando se desencadena la alarma, se envía una notificación al tema de Amazon SNS que creó en Parte 5: crear un tema de Amazon SNS, que a su vez ejecuta la función de Lambda que creó en Parte 3: crear la función de Lambda.

Para crear una alarma de CloudWatch
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. Utilice el selector de regiones para elegir la región en la que desea suspender automáticamente el envío de correos electrónicos.

  3. En el panel de navegación de la izquierda, elija Alarms (Alarmas).

  4. Elija Create Alarm (Crear alarma).

  5. En la ventana Create Alarm (Crear alarma), en SES Metrics (Métricas de SES), elija Configuration Set Metrics (Métricas de conjunto de configuración).

  6. En la columna ses:configuration-set, busque el conjunto de configuración para el que desea crear una alarma. En Metric Name (Nombre de métrica), elija una de las siguientes opciones:

    • Reputation.BounceRate: elija esta métrica si desea poner en pausa el envío de correos electrónicos para el conjunto de configuración cuando el total de rechazos permanentes del conjunto de configuración supere el umbral definido.

    • Reputation.ComplaintRate: elija esta métrica si desea poner en pausa el envío de correos electrónicos para el conjunto de configuración cuando el total de reclamaciones del conjunto de configuración supere el umbral definido.

    Seleccione Next (Siguiente).

  7. Realice los pasos siguientes:

    • En Alarm Threshold (Umbral de alarma), para Name (Nombre), escriba un nombre para la alarma.

    • En Whenever: Reputation.BounceRate o en Whenever: Reputation.ComplaintRate, especifique el umbral que provocará la activación de la alarma.

      nota

      Si la tasa de rebotes de su cuenta de Amazon SES supera el 10 % o si la tasa de reclamos total de su cuenta de Amazon SES supera el 0,5 %, su cuenta de Amazon SES se pone automáticamente en proceso de revisión. Cuando especifique la tasa de rebotes o reclamos que hacen que se desencadene la alarma de CloudWatch, le recomendamos que utilice valores muy inferiores a estos porcentajes para evitar que su cuenta se ponga en proceso de revisión.

    • En Actions (Acciones), en Whenever this alarm (Siempre que esta alarma), elija State is ALARM (El estado es ALARMA). En Send notification to (Enviar notificación a), elija el tema de Amazon SNS que creó en Parte 5: crear un tema de Amazon SNS.

    Elija Create Alarm (Crear alarma).

Parte 7: probar la solución

Ahora puede probar la alarma para asegurarse de que se ejecuta la función de Lambda cuando entra en el estado ALARM. Puede utilizar la operación SetAlarmState de la API de CloudWatch para cambiar temporalmente el estado de la alarma.

Los procedimientos de esta sección son opcionales, pero le recomendamos que los realice para comprobar que toda la solución está configurada correctamente.

Para probar la solución
  1. En la línea de comandos, escriba el siguiente comando para comprobar el estado del envío de correos electrónicos para el conjunto de configuración:

    aws ses describe-configuration-set --configuration-set-name ConfigSet

    Si el envío está habilitado para el conjunto de configuración, se muestra el resultado siguiente:

    { "ConfigurationSet": { "Name": "ConfigSet" }, "ReputationOptions": { "ReputationMetricsEnabled": true, "SendingEnabled": true } }

    Si el valor de SendingEnabled es true, el envío de correos electrónicos está habilitado actualmente para el conjunto de configuración.

  2. En la línea de comandos, escriba el comando siguiente para cambiar temporalmente el estado de la alarma a ALARM:

    aws cloudwatch set-alarm-state \ --alarm-name MyAlarm \ --state-value ALARM \ --state-reason "Testing execution of Lambda function"

    Reemplace MiAlarma en el comando anterior por el nombre de la alarma que creó en Parte 6: crear una alarma de CloudWatch.

    nota

    Cuando ejecute este comando, el estado de la alarma pasa de OK a ALARM y luego otra vez a OK al cabo de unos segundos. Puede ver estos cambios de estado en la pestaña History (Historial) de la alarma en la consola de CloudWatch o mediante la operación DescribeAlarmHistory.

  3. En la línea de comandos, escriba el siguiente comando para comprobar el estado del envío de correos electrónicos para el conjunto de configuración:

    aws ses describe-configuration-set \ --configuration-set-name ConfigSet

    Si la función de Lambda se ejecutó correctamente, verá un resultado similar al siguiente ejemplo:

    { "ConfigurationSet": { "Name": "ConfigSet" }, "ReputationOptions": { "ReputationMetricsEnabled": true, "SendingEnabled": false } }

    Si el valor de SendingEnabled es false, el envío de correo electrónico para el conjunto de configuración se desactiva, lo que indica que la función de Lambda se ha ejecutado correctamente.

  4. Realice los pasos de Parte 4: volver a habilitar el envío de correo electrónico para el conjunto de configuración para volver a habilitar el envío de correos electrónicos para el conjunto de configuración.