Gestione delle sottoscrizioni in Amazon SNS conAWS SDK for PHPversione 3 - AWS SDK for PHP

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione delle sottoscrizioni in Amazon SNS conAWS SDK for PHPversione 3

Utilizza gli argomenti di Amazon Simple Notification Service (Amazon SNS) per inviare notifiche a Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, indirizzi e-mail,AWS Server Migration Service(AWS SMS), oppureAWS Lambda.

Le sottoscrizioni sono collegate a un argomento che gestisce l'invio di messaggi ai sottoscrittori. Ulteriori informazioni sulla creazione di argomenti inGestione di argomenti in Amazon SNS conAWS SDK for PHPversione 3.

Gli esempi seguenti mostrano come:

Per ulteriori informazioni sull'utilizzo di Amazon SNS, consultaUtilizzo di Amazon SNS per la messaggistica da sistema a sistema.

La versione integrale del codice di esempio di AWS SDK for PHP è disponibile qui su GitHub.

Credenziali

Prima di eseguire il codice di esempio, configurare ilAWScredenziali, come descritto inImpostazione delle credenziali . Quindi importaAWS SDK for PHPcome descritto inUtilizzo di base.

Sottoscrizione di un indirizzo e-mail a un argomento

Per avviare una sottoscrizione a un indirizzo e-mail, utilizzare l'operazione Subscribe.

Puoi utilizzare il metodo di sottoscrizione per sottoscrivere diversi endpoint a un argomento di Amazon SNS, a seconda dei valori utilizzati per i parametri trasferiti. Questo è illustrato in altri esempi di questo argomento.

In questo esempio, l'endpoint è un indirizzo e-mail. Un token di conferma viene inviato a questa e-mail. Verifica la sottoscrizione con questo token di conferma entro tre giorni dalla ricezione.

Importazioni

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

Codice di esempio

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

Iscrivi un endpoint di un'applicazione a un argomento

Per avviare una sottoscrizione a un'app Web, utilizza l'operazione Subscribe.

Puoi utilizzare il metodo di sottoscrizione per sottoscrivere diversi endpoint a un argomento di Amazon SNS, a seconda dei valori utilizzati per i parametri trasferiti. Questo è illustrato in altri esempi di questo argomento.

In questo esempio, l'endpoint è un URL. Un token di conferma viene inviato a questo indirizzo Web. Verifica la sottoscrizione con questo token di conferma entro tre giorni dalla ricezione.

Importazioni

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

Codice di esempio

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

Sottoscrizione di una funzione Lambda a un argomento

Per avviare una sottoscrizione a una funzione Lambda, utilizza laSottoscrizioneoperazione.

Puoi utilizzare il metodo di sottoscrizione per sottoscrivere diversi endpoint a un argomento di Amazon SNS, a seconda dei valori utilizzati per i parametri trasferiti. Questo è illustrato in altri esempi di questo argomento.

In questo esempio, l'endpoint è una funzione Lambda. Un token di conferma viene inviato a questa funzione Lambda. Verifica la sottoscrizione con questo token di conferma entro tre giorni dalla ricezione.

Importazioni

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

Codice di esempio

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

Per effettuare la sottoscrizione di un SMS di testo a un argomento

Per inviare messaggi SMS a più numeri di telefono nello stesso momento, sottoscrivi ogni numero a un argomento.

Per avviare una sottoscrizione a un numero di telefono, utilizza l'operazione Subscribe.

Puoi utilizzare il metodo di sottoscrizione per sottoscrivere diversi endpoint a un argomento di Amazon SNS, a seconda dei valori utilizzati per i parametri trasferiti. Questo è illustrato in altri esempi di questo argomento.

In questo esempio, l'endpoint è un numero di telefono in formato E.164, uno standard per le telecomunicazioni internazionali.

Un token di conferma viene inviato a questo numero di telefono. Verifica la sottoscrizione con questo token di conferma entro tre giorni dalla ricezione.

Per un modo alternativo di inviare messaggi SMS con Amazon SNS, consultaInvio di messaggi SMS in Amazon SNS conAWS SDK for PHPversione 3.

Importazioni

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

Codice di esempio

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

Conferma della sottoscrizione a un argomento

Per creare una sottoscrizione, il proprietario dell'endpoint deve confermare l'intenzione di ricevere messaggi da un argomento utilizzando un token inviato quando una sottoscrizione viene inizialmente stabilita, come descritto in precedenza. I token di conferma sono validi per tre giorni. Dopo tre giorni, è possibile inviare nuovamente un token mediante la creazione di una nuova sottoscrizione.

Per confermare una sottoscrizione, utilizzare l'operazione ConfirmSubscription.

Importazioni

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

Codice di esempio

$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->subscribe([ 'Token' => $subscription_token, 'TopicArn' => $topic, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

Elenco sottoscrizioni a un argomento

Per elencare fino a 100 sottoscrizioni esistenti all'interno di un datoAWSPer regione, utilizza laListSubscriptionsoperazione.

Importazioni

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

Codice di esempio

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

Annullamento della sottoscrizione a un argomento

Per rimuovere un endpoint da un argomento, utilizzare l'operazione Unsubscribe.

Se la sottoscrizione richiede l'autenticazione per l'eliminazione, solo il proprietario dell'sottoscrizione o il proprietario dell'argomento può annullare la sottoscrizione e unaAWSè richiesta la firma. Se la chiamata di annullamento della registrazione non richiede l'autenticazione e il richiedente non è il proprietario della sottoscrizione, un messaggio di annullamento finale viene inviato all'endpoint.

Importazioni

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

Codice di esempio

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

Pubblicazione di un messaggio in un argomento di Amazon SNS

Per distribuire un messaggio a ciascun endpoint che ha sottoscritto un argomento di Amazon SNS, utilizza laPubblicareoperazione.

Crea un oggetto che contiene i parametri per pubblicare un messaggio, inclusi il testo del messaggio e il nome delle risorse di Amazon (ARN) dell'argomento Amazon SNS.

Importazioni

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

Codice di esempio

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