Como configuro meu endpoint do Amazon SQS em uma conta cruzada para o tópico do Amazon SNS?

6 minuto de leitura
0

Quero inscrever minha fila do Amazon SQS na conta A ao meu tópico do Amazon SNS na conta B.

Breve descrição

Você pode criar uma assinatura do tópico do Amazon Simple Notification Service (Amazon SNS) como proprietário do tópico ou da fila do Amazon Simple Queue Service (Amazon SQS) como proprietário da fila. Para isso, a fila do Amazon SQS precisa das permissões apropriadas para permitir que a fila envie mensagens para o tópico do Amazon SNS.

Resolução

Pré-requisitos

Verifique se sua política de acesso a tópicos do SNS na conta B tem as permissões apropriadas. Isso permite que a fila do SQS na conta A se inscreva no tópico do SNS.

Inscreva-se como proprietário da fila

Como proprietário da fila, siga estas etapas para inscrever sua fila do SQS da conta A no tópico do SNS da conta B:

  1. Faça login no Console de Gerenciamento da AWS e navegue até o console do Amazon SQS na conta A.
  2. Escolha Filas, em seguida, selecione sua fila SQS.
  3. Na seção Assinaturas do SNS, selecione Assinatura de um tópico do Amazon SNS.
  4. Selecione Escolher um tópico na lista suspensa. Em seguida, escolha Inserir ARN do tópico do Amazon SNS.
  5. Preencha o ARN do tópico do SNS no campo de textoUm tópico do Amazon SNS que pode enviar notificações para uma fila do Amazon SQS.
  6. Selecione Salvar.
  7. Faça login no Console de Gerenciamento da AWS e, em seguida, navegue até o console do Amazon SNS na conta B.
  8. Escolha Tópicos e, em seguida, selecione seu tópico do SNS.
  9. Verifique se a assinatura foi confirmada para seu tópico do SNS na conta B consultando a seção Assinaturas.

Inscreva-se como proprietário do tópico

Como proprietário do tópico, siga estas etapas para inscrever sua fila do SQS em outra conta:

Modifique a política de acesso na conta B

  1. Faça login no Console de Gerenciamento da AWS e, em seguida, navegue até o console do Amazon SNS na conta B
  2. Escolha Tópicos e, em seguida, selecione seu tópico do SNS.
  3. Selecione Editar no canto superior direito da página.
  4. Expanda a seção Política de acesso: opcional. Copie e cole a seguinte política de acesso na seção editor JSON. (Certifique-se de substituir a conta da AWS e o ARN do tópico do SNS por seus próprios valores.) Em seguida, escolha Salvar alterações na parte inferior.
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "sns:Subscribe",
      "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic"
    }
  ]
}

Modifique a fila do SQS na conta A

  1. Faça login no Console de Gerenciamento da AWS e navegue até o console do Amazon SQS na conta A.
  2. Escolha Filas, em seguida, selecione sua fila SQS.
  3. Selecione Editar no canto superior direito da página.
  4. Navegue até a seção Política de acesso. Copie e cole a seguinte política de acesso no editor JSON. (Certifique-se de substituir o ARN da fila do SQS e o ARN do tópico do SNS por seus próprios valores.)
{
  "Sid": "Stmt1234",
  "Effect": "Allow",
  "Principal": "*",
  "Action": "sqs:SendMessage",
  "Resource": "arn:aws:sqs:us-west-2:111111111111:QueueName",
  "Condition": {
    "ArnEquals": {
      "aws:SourceArn": "arn:aws:sns:us-west-2:555555555555:TopicName"
    }
  }
}

Inscreva a fila SQS do tópico SNS na conta B

Faça login no Console de Gerenciamento da AWS e, em seguida, navegue até o console do Amazon SNS na conta B. Escolha Tópicos e selecione seu tópico do SNS.

  1. Em Assinaturas, selecione Criar assinatura.
  2. Escolha a lista suspensa Protocolo e selecione Amazon SQS.
  3. Em seguida, selecione Criar assinatura.
  4. Faça login no Console de Gerenciamento da AWS e, em seguida, navegue até o console do Amazon SQS na conta A. Escolha Filas e selecione sua fila SQS.
  5. Escolha Enviar e receber mensagens no canto superior direito da página.
  6. Selecione Pesquisa para mensagens. Uma mensagem do Amazon SNS aparece na seção Mensagens.
  7. Selecione a ID da mensagem. Localize SubscribeURL e depois copie o URL entre aspas.
  8. Cole esse link de URL em seu navegador.
  9. Faça login no Console de Gerenciamento da AWS e, em seguida, navegue até o console do Amazon SNS na conta B. Escolha Tópicos e selecione seu tópico do SNS.
  10. Verifique se a assinatura foi confirmada consultando o Status da assinatura em Assinaturas.

Dicas para solução de problemas

Minha assinatura ainda está pendente no console do SNS quando eu crio minha assinatura no console do Amazon SNS.

Use as etapas a seguir para solucionar o erro:

  • Exclua sua assinatura e reinicie a partir da Etapa 9 acima.
  • Pesquise sua fila do SQS com a AWS CLI usando o seguinte comando para recuperar o SubscriptionURL:
aws sqs receive-message --queue-url https**:**//sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names All --message-attribute-names All --max-number-of-messages 10

Observação: se você receber erros ao executar comandos da CLI, verifique se está usando a versão mais recente da AWS CLI. Copie e cole esse URL no seu navegador para confirmar a assinatura. Substitua o URL da fila pelo seu.

Quando copio e colo minha política de acesso a tópicos do SNS, recebo um erro “Couldn't set topic access policy.
Error code: InvalidParameter - Error message: An error occurred while setting the attribute access policy. Invalid parameter: Policy Error: null.”

Use as etapas a seguir para solucionar o erro:

  • Copie e cole a política de acesso na ferramenta JSON Validator para garantir que a sintaxe da sua política esteja correta.
  • Revise sua política de acesso para garantir que não haja Declaração duplicada. Verifique se há uma vírgula após sua primeira ID de declaração.

Práticas recomendadas

Autentique sua assinatura do SNS em sua fila do SQS. Com essa configuração, somente o proprietário do tópico e o proprietário da assinatura podem cancelar a assinatura da fila SQS do tópico do SNS.

Informações relacionadas

Como enviar mensagens do Amazon SNS para uma fila do Amazon SQS em uma conta diferente

Permita que as notificações de eventos do Amazon Simple Storage Service (Amazon S3) sejam publicadas em um tópico

Como resolvo erros de autorização ao tentar adicionar assinantes a um tópico do Amazon SNS?

AWS OFICIAL
AWS OFICIALAtualizada há 10 meses