Configurar notificações do Amazon SNS - Amazon CloudWatch

Configurar notificações do Amazon SNS

O Amazon CloudWatch usa o Amazon SNS para enviar e-mails. Primeiro, crie e se inscreva em um tópico do SNS. Ao criar um alarme do CloudWatch, você pode adicionar esse tópico do SNS para enviar uma notificação por e-mail quando o alarme muda de estado. Para obter mais informações, consulte o Guia de conceitos básicos do Amazon Simple Notification Service.

Se preferir, caso você planeje criar o alarme do CloudWatch usando o AWS Management Console, poderá ignorar esse procedimento, pois o tópico poderá ser criado junto com o alarme.

nota

Ao criar um tópico do Amazon SNS, você pode escolher torná-lo um tópico padrão ou um tópico FIFO. O CloudWatch garante a publicação de todas as notificações de alarme para ambos os tipos de tópicos. No entanto, mesmo que você use um tópico FIFO, em alguns casos raros, o CloudWatch envia as notificações fora de ordem para o tópico. Se você usar um tópico FIFO, o alarme configura o ID do grupo de mensagens das notificações de alarme como um hash do ARN do alarme.

Evitar problemas de representante confuso

Para evitar problemas de segurança de representante confuso entre serviços, recomendamos o uso das chaves de condição globais aws:SourceArn e aws:SourceAccount na política de recursos do Amazon SNS, que concede permissão ao CloudWatch para acessar os seus recursos do Amazon SNS.

O exemplo de política de recursos a seguir usa a chave de condição aws:SourceArn para restringir a permissão SNS:Publish de forma que ela seja utilizada apenas por alarmes do CloudWatch na conta definida.

{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } }] }

Se um ARN de alarme contiver caracteres não ASCII, utilize somente a chave de condição global aws:SourceAccount para limitar as permissões.

Configurar um tópico do Amazon SNS usando o AWS Management Console

Primeiro, crie um tópico e inscreva-se nele. Você também pode publicar uma mensagem de teste para o tópico.

Para criar um tópico do SNS

  1. Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v3/home.

  2. No painel do Amazon SNS, em Common actions (Ações comuns), escolha Create Topic (Criar tópico).

  3. Na caixa de diálogo Create new topic (Criar novo tópico), em Topic name (Nome do tópico), insira um nome para o tópico (por exemplo, my-topic).

  4. Escolha Create topic.

  5. Copie o Topic ARN (ARN do tópico) para a próxima tarefa (por exemplo, arn:aws:sns:us-east-1:111122223333:my-topic).

Para se inscrever em um tópico do SNS

  1. Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v3/home.

  2. No painel de navegação, escolha Assinaturas, Criar assinatura.

  3. Na caixa de diálogo Criar assinatura, em ARN do tópico, cole o ARN do tópico que você criou na tarefa anterior.

  4. Em Protocol (Protocolo), escolha Email.

  5. Em Endpoint, insira um endereço de e-mail para receber a notificação e escolha Create subscription (Criar inscrição).

  6. No aplicativo de e-mail, abra a mensagem de notificações da AWS e confirme a inscrição.

    O navegador da Web exibe uma resposta de confirmação do Amazon SNS.

Para publicar uma mensagem de teste em um tópico do SNS

  1. Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v3/home.

  2. No painel de navegação, escolha Topics (Tópicos).

  3. Na página Topics (Tópicos), selecione um tópico e escolha Publish to topic (Publicar em um tópico).

  4. Na página Publish a message (Publicar uma mensagem), em Subject (Assunto), digite uma linha de assunto para a mensagem e em Message (Mensagem), digite uma breve mensagem.

  5. Escolha Publish Message (Publicar mensagem).

  6. Verifique seu e-mail para confirmar que recebeu a mensagem.

Configurar um tópico do SNS usando a AWS CLI

Primeiro você cria um tópico do SNS e, depois, publica uma mensagem diretamente no tópico para verificar se ele foi configurado corretamente.

Para configurar um tópico do SNS

  1. Crie o tópico usando o comando create-topic da forma a seguir.

    aws sns create-topic --name my-topic

    O Amazon SNS retorna um ARN do tópico com o seguinte formato:

    { "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic" }
  2. Assine o seu endereço de e-mail para o tópico usando o comando subscribe. Se a solicitação de assinatura for bem-sucedida, você receberá uma mensagem de e-mail de confirmação.

    aws sns subscribe --topic-arn arn:aws:sns:us-east-1:111122223333:my-topic --protocol email --notification-endpoint my-email-address

    O Amazon SNS retorna o seguinte:

    { "SubscriptionArn": "pending confirmation" }
  3. No aplicativo de e-mail, abra a mensagem de notificações da AWS e confirme a inscrição.

    O navegador da Web exibe uma resposta de confirmação do Amazon Simple Notification Service.

  4. Verifique a assinatura usando o comando list-subscriptions-by-topic.

    aws sns list-subscriptions-by-topic --topic-arn arn:aws:sns:us-east-1:111122223333:my-topic

    O Amazon SNS retorna o seguinte:

    { "Subscriptions": [ { "Owner": "111122223333", "Endpoint": "me@mycompany.com", "Protocol": "email", "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic", "SubscriptionArn": "arn:aws:sns:us-east-1:111122223333:my-topic:64886986-bf10-48fb-a2f1-dab033aa67a3" } ] }
  5. (Opcional) Publique uma mensagem de teste no tópico usando o comando publish.

    aws sns publish --message "Verification" --topic arn:aws:sns:us-east-1:111122223333:my-topic

    O Amazon SNS retorna os resultados a seguir.

    { "MessageId": "42f189a0-3094-5cf6-8fd7-c2dde61a4d7d" }
  6. Verifique seu e-mail para confirmar que recebeu a mensagem.