

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

# Gerenciando assinaturas no Amazon SNS com a versão 3 AWS SDK para PHP
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

Use tópicos do Amazon Simple Notification Service (Amazon SNS) para enviar notificações para o Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, endereços de e-mail, () ou. AWS Server Migration Service AWS SMS AWS Lambda

As assinaturas são anexadas a um tópico que gerencia o envio de mensagens aos assinantes. Saiba mais sobre a criação de tópicos em [Gerenciando tópicos no Amazon SNS com a AWS SDK para PHP versão 3](sns-examples-managing-topics.md).

Os exemplos a seguir mostram como:
+ Inscreva-se em um tópico existente com a função [Assinar](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#subscribe).
+ Verifique uma assinatura usando [ConfirmSubscription](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#confirmsubscription).
+ Liste as assinaturas existentes usando. [ListSubscriptionsByTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listsubscriptionsbytopic)
+ Exclua uma assinatura com a opção [Cancelar assinatura](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#unsubscribe).
+ Enviar uma mensagem para todos os assinantes de um tópico com a função [Publicar](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Para obter mais informações sobre o uso do Amazon SNS, consulte [Usando o Amazon System-to-System SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-system-to-system-messaging.html) para mensagens.

Todo o código de exemplo do AWS SDK para PHP está disponível [aqui em 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 AWS credenciais, 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).

## Inscrever um endereço de e-mail em um tópico
<a name="subscribe-an-email-address-to-a-topic"></a>

Para iniciar a inscrição em um endereço de e-mail, utilize a operação [Assinar](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

O método de assinatura pode ser utilizado para inscrever vários endpoints em um tópico do Amazon SNS, dependendo dos valores adotados para os parâmetros passados. Isso é mostrado em outros exemplos deste tópico.

Neste exemplo, o endpoint é um endereço de e-mail. Um token de confirmação é enviado para este e-mail. Dentro do prazo de três dias de recebimento, verifique a assinatura com esse token de confirmação.

 **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'
]);

$protocol = 'email';
$endpoint = 'sample@example.com';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Inscrever um endpoint de aplicação em um tópico
<a name="subscribe-an-application-endpoint-to-a-topic"></a>

Para iniciar a inscrição em uma aplicação web, utilize a operação [Assinar](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

O método de assinatura pode ser utilizado para inscrever vários endpoints em um tópico do Amazon SNS, dependendo dos valores adotados para os parâmetros passados. Isso é mostrado em outros exemplos deste tópico.

Nesse exemplo, o endpoint é uma URL. Um token de confirmação é enviado para este endereço da web. Dentro do prazo de três dias de recebimento, verifique a assinatura com esse token de confirmação.

 **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'
]);

$protocol = 'https';
$endpoint = 'https://';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Inscrever uma função do Lambda em um tópico
<a name="subscribe-a-lam-function-to-a-topic"></a>

Para iniciar a assinatura de uma função do Lambda, utilize a operação [Assinar](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

O método de assinatura pode ser utilizado para inscrever vários endpoints em um tópico do Amazon SNS, dependendo dos valores adotados para os parâmetros passados. Isso é mostrado em outros exemplos deste tópico.

Nesse exemplo, o endpoint é uma função do Lambda. Um token de confirmação é enviado para essa função do Lambda. Dentro do prazo de três dias de recebimento, verifique a assinatura com esse token de confirmação.

 **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'
]);

$protocol = 'lambda';
$endpoint = 'arn:aws:lambda:us-east-1:123456789023:function:messageStore';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Inscrever mensagens SMS de texto em um tópico
<a name="subscribe-a-text-sms-to-a-topic"></a>

Para enviar mensagens SMS a vários números de telefone ao mesmo tempo, inscreva cada número em um tópico.

Para iniciar a inscrição em um número de telefone, utilize a operação [Assinar](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

O método de assinatura pode ser utilizado para inscrever vários endpoints em um tópico do Amazon SNS, dependendo dos valores adotados para os parâmetros passados. Isso é mostrado em outros exemplos deste tópico.

Neste exemplo, o endpoint é um número de telefone no formato E.164, um padrão para telecomunicações internacionais.

Um token de confirmação é enviado para este número de telefone. Dentro do prazo de três dias de recebimento, verifique a assinatura com esse token de confirmação.

Para obter uma alternativa de envio de mensagens SMS com o Amazon SNS, consulte [Envio de mensagens SMS no Amazon SNS com o AWS SDK para PHP versão 3](sns-examples-sending-sms.md).

 **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'
]);

$protocol = 'sms';
$endpoint = '+1XXX5550100';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Confirmar inscrição em um tópico
<a name="confirm-subscription-to-a-topic"></a>

Para criar uma assinatura, o proprietário do endpoint deve confirmar a intenção de receber mensagens do tópico por meio de um token enviado mediante o estabelecimento da inscrição, conforme descrito anteriormente. Os tokens de confirmação são válidos por três dias. Após três dias, você pode reenviar um token ao criar uma nova assinatura.

Para confirmar uma assinatura, use a [ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)operação.

 **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'
]);

$subscription_token = 'arn:aws:sns:us-east-1:111122223333:MyTopic:123456-abcd-12ab-1234-12ba3dc1234a';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->confirmSubscription([
        'Token' => $subscription_token,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Listar assinaturas em um tópico
<a name="list-subscriptions-to-a-topic"></a>

Para listar até 100 assinaturas existentes em uma determinada AWS região, use a [ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html)operação.

 **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->listSubscriptions();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Cancelar a assinatura de um tópico
<a name="unsubscribe-from-a-topic"></a>

Para excluir um endpoint inscrito em um tópico, utilize a operação [Cancelar assinatura](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html).

Se a assinatura exigir autenticação para exclusão, somente o proprietário da assinatura ou o proprietário do tópico poderá cancelar a assinatura, e uma AWS assinatura será necessária. Se a chamada de cancelamento da assinatura não exigir autenticação e o solicitante não for proprietário da assinatura, uma mensagem de cancelamento final será entregue ao endpoint.

 **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'
]);

$subscription = 'arn:aws:sns:us-east-1:111122223333:MySubscription';

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

## Publique uma mensagem em um tópico do Amazon SNS
<a name="publish-a-message-to-an-sns-topic"></a>

Para enviar uma mensagem a cada endpoint inscrito em um tópico do Amazon SNS, utilize a operação [Publicar](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).

Crie um objeto que contenha os parâmetros para publicar uma mensagem, incluindo o texto da mensagem e o nome do recurso da Amazon (ARN) do tópico do Amazon SNS.

 **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'
]);

$message = 'This message is sent from a Amazon SNS code sample.';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

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