Administración de suscripciones en Amazon SNS con la versión 3 de AWS SDK for PHP - AWS SDK for PHP

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 suscripciones en Amazon SNS con la versión 3 de AWS SDK for PHP

Utilice los temas de Amazon Simple Notification Service (Amazon SNS) para enviar notificaciones a Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, direcciones de correo electrónico, AWS Server Migration Service (AWS SMS) o AWS Lambda.

Las suscripciones se adjuntan a un tema que administra el envío de mensajes a los suscriptores. Obtenga más información sobre la creación de temas en Administración de temas en Amazon SNS con la versión 3 de AWS SDK for PHP.

Los siguientes ejemplos muestran cómo:

Para obtener más información acerca de cómo utilizar Amazon SNS, consulte Uso de Amazon SNS para la mensajería entre sistemas.

Todo el código de ejemplo para el AWS SDK for PHP está disponible aquí en GitHub.

Credenciales

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en Credentials. A continuación, importe AWS SDK for PHP, como se indica en Uso básico.

Suscribir una dirección de correo electrónico a un tema

Para iniciar una suscripción a una dirección de correo electrónico, utilice la operación Suscribe.

Puede utilizar el método de suscripción para suscribir a varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores utilizados para los parámetros pasados. Esto se muestra en otros ejemplos en este tema.

En este ejemplo, el punto de enlace es una dirección de correo electrónico. Se envía un token de confirmación a este correo electrónico. Compruebe la suscripción con este token de confirmación en un plazo de tres días desde la recepció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' ]); $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()); }

Suscripción de un punto de conexión de aplicación a un tema

Para iniciar una suscripción a una aplicación web, utilice la operación Suscribe.

Puede utilizar el método de suscripción para suscribirse a varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores utilizados para los parámetros pasados. Esto se muestra en otros ejemplos en este tema.

En este ejemplo, el punto de enlace es una URL. Se envía un token de confirmación a esta dirección web. Compruebe la suscripción con este token de confirmación en un plazo de tres días desde la recepció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' ]); $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()); }

Suscripción de una función de Lambda a un tema

Para iniciar una suscripción a una función de Lambda, utilice la operación Suscribe.

Puede utilizar el método de suscripción para suscribirse a varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores utilizados para los parámetros pasados. Esto se muestra en otros ejemplos en este tema.

En este ejemplo, el punto de conexión es una función de Lambda. Se envía un token de confirmación a esta función de Lambda. Compruebe la suscripción con este token de confirmación en un plazo de tres días desde la recepció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' ]); $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()); }

Suscripción de un mensaje SMS a un tema

Para enviar mensajes SMS a varios números de teléfono al mismo tiempo, suscriba cada número a un tema.

Para iniciar una suscripción a un número de teléfono, utilice la operación Suscribe.

Puede utilizar el método de suscripción para suscribirse a varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores utilizados para los parámetros pasados. Esto se muestra en otros ejemplos en este tema.

En este ejemplo, el punto de enlace es un número de teléfono en formato E.164, un estándar utilizado para las telecomunicaciones internacionales.

Se envía un token de confirmación a este número de teléfono. Compruebe la suscripción con este token de confirmación en un plazo de tres días desde la recepción.

Para una conocer una manera alternativa de enviar mensajes SMS con Amazon SNS, consulte Envío de mensajes SMS en Amazon SNS con la versión 3 de AWS SDK for PHP.

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

Confirmación de la suscripción a un tema

Para crear una suscripción real, el propietario del punto de enlace debe reconocer la intención de recibir mensajes del tema utilizando un token enviado cuando se establece inicialmente una suscripción, tal y como se ha descrito anteriormente. Los tokens de confirmación son válidos durante tres días. Después de tres días, puede volver a enviar un token mediante la creación de una nueva suscripción.

Para confirmar una suscripción, utilice la ConfirmSubscriptionoperació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' ]); $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()); }

Lista de suscripciones a un tema

Para enumerar hasta 100 suscripciones existentes en una AWS región determinada, utilice la ListSubscriptionsoperació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' ]); try { $result = $SnSclient->listSubscriptions(); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

Cancelación de la suscripción a un tema

Para eliminar un punto de enlace suscrito a un tema, utilice la operación Unsubscribe.

Si la suscripción requiere autenticación para su eliminación, solo el propietario de la suscripción o el propietario del tema pueden cancelar la suscripción y se requiere una firma de AWS. Si la llamada de cancelación de suscripción no requiere autenticación y el solicitante no es el propietario de la suscripción, se envía un último mensaje de cancelación al punto de enlace.

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

Publicación de mensajes en un tema de Amazon SNS

Para entregar un mensaje a cada punto de conexión que está suscrito a un tema de Amazon SNS, utilice la operación Publish.

Cree un objeto que contenga los parámetros para la publicación de un mensaje, incluido el texto del mensaje y el nombre de recurso de Amazon (ARN) del tema de Amazon SNS.

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