Pausa automática do envio de e-mails para toda a conta do Amazon SES - Amazon Simple Email Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Pausa automática do envio de e-mails para toda a conta do Amazon SES

Os procedimentos nesta seção explicam as etapas para configurar o Amazon SES, o Amazon SNS, o Amazon CloudWatch e AWS Lambda para pausar automaticamente o envio de e-mails da sua conta do Amazon SES em uma única região da AWS. Se você envia e-mails de várias regiões, repita os procedimentos desta seção para cada região na qual deseja implementar esta solução.

Parte 1: Criar uma função do IAM

A primeira etapa para configurar a pausa automática de envio de e-mail é criar uma função do IAM que possa executar a operação de API UpdateAccountSendingEnabled.

Para criar a função do IAM
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, selecione Roles.

  3. Selecione Create role.

  4. Na página Selecionar entidade confiável, escolha Serviço da AWS para Tipo de entidade confiável.

  5. Em Use case (Caso de uso), escolha Lambda e Next (Próximo).

  6. Na página Add permissions (Adicionar permissões), escolha as seguintes políticas:

    • AWSLambdaBasicExecutionRole

    • AmazonSESFullAccess

    dica

    Use a caixa de pesquisa em Permission policies (Políticas de permissão) para localizar rapidamente essas políticas, mas observe que, depois de pesquisar e selecionar a primeira política, você deverá escolher Clear filters (Limpar filtros) antes de pesquisar e selecionar a segunda política.

    Em seguida, escolha Next (Próximo).

  7. Na página Name, review, and create (Fornecer nome, revisar e criar), em Role details (Detalhes da função), insira um nome significativo para a política no campo Role name (Nome da função).

  8. Verifique se as duas políticas selecionadas estão listadas na tabela Permissions policy summary (Resumo de políticas de permissões) e escolha Create role (Criar função).

Parte 2: Criar a função do Lambda

Depois de criar uma função do IAM, você pode criar a função do Lambda que pausa o envio de e-mails para sua conta.

Como criar a função do Lambda
  1. Abra o console do AWS Lambda em https://console.aws.amazon.com/lambda/.

  2. Use o seletor de regiões para escolher a região onde você deseja implantar esta função do Lambda.

    nota

    Essa função pausa o envio de e-mails somente na região da AWS que você selecionar nesta etapa. Se você envia e-mails de mais de uma região, repita os procedimentos desta seção para cada região na qual deseja pausar automaticamente o envio de e-mails.

  3. Escolha Create function (Criar função).

  4. Em Create function (Criar função), escolha Author from scratch (Criar do zero).

  5. Em Basic information (Informações básicas), execute as seguintes etapas:

    • Em Function name (Nome da função), digite um nome para a função do Lambda.

    • Em Runtime, escolha Node.js 18x (ou a versão atualmente oferecida na lista de seleção).

    • Em Architecture (Arquitetura), mantenha o padrão pré-selecionado, x86_64.

    • Em Permissions (Permissões), amplie Change default execution role (Alterar função de execução padrão) e escolha Use an existing role (Usar uma função existente).

    • Clique no interior da caixa de lista Existing role (Função existente) e escolha a função do IAM criada em Parte 1: Criar uma função do IAM.

    Em seguida, selecione Create function (Criar função).

  6. Em Code source (Fonte do código), no editor de código, cole o seguinte código:

    'use strict'; const { SES } = require("@aws-sdk/client-ses") // Create a new SES object. var ses = new SES({}); // Specify the parameters for this operation. In this case, there is only one // parameter to pass: the Enabled parameter, with a value of false // (Enabled = false disables email sending, Enabled = true enables it). var params = { Enabled: false }; exports.handler = (event, context, callback) => { // Pause sending for your entire SES account ses.updateAccountSendingEnabled(params, function(err, data) { if(err) { console.log(err.message); } else { console.log(data); } }); };

    Selecione Deploy (Implantar).

  7. Escolha Test (Testar). Se a janela Configure test event (Configurar evento de teste) for exibida, digite um nome no campo Event name (Nome do evento) e escolha Save (Salvar).

  8. Expanda a caixa suspensa Test (Teste), selecione o nome do evento recém-criado e escolha Test (Teste).

  9. A guia Execution results (Resultados da execução) será exibida: logo abaixo dela e à direita, verifique se Status: Succeeded é exibido. Se a função não for executada, faça o seguinte:

    • Verifique se a função do IAM que você criou em Parte 1: Criar uma função do IAM contém as políticas corretas.

    • Verifique se o código da função do Lambda não contém nenhum erro. O editor de código do Lambda automaticamente destaca os erros de sintaxe e outros problemas potenciais.

Parte 3: reativar o envio de e-mail para sua conta

Um efeito secundário do teste de função do Lambda em Parte 2: Criar a função do Lambda é que o envio de e-mail para sua conta do Amazon SES é pausado. Na maioria dos casos, não é aconselhável pausar o envio para sua conta enquanto o alarme do CloudWatch não for acionado.

Os procedimentos nesta seção reabilitam o envio de e-mail para sua conta do Amazon SES. Para concluir esses procedimentos, você deve instalar e configurar a AWS Command Line Interface. Para obter mais informações, consulte o Guia do usuário do AWS Command Line Interface.

