Gerenciando assinaturas no Amazon SNS com o AWS SDK for PHP versão 3 - AWS SDK for 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 o AWS SDK for PHP versão 3

Use os 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, o AWS Server Migration Service (AWS SMS) ou o AWS Lambda.

As assinaturas são anexadas a um tópico que gerencia o envio de mensagens aos assinantes. Saiba mais sobre como criar tópicos em Gerenciar tópicos no Amazon SNS com o AWS SDK for PHP versão 3.

Os exemplos a seguir mostram como:

Para obter mais informações sobre como utilizar o Amazon SNS, consulte Uso do Amazon SNS para mensagens de sistema para sistema.

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

Credenciais

Antes de executar o código de exemplo, configure suas credenciais da AWS, conforme descrito em Credenciais. Em seguida, importe o AWS SDK for PHP, conforme descrito em Uso básico.

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 a inscrição de 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 endpoint de : em um tópico

Para iniciar a inscrição em um : web, utilize a operação Assinar.

O método de assinatura pode ser utilizado para a inscrição de 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 inscrição em uma função do Lambda, utilize a operação Assinar.

O método de assinatura pode ser utilizado para a inscrição de 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 esta 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 a inscrição de 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 for 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 será obrigatória uma assinatura da AWS. 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()); }