

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Administración de temas en Amazon SNS con la versión 3 de AWS SDK para PHP
<a name="sns-examples-managing-topics"></a>

Para enviar notificaciones a Amazon Simple Queue Service (Amazon SQS), URL HTTP/HTTPS, correo electrónico, AWS SMS, o AWS Lambda, primero debe crear un tema que administre la entrega de los mensajes a los suscriptores de ese tema

En lo relativo al patrón de diseño de observador, un tema es como el asunto. Una vez que se crea un tema, se añaden los suscriptores que reciben notificaciones automáticas cuando se publica un mensaje en el tema.

Obtenga más información sobre la suscripción a temas en [Administración de suscripciones en Amazon SNS con la versión 3 de AWS SDK para PHP](sns-examples-subscribing-unsubscribing-topics.md).

Los siguientes ejemplos muestran cómo:
+ Crear un tema en el que publicar notificaciones mediante [CreateTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#createtopic).
+ Devolver una lista de los temas del solicitante con [ListTopics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listtopic).
+ Eliminar un tema y todas sus suscripciones con [DeleteTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#deletetopic).
+ Devolver todas las propiedades de un tema con [GetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#gettopicattributes).
+ Permitir a un propietario de tema establecer un atributo del tema en un nuevo valor mediante [SetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#settopicattributes).

Para obtener más información sobre el uso de Amazon SNS, consulte [Atributos de temas de Amazon SNS para el estado de entrega de mensajes](https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html).

Todo el código de ejemplo de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en [Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe AWS SDK para PHP, como se indica en [Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

## Crear un tema
<a name="create-a-topic"></a>

Para crear un tema, utilice la operación [CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html).

Cada nombre de tema de su Cuenta de AWS debe ser exclusivo.

 **Importaciones** 

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

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

 **Código de muestra** 

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

## Lista de temas
<a name="list-your-topics"></a>

Para obtener una lista de hasta 100 temas existentes en la región de AWS actual, utilice la operación [ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html).

 **Importaciones** 

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

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

 **Código de muestra** 

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

## Eliminación de un tema
<a name="delete-a-topic"></a>

Para quitar un tema existente y todas sus suscripciones, utilice la operación [DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html).

Todos los mensajes que no se han entregado a los suscriptores también se eliminarán.

 **Importaciones** 

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

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

 **Código de muestra** 

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

## Obtener de atributos de los temas
<a name="get-topic-attributes"></a>

Para recuperar las propiedades de un solo tema existente, utilice la operación [GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html).

 **Importaciones** 

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

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

 **Código de muestra** 

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

## Crear atributos de temas
<a name="set-topic-attributes"></a>

Para actualizar las propiedades de un solo tema existente, utilice la operación [SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html).

Solo puede establecer los atributos `Policy`, `DisplayName` y `DeliveryPolicy`.

 **Importaciones** 

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

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

 **Código de muestra** 

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