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.
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
Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v3/home
. -
No painel do Amazon SNS, em Common actions (Ações comuns), escolha Create Topic (Criar tópico).
-
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
). -
Escolha Create topic.
-
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
Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v3/home
. -
No painel de navegação, escolha Assinaturas, Criar assinatura.
-
Na caixa de diálogo Criar assinatura, em ARN do tópico, cole o ARN do tópico que você criou na tarefa anterior.
-
Em Protocol (Protocolo), escolha Email.
-
Em Endpoint, insira um endereço de e-mail para receber a notificação e escolha Create subscription (Criar inscrição).
-
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
-
Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v3/home
. -
No painel de navegação, escolha Topics (Tópicos).
-
Na página Topics (Tópicos), selecione um tópico e escolha Publish to topic (Publicar em um tópico).
-
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.
-
Escolha Publish Message (Publicar mensagem).
-
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
-
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" }
-
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-endpointmy-email-address
O Amazon SNS retorna o seguinte:
{ "SubscriptionArn": "pending confirmation" }
-
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.
-
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" } ] }
-
(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" }
-
Verifique seu e-mail para confirmar que recebeu a mensagem.