View a markdown version of this page

Gerenciando ElastiCache notificações do Amazon SNS - Amazon ElastiCache

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerenciando ElastiCache notificações do Amazon SNS

Você pode configurar o ElastiCache envio de notificações para eventos importantes do cluster usando o Amazon Simple Notification Service (Amazon SNS). Nestes exemplos, você configurará um cluster com o nome de recurso da Amazon (ARN) de um tópico do Amazon SNS para receber notificações.

nota
  • Esse tópico pressupõe que você tenha se cadastrado no Amazon SNS e configurado e assinado um tópico do Amazon SNS. Para obter informações sobre como fazer isso, consulte o Guia do desenvolvedor do Amazon Simple Notification Service.

  • Por padrão, API modify-replication-group afeta todos os grupos em uma região e não apenas o grupo especificado atualmente. Se você quiser configurar um grupo específico em uma região de forma diferente dos outros grupos, você pode usar a opção --notification-topic-arn para criar um tópico separado para esse grupo.

Requisito de política de acesso a tópicos do SNS

Quando você configura um tópico do Amazon SNS para ElastiCache notificações, a política de acesso do tópico deve usar a chave de aws:SourceOwner condição, não. aws:SourceAccount Os tópicos recém-criados do Amazon SNS usam como padrão sua política de acesso, que ElastiCache não suporta notificações de eventos. aws:SourceAccount

Se seu tópico do Amazon SNS usaaws:SourceAccount, ElastiCache não pode publicar notificações para o tópico e define automaticamente o status do tópico como inativo. Os failovers do Global Datastore e outras operações de cluster podem acionar esse erro.

Para garantir que ElastiCache as notificações funcionem corretamente, verifique se sua política de acesso a tópicos do Amazon SNS inclui a seguinte declaração:

{ "Statement": [ { "Sid": "AllowElastiCachePublish", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:region:account-id:topic-name", "Condition": { "StringEquals": { "AWS:SourceOwner": "account-id" } } } ] }

Se ElastiCache mostrar o status do tópico do Amazon SNS como inativo após um failover ou outra operação de cluster, verifique a política de acesso do tópico e substitua por. aws:SourceAccount aws:SourceOwner Em seguida, reative a notificação no cluster com a operação da ModifyReplicationGroup API ou o console.

Para obter mais informações sobre essas chaves de condição, consulte aws: SourceAccount vs aws: SourceOwner no Amazon SNS Developer Guide.

Pré-requisitos

Antes de configurar as notificações do Amazon SNS para ElastiCache, verifique os seguintes requisitos:

  • O tópico do Amazon SNS deve estar na mesma AWS região do seu ElastiCache cluster.

  • O tópico do Amazon SNS deve pertencer à mesma AWS conta do seu ElastiCache cluster.

  • O tópico do Amazon SNS não deve ser criptografado com uma chave gerenciada pelo AWS KMS cliente. ElastiCache não suporta a publicação de notificações para tópicos do Amazon SNS que são criptografadas com chaves gerenciadas pelo AWS KMS cliente.

  • Você deve ter permissões para modificar a política de acesso a tópicos do Amazon SNS (sns:SetTopicAttributesou equivalente).

Concedendo ElastiCache permissão para publicar em seu tópico do Amazon SNS

Para receber notificações de eventos, você deve conceder ElastiCache permissão para publicar mensagens em seu tópico do Amazon SNS. Você faz isso adicionando uma política baseada em recursos ao tópico do Amazon SNS que permite que elasticache.amazonaws.com o responsável pelo serviço publique mensagens.

A política a seguir ElastiCache concede a permissão necessária:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowElastiCachePublish", "Effect": "Allow", "Principal": { "Service": "elasticache.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:region:account-id:topic-name", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" } } } ] }

A tabela a seguir descreve os componentes da política.

Componente Valor Description
Entidade principal elasticache.amazonaws.com O diretor ElastiCache do serviço
Ação sns:Publish A permissão mínima exigida
Recurso Tópico ARN O ARN do seu tópico específico do Amazon SNS
Condição: aws:SourceAccount ID AWS da sua conta Restringe o acesso a solicitações provenientes de sua conta específica AWS

Concedendo permissão (Console)

