Gerenciando assinaturas no Amazon SNS com a versão 3 AWS SDK para PHP - AWS SDK para PHP

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

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.

Os exemplos a seguir mostram como:

Para obter mais informações sobre o uso do Amazon SNS, consulte Usando o Amazon System-to-System SNS para mensagens.

Todo o código de exemplo do AWS SDK para PHP está disponível aqui em GitHub.

Credenciais

Antes de executar o código de exemplo, configure suas AWS credenciais, conforme descrito emAutenticando com o AWS uso da AWS SDK para PHP versão 3. Em seguida, importe o AWS SDK para PHP, conforme descrito emInstalando a AWS SDK para PHP versão 3.

Inscrever um endereço de e-mail em um tópico

Para iniciar a inscrição em um endereço de e-mail, utilize a operação Assinar.

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

Para iniciar a inscrição em uma aplicação web, utilize a operação Assinar.

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

Para iniciar a assinatura de uma função do Lambda, utilize a operação Assinar.

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

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.

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.

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

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 ConfirmSubscriptionoperaçã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

Para listar até 100 assinaturas existentes em uma determinada AWS região, use a ListSubscriptionsoperaçã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

Para excluir um endpoint inscrito em um tópico, utilize a operação Cancelar assinatura.

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

Para enviar uma mensagem a cada endpoint inscrito em um tópico do Amazon SNS, utilize a operação Publicar.

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