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á.
Inscrevendo uma SQS fila da Amazon em um tópico da Amazon SNS
Para permitir que um SNS tópico da Amazon envie mensagens para uma SQS fila da Amazon, faça o seguinte:
-
Use o SQSconsole da Amazon
, que simplifica o processo. Para obter mais informações, consulte Inscrever uma SQS fila da Amazon em um SNS tópico da Amazon no Guia do desenvolvedor do Amazon Simple Queue Service. -
Siga estas etapas:
Para saber mais sobre como configurar um tópico para enviar mensagens a uma fila que está em uma conta da AWS diferente, consulte Enviando SNS mensagens da Amazon para uma SQS fila da Amazon em uma conta diferente.
Para ver um AWS CloudFormation modelo que cria um tópico que envia mensagens para duas filas, consulteAutomatize as SQS mensagens da Amazon SNS para a Amazon com AWS CloudFormation.
Etapa 1: obtenha a informação ARN sobre a fila e o tópico
Ao inscrever uma fila em seu tópico, você precisará de uma cópia do ARN para a fila. Da mesma forma, ao dar permissão para que o tópico envie mensagens para a fila, você precisará de uma cópia do ARN para o tópico.
Para obter a filaARN, você pode usar o SQS console da Amazon ou a GetQueueAttributesAPIação.
Para obter a fila no ARN console da Amazon SQS
Faça login no AWS Management Console e abra o SQS console da Amazon em https://console.aws.amazon.com/sqs/
. -
Selecione a caixa da fila ARN que você deseja obter.
-
Na seção Detalhes, copie o ARN valor para que você possa usá-lo para assinar o SNS tópico da Amazon.
Para obter o tópicoARN, você pode usar o SNS console da Amazon, o sns-get-topic-attributes
comando ou a GetQueueAttributes
API ação.
Para obter o tópico no SNS console ARN da Amazon
Faça login no SNSconsole da Amazon
. -
No painel de navegação, escolha o tópico cujo tópico ARN você deseja obter.
-
Na seção Detalhes, copie o ARNvalor para que você possa usá-lo para dar permissão ao SNS tópico da Amazon para enviar mensagens para a fila.
Etapa 2: dê permissão ao SNS tópico da Amazon para enviar mensagens para a SQS fila da Amazon
Para que um SNS tópico da Amazon possa enviar mensagens para uma fila, você deve definir uma política na fila que permita que o SNS tópico da Amazon execute a sqs:SendMessage
ação.
Antes de inscrever uma fila em um tópico, você precisa de um tópico e uma fila. Se ainda não criou um tópico ou uma fila, crie-os agora. Para obter mais informações, consulte Criar um tópico e Criar uma fila no Guia do desenvolvedor do Amazon Simple Queue Service.
Para definir uma política em uma fila, você pode usar o SQS console da Amazon ou a SetQueueAttributesAPIação. Antes de começar, verifique se você tem o ARN tópico que deseja permitir para enviar mensagens para a fila. Se você estiver assinando uma fila para vários tópicos, sua política deverá conter um elemento Statement
para cada tópico.
Para definir uma SendMessage política em uma fila usando o console da Amazon SQS
Faça login no AWS Management Console e abra o SQS console da Amazon em https://console.aws.amazon.com/sqs/
. -
Marque a caixa da fila cuja política você deseja definir, escolha a guia Access policy (Política de acesso) e escolha Edit (Editar).
-
NoPolítica de acesso, defina quem pode acessar sua fila.
-
Adicione uma condição que permite a ação para o tópico.
-
Principal
Definido como o SNS serviço da Amazon, conforme mostrado no exemplo abaixo. -
Use as chaves de condição globais
aws:SourceArn
ouaws:SourceAccount
para se proteger contra o cenário confused deputy. Para usar essas chaves de condição, defina o valor como o ARN do seu tópico. Se sua fila estiver inscrita em vários tópicos, useaws:SourceAccount
em seu lugar.
Por exemplo, a política a seguir MyTopic permite enviar mensagens para MyQueue.
{ "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic" } } } ] }
-
Etapa 3: Inscrever a fila no tópico da Amazon SNS
Para enviar mensagens para uma fila por meio de um tópico, você deve inscrever a fila no tópico da AmazonSNS. Você especifica a fila por seu. ARN Para se inscrever em um tópico, você pode usar o SNS console da Amazon, o sns-subscribe
CLI comando ou a Subscribe
API ação. Antes de começar, verifique se você tem o ARN nome da fila em que deseja se inscrever.
Faça login no SNSconsole da Amazon
. -
No painel de navegação, escolha Topics (Tópicos).
-
Na página Topics (Tópicos), escolha um tópico.
-
Sobre o
MyTopic
página, na página Assinaturas, escolha Criar assinatura. -
Na página Create subscription (Criar inscrição), na seção Details (detalhes), faça o seguinte:
-
Verifique o tópico ARN.
-
Em Protocolo, escolha Amazon SQS.
-
Para Endpoint, insira o ARN de uma SQS fila da Amazon.
-
Escolha Create Subscription.
Quando a inscrição for confirmada, o ID da inscrição da nova inscrição exibirá o ID da inscrição. Se o proprietário da fila criar a inscrição, ela será automaticamente confirmada e deverá ser ativada quase que imediatamente.
Geralmente, você inscreverá sua própria fila em seu próprio tópico em sua própria conta. No entanto, você também pode inscrever uma fila de uma conta diferente em seu tópico. Se o usuário que criar a inscrição não for o proprietário da fila (por exemplo, se um usuário da conta A inscreve uma fila da conta B para um tópico na conta A), a inscrição deverá ser confirmada. Para obter mais informações sobre como inscrever uma fila de uma conta diferente e confirmar a inscrição, consulte Enviando SNS mensagens da Amazon para uma SQS fila da Amazon em uma conta diferente.
-
Etapa 4: Conceder aos usuários permissões para o tópico apropriado e as ações da fila
Você deve usar AWS Identity and Access Management (IAM) para permitir que somente usuários apropriados publiquem no SNS tópico da Amazon e leiam/excluam mensagens da fila da AmazonSQS. Para obter mais informações sobre o controle de ações em tópicos e filas para IAM usuáriosUsando políticas baseadas em identidade com a Amazon SNS, consulte Gerenciamento de identidade e acesso na Amazon SQS no Guia do desenvolvedor do Amazon Simple Queue Service.
Há duas maneiras de controlar o acesso a um tópico ou uma fila:
-
Adicione uma política a um IAM usuário ou grupo. A maneira mais simples de conceder aos usuários permissões para tópicos ou filas é criar um grupo e adicionar a política adequada e os usuários ao grupo. É muito mais fácil adicionar e remover usuários de um grupo do que controlar as políticas definidas para usuários individualmente.
-
Adicione uma política ao tópico ou à fila. Se você quiser conceder permissões para um tópico ou fila para outra AWS conta, a única maneira de fazer isso é adicionando uma política que tenha como principal a pessoa à qual Conta da AWS você deseja conceder permissões.
Você deve usar o primeiro método para a maioria dos casos (aplicar políticas a grupos e gerenciar permissões para usuários adicionando ou removendo os usuários adequados aos grupos). Se você precisa conceder permissões para um usuário em outra conta, use o segundo método.
Adicionar uma política a um IAM usuário ou grupo
Se você adicionasse a política a seguir a um IAM usuário ou grupo, concederia a esse usuário ou membros desse grupo permissão para realizar a sns:Publish
ação no tópico MyTopic.
{ "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }
Se você adicionasse a política a seguir a um IAM usuário ou grupo, concederia a esse usuário ou membros desse grupo permissão para realizar as sqs:DeleteMessage
ações sqs:ReceiveMessage
e nas filas MyQueue 1 e MyQueue 2.
{ "Statement": [ { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue1", "arn:aws:sqs:us-east-2:123456789012:MyQueue2" ] } ] }
Adição de uma política a um tópico ou uma fila
Os exemplos de políticas a seguir mostram como conceder a outra conta permissões para um tópico e uma fila.
nota
Ao conceder a outra pessoa Conta da AWS acesso a um recurso em sua conta, você também concede permissões a esse recurso aos IAM usuários que têm acesso em nível de administrador (acesso curinga). Todos os outros IAM usuários da outra conta têm acesso automaticamente negado ao seu recurso. Se você quiser dar a IAM usuários específicos esse Conta da AWS acesso ao seu recurso, a conta ou um IAM usuário com acesso em nível de administrador deve delegar permissões para o recurso a esses usuários. IAM Para obter mais informações sobre a delegação entre contas, consulte Habilitando o acesso entre contas no Guia de uso IAM.
Se você adicionasse a política a seguir a um tópico MyTopic na conta 123456789012, concederia permissão à conta 111122223333 para realizar a ação nesse tópico. sns:Publish
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }
Se você adicionasse a política a seguir a uma fila MyQueue na conta 123456789012, concederia permissão à conta 111122223333 para realizar as ações e nessa fila. sqs:ReceiveMessage
sqs:DeleteMessage
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue" ] } ] }
Etapa 5: Testar as assinaturas de fila do tópico
Você pode testar as inscrições de fila de um tópico publicando nele e visualizando a mensagem que ele envia para a fila.
Para publicar em um tópico usando o SNS console da Amazon
-
Usando as credenciais do IAM usuário Conta da AWS ou com permissão para publicar no tópico, faça login no AWS Management Console e abra o SNS console da Amazon em https://console.aws.amazon.com/sns/
. -
No painel de navegação, escolha o tópico e selecione Publish to Topic (Publicar no tópico).
-
Na caixa Subject (Assunto), digite um assunto (por exemplo,
Testing publish to queue
), na caixa Message (Mensagem), digite algum texto (por exemplo,Hello world!
) e escolha Publish Message (Publicar mensagem). Será exibida a seguinte mensagem: Your message has been successfully published.
Para ver a mensagem do tópico usando o SQS console da Amazon
-
Usando as credenciais do IAM usuário Conta da AWS ou com permissão para visualizar mensagens na fila, faça login no AWS Management Console e abra o SQS console da Amazon em. https://console.aws.amazon.com/sqs/
-
Escolha uma queue (fila) que esteja inscrita no tópico.
-
Escolha Send and receive messages (Enviar e receber mensagens), depois escolha Poll for messages (Pesquisar mensagens). Uma mensagem com um tipo de Notificação é exibida.
-
Na coluna Body (Corpo), escolha More Details (Mais detalhes). A caixa Detalhes da mensagem contém um JSON documento que contém o assunto e a mensagem que você publicou no tópico. A mensagem é semelhante ao JSON documento a seguir.
{ "Type" : "Notification", "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "Testing publish to subscribed queues", "Message" : "Hello world!", "Timestamp" : "2012-03-29T05:12:16.901Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEnTrFPa3...", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee" }
-
Escolha Fechar. Você publicou com sucesso em um tópico que envia mensagens de notificação para uma fila.