View a markdown version of this page

Excluir uma assinatura e um tópico do Amazon SNS - Amazon Simple Notification Service

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á.

Excluir uma assinatura e um tópico do Amazon SNS

Quando um tópico é excluído, suas assinaturas associadas são excluídas de forma assíncrona. Embora os clientes ainda possam acessar essas assinaturas, elas não estão mais associadas ao tópico, mesmo que você recrie o tópico usando o mesmo nome. Se um publicador tentar publicar uma mensagem no tópico excluído, o publicador receberá uma mensagem de erro indicando que o tópico não existe. Da mesma forma, qualquer tentativa de se inscrever no tópico excluído também resultará em uma mensagem de erro. Não é possível excluir uma assinatura que esteja pendente de confirmação. O Amazon SNS exclui automaticamente as assinaturas não confirmadas após 48 horas, incluindo assinaturas de e-mail e email-json que nunca foram confirmadas ou que foram canceladas pelo destinatário. No entanto, as assinaturas de e-mail e email-json suspensas pelo Amazon SNS por excederem 10 mensagens por segundo (TPS) são mantidas por 30 dias antes da exclusão.

Importante

Os tópicos excluídos do Amazon SNS não podem ser recuperados. Recomendamos que você exclua as assinaturas antes de excluir um tópico.

Depois que a assinatura for excluída, ela não poderá ser recuperada. As notificações publicadas no tópico do Amazon SNS não serão enviadas para essa assinatura excluída. Você precisará recriar a assinatura para receber notificações.

Para excluir um tópico ou assinatura do Amazon SNS usando o Console de gerenciamento da AWS

A exclusão de um tópico ou assinatura do Amazon SNS garante o gerenciamento eficiente dos recursos, evitando o uso desnecessário e mantendo o console do Amazon SNS organizado. Essa etapa ajuda a evitar possíveis custos de recursos ociosos e simplifica a administração ao remover tópicos ou assinaturas que não são mais necessários.

Para excluir um tópico usando o Console de gerenciamento da AWS
  1. Faça login no console do Amazon SNS.

  2. No painel de navegação à esquerda, selecione Tópicos.

  3. Na página Topics (Tópicos), selecione um tópico e, em seguida, escolha Delete (Excluir).

  4. Na caixa de diálogo Delete topic (Excluir tópico), insira delete me e escolha Delete (Excluir).

    O console exclui o tópico.

Para excluir uma assinatura usando o Console de gerenciamento da AWS
  1. Faça login no console do Amazon SNS.

  2. No painel de navegação à esquerda, selecione Assinaturas.

  3. Na página Assinaturas, escolha uma assinatura com o status de Confirmada e escolha Excluir.

  4. Na caixa de diálogo Delete subscription (Excluir assinatura), escolha Delete (Excluir).

    O console exclui a assinatura.

Para excluir uma assinatura e um tópico usando um AWS SDK

Para usar um AWS SDK, você deve configurá-lo com suas credenciais. Para obter mais informações, consulte The shared config and credentials files (“Os arquivos compartilhados de configuração e de credenciais”) no Guia de referência de AWS SDKs e ferramentas.

Os exemplos de código a seguir mostram como usar o DeleteTopic.

.NET
SDK para .NET
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

Exclua um tópico por meio do respectivo ARN.

/// <summary> /// Delete a topic by its topic ARN. /// </summary> /// <param name="topicArn">The ARN of the topic.</param> /// <returns>True if successful.</returns> public async Task<bool> DeleteTopicByArn(string topicArn) { var deleteResponse = await _amazonSNSClient.DeleteTopicAsync( new DeleteTopicRequest() { TopicArn = topicArn }); return deleteResponse.HttpStatusCode == HttpStatusCode.OK; }
  • Para obter detalhes da API, consulte DeleteTopic em Referência AWS SDK para .NET da API.

C++
SDK para C++
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

//! Delete an Amazon Simple Notification Service (Amazon SNS) topic. /*! \param topicARN: The Amazon Resource Name (ARN) for an Amazon SNS topic. \param clientConfiguration: AWS client configuration. \return bool: Function succeeded. */ bool AwsDoc::SNS::deleteTopic(const Aws::String &topicARN, const Aws::Client::ClientConfiguration &clientConfiguration) { Aws::SNS::SNSClient snsClient(clientConfiguration); Aws::SNS::Model::DeleteTopicRequest request; request.SetTopicArn(topicARN); const Aws::SNS::Model::DeleteTopicOutcome outcome = snsClient.DeleteTopic(request); if (outcome.IsSuccess()) { std::cout << "Successfully deleted the Amazon SNS topic " << topicARN << std::endl; } else { std::cerr << "Error deleting topic " << topicARN << ":" << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); }
  • Para obter detalhes da API, consulte DeleteTopic em Referência AWS SDK para C++ da API.

CLI
AWS CLI

Para excluir um tópico do SNS

O exemplo delete-topic a seguir exclui o tópico do SNS especificado.

aws sns delete-topic \ --topic-arn "arn:aws:sns:us-west-2:123456789012:my-topic"

Este comando não produz saída.

  • Para obter detalhes da API, consulte DeleteTopic em Referência de AWS CLI comandos.

Go
SDK para Go V2
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

