

# Notificação dos usuários sobre mudanças de alarmes
<a name="Notify_Users_Alarm_Changes"></a>

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
<a name="Alarm_User_Notifications"></a>

É possível usar [notificações de usuário da AWS](https://docs.aws.amazon.com/notifications/latest/userguide/what-is-service.html) 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](https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html) ou [Notificações por push da aplicação móvel do Console da AWS](https://docs.aws.amazon.com/consolemobileapp/latest/userguide/managing-notifications.html). Também é possível ver as notificações na [Central de notificações do console](https://console.aws.amazon.com/notifications). é compatível com agregação, o que pode reduzir o número de notificações recebidas durante eventos específicos.

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 obter mais informações, consulte [Eventos de alarme e o EventBridge](cloudwatch-and-eventbridge.md).

## Configurar notificações do Amazon SNS
<a name="US_SetupSNS"></a>

É 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](https://docs.aws.amazon.com/sns/latest/dg/sns-event-destinations.html).

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 ver um exemplo, consulte [Configurar um tópico do Amazon SNS usando o Console de gerenciamento da AWS](#set-up-sns-topic-console). Ou, para obter mais informações, consulte [Conceitos básicos do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html).

Se preferir, caso você planeje usar o Console de gerenciamento da AWS 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.

**Topics**
+ [Evitar problemas de segurança confused deputy](#SNS_Confused_Deputy)
+ [Configurar um tópico do Amazon SNS usando o Console de gerenciamento da AWS](#set-up-sns-topic-console)
+ [Configurar um tópico do SNS usando a AWS CLI](#set-up-sns-topic-cli)

### Evitar problemas de segurança confused deputy
<a name="SNS_Confused_Deputy"></a>

“Confused deputy” é um problema de segurança no qual uma entidade sem 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 global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn), [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount), [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceorgid) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceorgpaths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceorgpaths) nas políticas de recursos para limitar as permissões no recurso que o Amazon SNS concede a outro serviço. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-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 Console de gerenciamento da AWS
<a name="set-up-sns-topic-console"></a>

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](https://console.aws.amazon.com/sns/v3/home).

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

1. 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**).

1. Escolha **Criar tópico**.

1. 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](https://console.aws.amazon.com/sns/v3/home).

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

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

1. Em **Protocolo**, escolha **E-mail**.

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

1. 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](https://console.aws.amazon.com/sns/v3/home).

1. No painel de navegação, escolha **Tópicos**.

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

1. 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.

1. Escolha **Publish Message (Publicar mensagem)**.

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

### Configurar um tópico do SNS usando a AWS CLI
<a name="set-up-sns-topic-cli"></a>

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](https://docs.aws.amazon.com/cli/latest/reference/sns/create-topic.html) da forma a seguir.

   ```
   1. aws sns create-topic --name my-topic
   ```

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

   ```
   1. {
   2.     "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic"
   3. }
   ```

1. Assine o seu endereço de e-mail para o tópico usando o comando [subscribe](https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html). Se a solicitação de assinatura for bem-sucedida, você receberá uma mensagem de e-mail de confirmação.

   ```
   1. 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:

   ```
   1. {
   2.     "SubscriptionArn": "pending confirmation"
   3. }
   ```

1. 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.

1. Verifique a assinatura usando o comando [list-subscriptions-by-topic](https://docs.aws.amazon.com/cli/latest/reference/sns/list-subscriptions-by-topic.html).

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

   O Amazon SNS retorna o seguinte:

   ```
    1. {
    2.   "Subscriptions": [
    3.     {
    4.         "Owner": "111122223333",
    5.         "Endpoint": "me@mycompany.com",
    6.         "Protocol": "email",
    7.         "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic",
    8.         "SubscriptionArn": "arn:aws:sns:us-east-1:111122223333:my-topic:64886986-bf10-48fb-a2f1-dab033aa67a3"
    9.     }
   10.   ]
   11. }
   ```

1. (Opcional) Publique uma mensagem de teste no tópico usando o comando [publish](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html).

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

   O Amazon SNS retorna os resultados a seguir.

   ```
   1. {
   2.     "MessageId": "42f189a0-3094-5cf6-8fd7-c2dde61a4d7d"
   3. }
   ```

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

## Esquema das notificações do Amazon SNS quando os alarmes mudarem de estado
<a name="alarm-sns-schema"></a>

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]
}
```