Como resolvo um “erro de autorização” ao tentar visualizar ou modificar os atributos de uma assinatura do SQS entre contas no console do Amazon SNS?

Data da última atualização: 29/07/2022

Assinei minha fila do Amazon Simple Queue Service (Amazon SQS) em um tópico do Amazon Simple Notification Service (Amazon SNS) em uma conta diferente da AWS. Ao visualizar ou editar os atributos da minha assinatura entre contas no console do Amazon SNS, recebo um “erro de autorização”. Como posso corrigir isso?

Breve descrição

Se você criar uma assinatura de tópico do SNS para uma fila do SQS a partir de uma conta que não é proprietária do tópico, a conta proprietária da fila SQS é proprietária da assinatura. Se você visualizar ou editar atributos de assinatura do SNS na conta que criou o tópico do SNS, você receberá um erro de autorização.

Observação: as permissões relacionadas à assinatura para visualizar e editar não podem ser incluídas nas ações da Política de tópicos do SNS. Em vez disso, use as soluções a seguir.

Resolução

Usar o Console da AWS

  1. Abra o console do Amazon SNS na conta que possui o tópico do SNS.
  2. No painel de navegação, escolha Topics (Tópicos).
  3. Escolha o nome do tópico. Em seguida, na guia Subscriptions (Assinaturas), copie o ID da assinatura da fila do SQS.
  4. Abra o console do Amazon SNS na conta proprietária da fila SQS.
  5. Na opção de menu Subscriptions (Assinaturas), escolha o ID de assinatura que você copiou na etapa 3.
  6. Visualize e edite os atributos da assinatura conforme necessário.

Usar GetSubscriptionAttributes

Observação: se receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.

Visualize atributos de assinatura usando GetSubscriptionAttributes na conta que foi usada para criar a assinatura usando a AWS Command Line Interface (AWS CLI) ou o SDK. Para executar esse comando, o usuário ou o perfil do IAM deve ter permissões para as ações do SNS SetSubscriptionAttributes e GetSubscriptionAttributes.

O exemplo a seguir usa GetSubscriptionAttributes da AWS CLI, usando SubscriptionArn como um parâmetro de solicitação. Para recuperar SubscriptionArn, use ListSubscriptionsByTopic.

aws sns get-subscription-attributes --subscription-arn arn:aws:sns:eu-central-1:1234567890:TestTopicSubOwnerSQS:53XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
{
  "Attributes": {
    "Owner": "9876543210",
    "RawMessageDelivery": "false",
    "TopicArn": "arn:aws:sns:eu-central-1:1234567890:TestTopicSubOwnerSQS",
    "Endpoint": "example@amazon.com",
    "Protocol": "email",
    "PendingConfirmation": "false",
    "ConfirmationWasAuthenticated": "false",
    "SubscriptionArn": "arn:aws:sns:eu-central-1:1234567890:TestTopicSubOwnerSQS:53XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
   }
}

Exclua e recrie a assinatura

Se você quiser que a conta da AWS que possui o tópico do SNS controle os atributos da assinatura do tópico do SNS:

  1. Exclua a assinatura existente.
  2. Crie a mesma assinatura a partir da conta que possui o tópico do SNS.

A conta da AWS que possui o tópico do SNS agora é a proprietária do recurso de assinatura criado.