Notificação dos usuários sobre mudanças de alarmes
Esta seção explica como é possível usar as Notificações de Usuários da AWS ou o Amazon Simple Notification Service para que os usuários sejam notificados sobre alterações no alarme.
Configurando notificações de usuário da AWS
É possível usar notificações de usuário da AWS para configurar canais de entrega para receber notificações sobre eventos de alteração de estado de alarme da e alteração de configuração do CloudWatch. Você recebe uma notificação quando um evento corresponde a uma regra especificada. É possível receber notificações de eventos por meio de vários canais, incluindo email, notificações de chat do Chatbot da AWS ou Notificações por push da aplicação móvel do Console da AWS. Também é possível ver as notificações na Central de notificações do console
As configurações de notificação que você cria com as Notificações de Usuários da AWS não contam para o limite do número de ações que podem ser configuradas por estado de alarme alvo. Como as Notificações de Usuários da AWS correspondem aos eventos emitidos para o Amazon EventBridge, ele envia notificações para todos os alarmes em sua conta e regiões selecionadas, a menos que você especifique um filtro avançado para permitir ou negar alarmes ou padrões específicos.
O exemplo a seguir de um filtro avançado corresponde a uma alteração do estado do alarme de OK para ALARM no alarme chamado ServerCpuTooHigh
.
{ "detail": { "alarmName": ["ServerCpuTooHigh"], "previousState": { "value": ["OK"] }, "state": { "value": ["ALARM"] } } }
É possível usar qualquer uma das propriedades publicadas por um alarme nos eventos do EventBridge para criar um filtro. Para ter mais informações, consulte Eventos de alarme e o EventBridge.
Configurar notificações do Amazon SNS
É possível usar o Amazon Simple Notification Service para enviar mensagens de aplicação para aplicação (A2A) e mensagens de aplicação para pessoa (A2P), mensagens de texto para celulares (SMS) e mensagens de email. Para obter mais informações, consulte destinos de eventos do Amazon SNS.
Para cada estado que um alarme pode assumir, é possível configurar o alarme para enviar uma mensagem para um tópico do SNS. Cada tópico do Amazon SNS que você configurar para um estado em um determinado alarme contará para o limite do número de ações que poderão ser configuradas para esse alarme e estado. É possível enviar mensagens para o mesmo tópico do Amazon SNS a partir de qualquer alarme em sua conta e usar o mesmo tópico do Amazon SNS para consumidores de aplicações (A2A) e pessoais (A2P). Como essa configuração é feita no nível do alarme, somente os alarmes que você configurou enviam mensagens para o tópico selecionado do Amazon SNS.
Primeiro, crie um tópico e inscreva-se nele. Você também pode publicar uma mensagem de teste para o tópico. Para obter um exemplo, consulte Configurar um tópico do Amazon SNS usando o AWS Management Console. Ou, para obter mais informações, consulte Conceitos básicos do Amazon SNS.
Se preferir, caso você planeje usar o AWS Management Console para criar seu alarme do CloudWatch, poderá ignorar esse procedimento, pois o tópico poderá ser criado junto com o alarme.
Ao criar um alarme do CloudWatch, será possível adicionar ações para qualquer estado de destino em que o alarme entre. Adicione uma notificação do Amazon SNS para o estado sobre o qual você deseja ser notificado e selecione o tópico do Amazon SNS que você criou na etapa anterior para enviar uma notificação por email quando o alarme entrar no estado selecionado.
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.
Tópicos
Evitar problemas de segurança confused deputy
O problema de "confused deputy" é uma questão de segurança em que uma entidade que não tem permissão para executar uma ação pode coagir uma entidade mais privilegiada a executá-la. Na AWS, a personificação entre serviços pode resultar no problema do ‘confused deputy’. A personificação entre serviços pode ocorrer quando um serviço (o serviço de chamada) chama outro serviço (o serviço chamado). O serviço de chamada pode ser manipulado de modo a usar suas permissões para atuar nos recursos de outro cliente de uma forma na qual ele não deveria ter permissão para acessar. Para evitar isso, a AWS fornece ferramentas que ajudam você a proteger seus dados para todos os serviços com entidades principais de serviço que receberam acesso aos recursos em sua conta.
Recomendamos o uso das chaves de contexto de condição globais aws:SourceArn
, aws:SourceAccount
, aws:SourceOrgID
e aws:SourceOrgPaths
em políticas de recursos para limitar as permissões que o Amazon SNS concede a outro serviço para o recurso. Use aws:SourceArn
se quiser associar apenas um recurso ao acesso entre serviços. Use aws:SourceAccount
se quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços. Use aws:SourceOrgID
se quiser permitir que qualquer recurso de qualquer conta de uma organização seja associado ao uso entre serviços. Use aws:SourceOrgPaths
se quiser associar qualquer recurso das contas em um caminho do AWS Organizations seja associado ao uso entre serviços. Para obter mais informações sobre como usar e entender caminhos, consulte aws:SourceOrgPaths no Guia do usuário do IAM.
A maneira mais eficaz de se proteger contra o problema do substituto confuso é usar a chave de contexto de condição global aws:SourceArn
com o ARN completo do recurso. Se você não souber o ARN completo do recurso ou especificar vários recursos, use a chave de condição de contexto global aws:SourceArn
com caracteres curinga (*
) para as partes desconhecidas do ARN. Por exemplo, arn:aws:
. servicename
:*:123456789012
:*
Se o valor do aws:SourceArn
não contiver o ID da conta, como um ARN de bucket do Amazon S3, você deverá usar ambos, a aws:SourceAccount
e o aws:SourceArn
para limitar as permissões.
Para se proteger do problema de "confused deputy" em grande escala, use a chave de contexto de condição global aws:SourceOrgID
ou aws:SourceOrgPaths
com o ID ou o caminho da organização do recurso nas políticas baseadas em recursos. As políticas que incluem a chave aws:SourceOrgID
ou aws:SourceOrgPaths
incluem automaticamente as contas corretas e você não tem que atualizar manualmente as políticas quando adiciona, remove ou move contas na organização.
O valor de aws:SourceArn
deve ser o ARN do alarme que está enviando notificações.
O exemplo a seguir mostra como é possível usar as chaves de contexto de condição globais aws:SourceArn
e aws:SourceAccount
no CloudWatch para evitar o problema de “confused deputy”.
{ "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 Criar tópico.
-
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 Protocolo, escolha E-mail.
-
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 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.
Esquema das notificações do Amazon SNS quando os alarmes mudarem de estado
Esta seção lista os esquemas das notificações enviadas aos tópicos do Amazon SNS quando os alarmes mudam de estado.
Esquema quando um alarme de métrica muda de estado
{ "AlarmName": "string", "AlarmDescription": "string", "AWSAccountId": "string", "AlarmConfigurationUpdatedTimestamp": "string", "NewStateValue": "string", "NewStateReason": "string", "StateChangeTime": "string", "Region": "string", "AlarmArn": "string", "OldStateValue": "string", "OKActions": ["string"], "AlarmActions": ["string"], "InsufficientDataActions": ["string"], "Trigger": { "MetricName": "string", "Namespace": "string", "StatisticType": "string", "Statistic": "string", "Unit": "string or null", "Dimensions": [ { "value": "string", "name": "string" } ], "Period": "integer", "EvaluationPeriods": "integer", "DatapointsToAlarm": "integer", "ComparisonOperator": "string", "Threshold": "number", "TreatMissingData": "string", "EvaluateLowSampleCountPercentile": "string or null" } }
Esquema quando um alarme composto muda de estado
{ "AlarmName": "string", "AlarmDescription": "string", "AWSAccountId": "string", "NewStateValue": "string", "NewStateReason": "string", "StateChangeTime": "string", "Region": "string", "AlarmArn": "string", "OKActions": [String], "AlarmActions": [String], "InsufficientDataActions": [String], "OldStateValue": "string", "AlarmRule": "string", "TriggeringChildren": [String] }