Para reativar o envio de e-mail
  1. Na linha de comando, digite o comando a seguir para reabilitar o envio de e-mails para a sua conta. Substitua sending_region pelo nome da região onde você deseja reabilitar o envio de e-mails.

    aws ses update-account-sending-enabled --enabled --region sending_region
  2. Na linha de comando, digite o seguinte comando para verificar o status de envio de e-mails para a sua conta:

    aws ses get-account-sending-enabled --region sending_region

    Se visualizar a saída a seguir, isso significa que conseguiu reativar o envio de e-mail para sua conta:

    { "Enabled": true }

Parte 4: criar um tópico e uma assinatura do Amazon SNS

Para o CloudWatch executar sua função do Lambda quando um alarme é acionado, primeiro é necessário cria um tópico do Amazon SNS e assinar a função do Lambda para ele.

Como criar o tópico do Amazon SNS e assiná-lo com a função do Lambda
  1. Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v3/home.

  2. Crie um tópico seguindo as etapas indicadas no Guia do desenvolvedor do Amazon Simple Notification Service.

    1. O Type (Tipo) deve ser Standard (Comum) (não FIFO).

  3. Assine o tópico seguindo as etapas indicadas no Guia do desenvolvedor do Amazon Simple Notification Service.

    1. Em Protocol (Protocolo), selecione AWS Lambda.

    2. Em Endpoint, escolha a função do Lambda que você criou em Parte 2: Criar a função do Lambda.

Parte 5: Criar um alarme do CloudWatch

Esta seção contém procedimentos para criar um alarme no CloudWatch que é acionado quando uma métrica atinge determinado limite. Quando o alarme é acionado, ele envia uma notificação ao tópico do Amazon SNS criado em Parte 4: criar um tópico e uma assinatura do Amazon SNS que, então, executa a função do Lambda criada em Parte 2: Criar a função do Lambda.

Criar um alarme do CloudWatch
  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. Use o seletor de regiões para escolher a região onde você deseja pausar automaticamente o envio de e-mails.

  3. No painel de navegação, selecione Alarmes.

  4. Escolha Create Alarm (Criar alarme).

  5. Na janela Create Alarm (Criar alarme), em SES Metrics (Métricas do SES), escolha Account Metrics (Métricas da conta).

  6. Em Metric Name (Nome da métrica), escolha uma das opções a seguir:

    • Reputation.BounceRate – Escolha essa métrica se desejar pausar o envio de e-mail para sua conta quando a taxa de devolução definitiva geral para sua conta ultrapassar um limite definido por você.

    • Reputation.ComplaintRate – Escolha essa métrica se desejar pausar o envio de e-mail para sua conta quando a taxa de reclamação geral para sua conta ultrapassar um limite definido por você.

    Escolha Next (Próximo).

  7. Execute as etapas a seguir.

    • Em Alarm Threshold (Limite do alarme), para Name (Nome), digite um nome para o alarme.

    • Em Whenever: Reputation.BounceRate ou Whenever: Reputation.ComplaintRate, especifique o limite que acionará o alarme.

      nota

      Sua conta será automaticamente colocada sob análise se a taxa de devolução ultrapassar 10% ou se a taxa de reclamação ultrapassar 0,5%. Quando você especifica a taxa de devolução ou de reclamação que faz com que o alarme do CloudWatch seja acionado, é recomendável usar valores abaixo dessas taxas para impedir que sua conta seja colocada sob revisão.

    • Em Actions (Ações), em Whenever this alarm (Sempre que este alarme), escolha State is ALARM (Estado é ALARME). Em Send notification to (Enviar e-mail para), escolha o tópico do Amazon SNS que você criou em Parte 4: criar um tópico e uma assinatura do Amazon SNS.

    Escolha Create Alarm.

Parte 6: testar a solução

Agora você pode testar o alarme para verificar se ele executa a função do Lambda ao entrar no estado ALARM. Você pode usar a operação de API SetAlarmState para alterar temporariamente o estado do alarme.

Os procedimentos nesta seção são opcionais, mas é recomendável realizá-los para garantir a configuração correta da solução de maneira geral.

  1. Na linha de comando, digite o comando a seguir para verificar o status de envio de e-mails para a sua conta. Substitua region (região) pelo nome da região.

    aws ses get-account-sending-enabled --region region

    Se o envio estiver ativado para sua conta, você verá a saída a seguir:

    { "Enabled": true }
  2. Na linha de comando, digite o comando a seguir para alterar temporariamente o estado do alarme para ALARM: aws cloudwatch set-alarm-state --alarm-name MyAlarm --state-value ALARM --state-reason "Testing execution of Lambda function" --region region

    Substitua MyAlarm (MeuAlarme) no comando anterior pelo nome do alarme que você criou em Parte 5: Criar um alarme do CloudWatch e substitua region (região) pela região na qual deseja pausar automaticamente o envio de e-mails.

    nota

    Ao executar esse comando, o status do alarme mudará de OK para ALARM e voltará para OK em alguns segundos. Você pode visualizar essas alterações de status na guia History (Histórico) do alarme no console do CloudWatch ou usando a operação DescribeAlarmHistory.

  3. Na linha de comando, digite o comando a seguir para verificar o status de envio de e-mails para a sua conta.

    aws ses get-account-sending-enabled --region region

    Se a função do Lambda for executada com êxito, você verá o seguinte resultado:

    { "Enabled": false }
  4. Realize os procedimentos em Parte 3: reativar o envio de e-mail para sua conta para reativar o envio de e-mail para sua conta.