import ( "context" "encoding/json" "log" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/sns" "github.com/aws/aws-sdk-go-v2/service/sns/types" ) // SnsActions encapsulates the Amazon Simple Notification Service (Amazon SNS) actions // used in the examples. type SnsActions struct { SnsClient *sns.Client } // DeleteTopic delete an Amazon SNS topic. func (actor SnsActions) DeleteTopic(ctx context.Context, topicArn string) error { _, err := actor.SnsClient.DeleteTopic(ctx, &sns.DeleteTopicInput{ TopicArn: aws.String(topicArn)}) if err != nil { log.Printf("Couldn't delete topic %v. Here's why: %v\n", topicArn, err) } return err }
  • Para obter detalhes da API, consulte DeleteTopic em Referência AWS SDK para Go da API.

Java
SDK para Java 2.x
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.DeleteTopicRequest; import software.amazon.awssdk.services.sns.model.DeleteTopicResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class DeleteTopic { public static void main(String[] args) { final String usage = """ Usage: <topicArn> Where: topicArn - The ARN of the topic to delete. """; if (args.length != 1) { System.out.println(usage); System.exit(1); } String topicArn = args[0]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); System.out.println("Deleting a topic with name: " + topicArn); deleteSNSTopic(snsClient, topicArn); snsClient.close(); } public static void deleteSNSTopic(SnsClient snsClient, String topicArn) { try { DeleteTopicRequest request = DeleteTopicRequest.builder() .topicArn(topicArn) .build(); DeleteTopicResponse result = snsClient.deleteTopic(request); System.out.println("\n\nStatus was " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }
  • Para obter detalhes da API, consulte DeleteTopic em Referência AWS SDK for Java 2.x da API.

JavaScript
SDK para JavaScript (v3)
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

Crie o cliente em um módulo separado e exporte-o.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

Importe o SDK e os módulos do cliente e chame a API.

import { DeleteTopicCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic to delete. */ export const deleteTopic = async (topicArn = "TOPIC_ARN") => { const response = await snsClient.send( new DeleteTopicCommand({ TopicArn: topicArn }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'a10e2886-5a8f-5114-af36-75bd39498332', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } };
Kotlin
SDK para Kotlin
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

suspend fun deleteSNSTopic(topicArnVal: String) { val request = DeleteTopicRequest { topicArn = topicArnVal } SnsClient.fromEnvironment { region = "us-east-1" }.use { snsClient -> snsClient.deleteTopic(request) println("$topicArnVal was successfully deleted.") } }
  • Para obter detalhes da API, consulte a DeleteTopic referência da API AWS SDK para Kotlin.

PHP
SDK para PHP
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient; /** * Deletes an SNS topic and all its subscriptions. * * This code expects that you have AWS credentials set up per: * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html */ $SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic'; try { $result = $SnSclient->deleteTopic([ 'TopicArn' => $topic, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }
  • Para obter detalhes da API, consulte DeleteTopic em Referência AWS SDK para PHP da API.

Python
SDK para Python (Boto3)
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

class SnsWrapper: """Encapsulates Amazon SNS topic and subscription functions.""" def __init__(self, sns_resource): """ :param sns_resource: A Boto3 Amazon SNS resource. """ self.sns_resource = sns_resource @staticmethod def delete_topic(topic): """ Deletes a topic. All subscriptions to the topic are also deleted. """ try: topic.delete() logger.info("Deleted topic %s.", topic.arn) except ClientError: logger.exception("Couldn't delete topic %s.", topic.arn) raise
class SnsWrapper: """Wrapper class for managing Amazon SNS operations.""" def __init__(self, sns_client: Any) -> None: """ Initialize the SnsWrapper. :param sns_client: A Boto3 Amazon SNS client. """ self.sns_client = sns_client @classmethod def from_client(cls) -> 'SnsWrapper': """ Create an SnsWrapper instance using a default boto3 client. :return: An instance of this class. """ sns_client = boto3.client('sns') return cls(sns_client) def delete_topic(self, topic_arn: str) -> bool: """ Delete an SNS topic. :param topic_arn: The ARN of the topic to delete. :return: True if successful. :raises ClientError: If the topic deletion fails. """ try: self.sns_client.delete_topic(TopicArn=topic_arn) logger.info(f"Deleted topic: {topic_arn}") return True except ClientError as e: error_code = e.response.get('Error', {}).get('Code', 'Unknown') if error_code == 'NotFound': logger.warning(f"Topic not found: {topic_arn}") return True # Already deleted else: logger.error(f"Error deleting topic: {error_code} - {e}") raise
  • Para obter detalhes da API, consulte a DeleteTopic Referência da API AWS SDK for Python (Boto3).

SAP ABAP
SDK para SAP ABAP
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

TRY. lo_sns->deletetopic( iv_topicarn = iv_topic_arn ). MESSAGE 'SNS topic deleted.' TYPE 'I'. CATCH /aws1/cx_snsnotfoundexception. MESSAGE 'Topic does not exist.' TYPE 'E'. ENDTRY.
  • Para obter detalhes da API, consulte a DeleteTopic referência da API AWS SDK for SAP ABAP.

Swift
SDK para Swift
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

import AWSSNS let config = try await SNSClient.SNSClientConfiguration(region: region) let snsClient = SNSClient(config: config) _ = try await snsClient.deleteTopic( input: DeleteTopicInput(topicArn: arn) )
  • Para obter detalhes da API, consulte DeleteTopic a referência da API AWS SDK for Swift.