Para conceder ElastiCache permissão para publicar em seu tópico do Amazon SNS (console)
  1. Abra o console do Amazon Simple Notification Service em https://console.aws.amazon.com/sns/.

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

  3. Selecione seu tópico e escolha Editar.

  4. Expanda a seção Política de acesso.

  5. No editor JSON, adicione a declaração de política anterior.

  6. Escolha Salvar alterações.

Concedendo permissão (AWS CLI)

Salve a política de acesso em um arquivo chamado sns-policy.json e execute o seguinte comando:

Para Linux, macOS ou Unix:

aws sns set-topic-attributes \ --topic-arn arn:aws:sns:region:account-id:topic-name \ --attribute-name Policy \ --attribute-value file://sns-policy.json \ --region region

Para Windows:

aws sns set-topic-attributes ^ --topic-arn arn:aws:sns:region:account-id:topic-name ^ --attribute-name Policy ^ --attribute-value file://sns-policy.json ^ --region region

Para verificar se a política foi aplicada corretamente, execute o seguinte comando:

Para Linux, macOS ou Unix:

aws sns get-topic-attributes \ --topic-arn arn:aws:sns:region:account-id:topic-name \ --query 'Attributes.Policy' \ --output text \ --region region

Para Windows:

aws sns get-topic-attributes ^ --topic-arn arn:aws:sns:region:account-id:topic-name ^ --query 'Attributes.Policy' ^ --output text ^ --region region

Adição de um tópico do Amazon SNS

As seções a seguir mostram como adicionar um tópico do Amazon SNS usando o AWS console AWS CLI, o ou a ElastiCache API.

Adição de um tópico do Amazon SNS (console)

O procedimento a seguir mostra como adicionar um tópico do Amazon SNS para um cluster. Ao usar o Valkey ou o Redis OSS para adicionar um tópico do Amazon SNS para um grupo de replicação na etapa 2, em vez de escolher um cluster, escolha um grupo de replicação. Em seguida, siga as mesmas etapas restantes.

nota

Esse processo também pode ser usado para modificar o tópico do Amazon SNS.

Para adicionar ou modificar um tópico do Amazon SNS para um cluster (console)
  1. Faça login no Console de gerenciamento da AWS e abra o ElastiCache console em https://console.aws.amazon.com/elasticache/.

  2. Em Clusters, escolha o cluster para o qual deseja adicionar ou modificar um ARN de tópico do Amazon SNS.

  3. Escolha Modificar.

  4. Em Modificar cluster em Tópico para notificação do SNS, escolha o tópico SNS que você deseja adicionar ou escolha Entrada manual de ARN e insira o ARN do tópico do Amazon SNS.

  5. Escolha Modificar.

Adicionar um tópico do Amazon SNS (AWS CLI)

Para adicionar ou modificar um tópico do Amazon SNS para um cluster, use o AWS CLI comando. modify-cache-cluster

O seguinte exemplo de código adiciona um ARN de tópico do Amazon SNS a my-cluster.

Para Linux, macOS ou Unix:

aws elasticache modify-cache-cluster \ --cache-cluster-id my-cluster \ --notification-topic-arn arn:aws:sns:us-west-2:123456789xxx:ElastiCacheNotifications

Para Windows:

aws elasticache modify-cache-cluster ^ --cache-cluster-id my-cluster ^ --notification-topic-arn arn:aws:sns:us-west-2:123456789xx:ElastiCacheNotifications

Para obter mais informações, consulte modify-cache-cluster.

Adicionar um tópico do Amazon SNS (API) ElastiCache

Para adicionar ou modificar um tópico do Amazon SNS para um cluster, chame a ação ModifyCacheCluster com os seguintes parâmetros:

  • CacheClusterId=my-cluster

  • TopicArn=arn%3Aaws%3Asns%3Aus-west-2%3A565419523791%3AElastiCacheNotifications

exemplo
https://elasticache.amazon.com/ ?Action=ModifyCacheCluster &ApplyImmediately=false &CacheClusterId=my-cluster &NotificationTopicArn=arn%3Aaws%3Asns%3Aus-west-2%3A565419523791%3AElastiCacheNotifications &Version=2014-12-01 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>

Para obter mais informações, consulte ModifyCacheCluster.

Habilitação e desabilitação de notificações do Amazon SNS

Você pode ativar ou desativar notificações para um cluster. Os procedimentos a seguir mostram como desativar notificações do Amazon SNS.

Habilitação e desabilitação de notificações do Amazon SNS (console)

