

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

# Gerenciar tópicos no Amazon SNS com o AWS SDK para PHP versão 3
<a name="sns-examples-managing-topics"></a>

Para enviar notificações para Amazon Simple Queue Service (Amazon SQS), URLs de HTTP/HTTPS, e-mail, AWS SMS ou AWS Lambda, primeiramente é necessário criar um tópico que gerencie a entrega de mensagens a todos os assinantes desse tópico.

Em relação ao padrão de design do observador, o tópico é semelhante ao assunto. Após a criação do tópico, adicione assinantes que serão notificados automaticamente quando uma mensagem for publicada no tópico.

Saiba mais sobre como assinar tópicos em [Gerenciamento de assinaturas no Amazon SNS com o AWS SDK para PHP versão 3](sns-examples-subscribing-unsubscribing-topics.md).

Os exemplos a seguir mostram como:
+ Crie um tópico para publicar notificações com o [CreateTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#createtopic).
+ Obtenha uma lista de tópicos do solicitante com o [ListTopics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listtopic).
+ Exclua um tópico e todas as suas assinaturas com o [DeleteTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#deletetopic).
+ Obtenha todas as propriedades de um tópico com o [GetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#gettopicattributes).
+ Permita que o proprietário de um tópico defina um atributo do tópico como um novo valor com o [SetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#settopicattributes).

Para obter mais informações sobre o uso do Amazon SNS, consulte [Atributos de tópico do Amazon SNS para status de entrega de mensagens](https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html).

O código de exemplo completo do AWS SDK para PHP está disponível [aqui no GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenciais
<a name="examplecredentials"></a>

Antes de executar o código de exemplo, configure suas credenciais da AWS, conforme descrito em [Autenticando com o AWS uso da AWS SDK para PHP versão 3](credentials.md). Em seguida, importe o AWS SDK para PHP, conforme descrito em [Instalando a AWS SDK para PHP versão 3](getting-started_installation.md).

## Criar um tópico
<a name="create-a-topic"></a>

Para criar um tópico, utilize a operação [CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html).

Cada nome de tópico presente na Conta da AWS deve ser exclusivo.

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de exemplo** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topicname = 'myTopic';

try {
    $result = $SnSclient->createTopic([
        'Name' => $topicname,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Listar seus tópicos
<a name="list-your-topics"></a>

Para listar até 100 tópicos existente na região da AWS atual, utilize a operação [ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html).

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de exemplo** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listTopics();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Excluir um tópico
<a name="delete-a-topic"></a>

Para remover um tópico existente e todas as suas assinaturas, utilize a operação [DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html).

Todas as mensagens que ainda não tiverem sido entregues aos assinantes também serão excluídas.

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de exemplo** 

```
$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());
}
```

## Obter atributos de tópicos
<a name="get-topic-attributes"></a>

Para recuperar as propriedades de um único tópico existente, utilize a operação [GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html).

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de exemplo** 

```
$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->getTopicAttributes([
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Definir atributos de tópicos
<a name="set-topic-attributes"></a>

Para atualizar as propriedades de um único tópico existente, utilize a operação [SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html).

É possível definir apenas os atributos `Policy`, `DisplayName` e `DeliveryPolicy`.

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de exemplo** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);
$attribute = 'Policy | DisplayName | DeliveryPolicy';
$value = 'First Topic';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->setTopicAttributes([
        'AttributeName' => $attribute,
        'AttributeValue' => $value,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```