Por que não recebi uma notificação do SNS me avisando que o alarme do CloudWatch foi acionado?

4 minuto de leitura
0

Criei um alarme do Amazon CloudWatch para enviar notificações por meio de um tópico do Amazon Simple Notification Service (Amazon SNS) quando o estado do alarme mudar. No entanto, quando o alarme do CloudWatch muda de estado, eu não recebo uma notificação do SNS.

Resolução

A entrega das notificações do SNS depende da configuração do tópico do SNS e do alarme do CloudWatch. Para determinar por que você não recebe notificações do SNS, verifique o histórico do alarme do CloudWatch para ver o status do acionamento.

Se o acionamento falhar devido a restrições da política de acesso do SNS, o histórico de alarmes do CloudWatch exibirá uma mensagem como a seguir:

“Falha ao executar a ação arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Erro recebido: “O recurso: arn:aws:cloudwatch:us-east-1:ACCOUNT_ID:alarm:ALARM_NAME não está autorizado a realizar: SNS:Publish on resource: arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME""

O SNS restringe as fontes que podem publicar mensagens no tópico usando políticas de acesso. Se ocorrer um erro de permissão, você deverá adicionar as seguintes permissões na seção Declaração da política de acesso do SNS. Essa atualização concede permissões ao serviço de alarmes do CloudWatch para publicar mensagens no tópico do SNS.

Observação: Substitua us-east-1 pela região da AWS para a qual essa notificação se destina. Substitua ACCOUNT_ID pela ID da sua conta. Substitua TOPIC_NAME pelo nome do tópico do SNS:

{
  "Sid": "Allow_Publish_Alarms",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "cloudwatch.amazonaws.com"
    ]
  },
  "Action": "sns:Publish",
  "Resource": "arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME"
}

Essas permissões permitem que qualquer pessoa que esteja usando sua conta crie alarmes e publique mensagens no seu tópico do SNS. Para restringir a capacidade de publicar mensagens no tópico para alarmes específicos, adicione chaves de condição globais. O exemplo a seguir usa o operador de condição ArnLike e a chave de condição global aws:SourceArn. Para mais informações, consulte Casos de exemplo de controle de acesso do Amazon SNS.

Observação: Observação: Substitua us-east-1 pela região da AWS para a qual essa notificação se destina. Substitua ACCOUNT_ID pela ID da sua conta. Substitua TOPIC_NAME pelo nome do tópico do SNS. Substitua ALARM_NAME pelo nome do alarme:

{
  "Sid": "Allow_Publish_Alarms",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "cloudwatch.amazonaws.com"
    ]
  },
  "Action": "sns:Publish",
  "Resource": "arn:aws:sns:REGION:ACCOUNT_ID:TOPIC_NAME",
  "Condition": {
    "ArnLike": {
      "aws:SourceArn": "arn:aws:cloudwatch:us-east-1:ACCOUNT_ID:alarm:ALARM_NAME"
    }
  }
}

Se sua ação de acionamento falhar devido à criptografia de tópicos do SNS, o histórico de alarmes do CloudWatch exibirá uma mensagem como a seguir:

“Falha ao executar a ação arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Erro recebido: “null (Serviço: AWSKMS; Código de status: 400; Error Code: AccessDeniedException;)””

O SNS permite a criptografia em repouso para seu tópico. Se o SNS usar a chave padrão alias/aws/sns do AWS Key Management Service (AWS KMS) para essa criptografia, os alarmes do CloudWatch não poderão publicar mensagens no tópico do SNS. A política padrão da chave do AWS KMS para SNS não permite que os alarmes do CloudWatch realizem chamadas de API kms:Decrypt e kms:GenerateDataKey. Como essa chave é gerenciada pela AWS, você não pode editar manualmente a política.

Se o tópico do SNS precisar ser criptografado em repouso, use uma chave gerenciada pelo cliente. A chave gerenciada pelo cliente deve incluir as seguintes permissões na seção Declaração da política de chave. Essas permissões permitem que os alarmes do CloudWatch publiquem mensagens em tópicos criptografados do SNS:

{
  "Sid": "Allow_CloudWatch_for_CMK",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "cloudwatch.amazonaws.com"
    ]
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*"
}

Se sua ação de acionamento for bem-sucedida, o histórico de alarmes do CloudWatch exibirá uma mensagem como a seguir:

"Successfully executed action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME"

Isso significa que o alarme do CloudWatch publicou com sucesso uma mensagem no tópico do SNS. Se a notificação não for entregue pelo SNS, verifique o tópico do SNS e suas métricas para ver se há falhas na entrega. Para mais informações, consulte Como posso acessar os logs de entrega de tópicos do Amazon SNS para notificações push?

Observação: O CloudWatch não testa nem valida as ações que você especifica. Ele também não detecta erros do Amazon EC2 Auto Scaling ou do Amazon SNS resultantes de uma tentativa de invocar ações inexistentes. Certifique-se de que suas ações existam.


Informações relacionadas

Usar alarmes do Amazon CloudWatch

Criptografar mensagens publicadas no Amazon SNS com o AWS KMS

AWS OFICIAL
AWS OFICIALAtualizada há um ano