Para desativar as notificações do Amazon SNS usando o Console de gerenciamento da AWS
  1. Faça login no Console de gerenciamento da AWS e abra o ElastiCache console em https://console.aws.amazon.com/elasticache/.

  2. Para ver uma lista dos clusters que estão executando o Memcached, no painel de navegação, escolha Memcached.

    Para ver uma lista dos clusters que estão executando o Valkey ou o Redis OSS, no painel de navegação, selecione Valkey ou Redis OSS.

  3. Escolha a caixa à esquerda do nome do cluster para o qual você deseja modificar notificações.

  4. Escolha Modificar.

  5. Em Modify Cluster, em Topic for SNS Notification, escolha Disable Notifications.

  6. Escolha Modificar.

Ativando e desativando as notificações do Amazon SNS (AWS CLI)

Para desabilitar notificações do Amazon SNS, use o comando modify-cache-cluster com os seguintes parâmetros:

Para Linux, macOS ou Unix:

aws elasticache modify-cache-cluster \ --cache-cluster-id my-cluster \ --notification-topic-status inactive

Para Windows:

aws elasticache modify-cache-cluster ^ --cache-cluster-id my-cluster ^ --notification-topic-status inactive
nota

Quando o cluster pertence a um grupo de replicação, você deve usar o comando modify-replication-group da CLI para habilitar ou desabilitar as notificações do SNS.

Ativando e desativando as notificações ElastiCache do Amazon SNS (API)

Para desabilitar notificações do Amazon SNS, chame a ação ModifyCacheCluster com os seguintes parâmetros:

  • CacheClusterId=my-cluster

  • NotificationTopicStatus=inactive

Essa chamada retorna uma saída semelhante à seguinte:

exemplo
https://elasticache.us-west-2.amazonaws.com/ ?Action=ModifyCacheCluster &ApplyImmediately=false &CacheClusterId=my-cluster &NotificationTopicStatus=inactive &Version=2014-12-01 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>

Melhores práticas de segurança para políticas temáticas do Amazon SNS

Para ajudar a proteger sua política de tópicos do Amazon SNS, siga estas melhores práticas:

  • Sempre inclua a chave de aws:SourceAccount condição para evitar ataques confusos de delegados entre contas.

  • Use o principal do elasticache.amazonaws.com serviço em vez de IDs de AWS contas individuais.

  • Nunca use "Principal": {"AWS": "*"} sem chaves de condição adicionais.

  • Conceda somente as permissões mínimas necessárias (sns:Publishsomente).

  • Audite regularmente suas políticas de acesso a tópicos do Amazon SNS.

Verificando se as notificações estão funcionando

Depois de configurar a política de tópicos do Amazon SNS e adicionar o tópico ao ElastiCache seu cluster, verifique se as notificações estão funcionando:

  1. Acione um ElastiCache evento, como uma alteração na configuração do seu cluster.

  2. Verifique seu endpoint de assinatura do Amazon SNS (e-mail, função Lambda ou fila SQS) para ver a mensagem de notificação.

  3. No console do Amazon SNS, verifique se o status da assinatura mostra Confirmado.

Solução de problemas de notificações do Amazon SNS

Se você não estiver recebendo notificações do Amazon SNS ElastiCache, verifique o seguinte:

Incompatibilidade de regiões

Verifique se o tópico do Amazon SNS está na mesma AWS região do seu ElastiCache cluster.

Propriedade da conta

Verifique se o tópico do Amazon SNS pertence à mesma AWS conta do seu ElastiCache cluster.

ID de conta incorreta em condição

Verifique se o aws:SourceAccount valor é o ID exato da sua AWS conta de 12 dígitos.

criptografia do KMS

Verifique se o tópico do Amazon SNS não está criptografado com uma chave gerenciada pelo AWS KMS cliente. ElastiCache não oferece suporte à publicação em tópicos com AWS KMS criptografia gerenciada pelo cliente.

Incompatibilidade de ARN do tópico

Confirme se o ARN do tópico do Amazon SNS na política corresponde exatamente ao ARN do tópico anexado ao seu cluster. ElastiCache

Assinatura não confirmada

Verifique se sua assinatura do Amazon SNS está no status Confirmado.

Permissões insuficientes

Confirme se você tem sns:SetTopicAttributes permissão para modificar a política de acesso do tópico.