Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Por que não consigo publicar nem assinar um tópico do Amazon SNS?
Não consigo publicar nem assinar um tópico do Amazon Simple Notification Service (Amazon SNS). Como solucionar o problema?
Breve descrição
Um recurso ou uma identidade do AWS Identity and Access Management (IAM) não consegue publicar nem assinar um tópico do Amazon SNS sem as permissões necessárias.
Para conceder as permissões do IAM necessárias para publicar ou assinar um tópico do Amazon SNS, execute um destes procedimentos, de acordo com seu caso de uso.
Observação: o Amazon SNS usa políticas de acesso baseadas em identidade do IAM e baseadas em recursos do Amazon SNS de maneira conjunta para conceder acesso a tópicos do SNS. Você pode usar uma política do IAM para restringir o acesso de usuários ou funções a ações e tópicos do Amazon SNS. Uma política do IAM pode restringir o acesso somente aos usuários de sua conta da AWS, e não a usuários de outras contas da AWS. Para mais informações, consulte Políticas do IAM e do Amazon SNS juntas.
Resolução
Para conceder permissões para outro produto da AWS publicar em um tópico do Amazon SNS
A política baseada em recursos do tópico do Amazon SNS deve permitir que o outro produto da AWS publique mensagens no tópico. Analise a política de acesso de seu tópico e confirme se ela tem as permissões necessárias, adicionando-as, se necessário.
Para adicionar as permissões necessárias, edite a política de acesso do tópico do Amazon SNS de modo a incluir a seguinte declaração de permissões.
Importante: substitua <service> pelo serviço da AWS.
{ "Sid": "Allow-AWS-Service-to-publish-to-the-topic", "Effect": "Allow", "Principal": { "Service": "<service>.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:your_region:123456789012:YourTopicName" }
Importante: essas permissões permitem que qualquer pessoa que tenha acesso ao nome do recurso da Amazon (ARN) de seu tópico do SNS publique mensagens no tópico pelo endpoint de serviço. É possível adicionar chaves de condição global para restringir as permissões de publicação a recursos específicos. O exemplo a seguir usa o operador de condição arnLike e a chave de condição global aws:SourceArn. Para obter mais informações, consulte Exemplos de casos para controle de acesso do Amazon SNS.
Exemplo de política do IAM que restringe as permissões de publicação do Amazon SNS a recursos específicos
Importante: substitua <region> pela região da AWS do recurso. Substitua <account-id> pelo ID de sua conta. Substitua <resource-name> pelo nome do recurso. Substitua <service> pelo serviço da AWS.
{ "Sid": "Allow-AWS-Service-to-publish-to-the-topic", "Effect": "Allow", "Principal": { "Service": "<service>.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:your_region:123456789012:YourTopicName", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:<service>:<region>:<account-id>:<resource-type>:<resource-name>" } } }
Observação: o Amazon S3 não é compatível com tópicos FIFO do SNS. Se houver um ARN do S3 na política de tópicos, verifique se não é um caminho para uma pasta de bucket. Por exemplo: arn:aws:s3:*:*:mys3-bucket/*
Para permitir que um usuário ou uma função do IAM assine e publique em um tópico do Amazon SNS
Por padrão, somente o proprietário do tópico pode publicar ou assinar o tópico. Para permitir que outras entidades do IAM assinem e publiquem em seu tópico, a política baseada em identidade do tópico deverá conceder as permissões necessárias.
Importante: verifique se nem a política da entidade do IAM nem a política de acesso do tópico do SNS nega explicitamente o acesso ao recurso do SNS. Para obter mais informações, consulte A diferença entre negações explícitas e implícitas.
Se a entidade do IAM e o tópico do SNS estiverem em contas da AWS diferentes
Siga estas duas etapas:
1. Anexe uma declaração de política do IAM à entidade do IAM permitindo que a entidade execute as ações “sns:Subscribe” e “sns:Publish”. Para obter instruções, consulte Adicionar e remover permissões de identidade do IAM.
Veja a seguir um exemplo de política baseada em identidade do IAM que permite que uma entidade do IAM assine e publique em um tópico do SNS:
{ "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish", "sns:Subscribe" ], "Resource": "arn:aws:sns:your_region:123456789012:YourTopicName" } ] }
2. Anexe uma declaração de política do SNS à política de acesso de seu tópico permitindo que a entidade do IAM execute as ações “sns:Subscribe” e “sns:Publish”. Para obter instruções, consulte Como editar a política de acesso de meu tópico do Amazon SNS?
Veja a seguir um exemplo de política de acesso do tópico do Amazon SNS que permite que uma entidade do IAM assine e publique em um tópico do SNS:
{ "Statement": [ { "Sid": "Allow-SNS-Permission", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "sns:Publish", "sns:Subscribe" ], "Resource": "arn:aws:sns:your_region:123456789012:YourTopicName" } ] }
Observação: a Entidade pode ser um usuário ou função baseada em identidade do IAM ou um número de conta da AWS. Para mais informações, consulte Elementos de política JSON da AWS: principal.
Se a entidade do IAM e o tópico do SNS estiverem na mesma conta
Siga uma destas opções, mas não ambas:
Anexe uma declaração de política do IAM à entidade do IAM permitindo que a entidade execute as ações “sns:Subscribe” e “sns:Publish”.
-ou-
Anexe uma declaração de política do SNS à política de acesso de seu tópico permitindo que a entidade do IAM execute as ações “sns:Subscribe” e “sns:Publish”.
Para obter exemplos de declarações de política, consulte a seção Se a entidade do IAM e o tópico do SNS estiverem em diferentes contas da AWS deste artigo.
(Para tópicos com criptografia no lado do servidor [SSE] ativada) Confirme se o tópico tem as permissões necessárias do AWS Key Management (AWS KMS)
Caso seu tópico esteja com o SSE ativado, o tópico do Amazon SNS deverá usar uma chave do AWS KMS gerenciada pelo cliente. A chave do KMS deverá incluir uma política de chave personalizada que conceda permissões de uso de chaves suficientes a outros produtos da AWS.
Os requisitos mínimos são estas permissões:
“kms:Decrypt”
“kms:GenerateDataKey*”
Para configurar as permissões necessárias do AWS KMS, faça o seguinte:
2. Configure a SSE para seu tópico do Amazon SNS usando a chave personalizada do KMS que você acabou de criar.
Exemplo de declaração de política do IAM que permite que outro produto da AWS publique mensagens em um tópico do SNS criptografado
Importante: substitua <service> pelo serviço da AWS.
{ "Sid": "Allow-a-service-to-use-this-key", "Effect": "Allow", "Principal": { "Service": "<service>.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*" }
Informações relacionadas
Política do IAM para um tópico do SNS de destino
Conceitos básicos do AWS Cost Anomaly Detection

Conteúdo relevante
- feita há 2 meseslg...
- feita há 2 meseslg...
- feita há um mêslg...
- Resposta aceitafeita há 22 diaslg...
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano