Verwalten von Abonnements in Amazon SNS mit AWS SDK for PHP Version 3 - AWS SDK for PHP

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwalten von Abonnements in Amazon SNS mit AWS SDK for PHP Version 3

Verwenden Sie Amazon Simple Notification Service (Amazon SNS)-Themen, um Benachrichtigungen an Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, E-Mail-Adressen, AWS Server Migration Service (AWS SMS) oder zu sendenAWS Lambda.

Abonnements werden einem Thema angefügt, das das Senden von Nachrichten an Abonnenten verwaltet. Weitere Informationen zum Erstellen von Themen finden Sie unter Verwalten von Themen in Amazon SNS mit AWS SDK for PHP Version 3.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:

Weitere Informationen zur Verwendung von Amazon SNS finden Sie unter Verwenden von Amazon SNS für System-zu-System-Messaging.

Der gesamte Beispielcode für die AWS SDK for PHP ist hier auf GitHubverfügbar.

Anmeldeinformationen

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen, wie unter beschriebenAnmeldeinformationen. Importieren Sie dann die AWS SDK for PHP, wie unter beschriebenGrundlegende Verwendung.

Abonnieren einer E-Mail-Adresse für ein Thema

Um ein Abonnement für eine E-Mail-Adresse abzuschließen, verwenden Sie die Operation Subscribe.

Sie können die Abonnementmethode verwenden, um mehrere verschiedene Endpunkte für ein Amazon SNS-Thema zu abonnieren, abhängig von den Werten, die für übergebene Parameter verwendet werden. Dies wird in anderen Beispielen in diesem Thema veranschaulicht.

In diesem Beispiel handelt es sich bei dem Endpunkt um eine E-Mail-Adresse. Ein Bestätigungs-Token wird an diese E-Mail-Adresse gesendet. Verifizieren Sie das Abonnement mit diesem Bestätigungs-Token innerhalb von drei Tagen nach Erhalt.

Importe

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

Beispiel-Code

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

Abonnieren eines Themas für einen Anwendungsendpunkt

Um ein Abonnement für eine Web-App abzuschließen, verwenden Sie die Operation Subscribe.

Sie können die Abonnementmethode verwenden, um mehrere verschiedene Endpunkte für ein Amazon SNS-Thema zu abonnieren, abhängig von den Werten, die für übergebene Parameter verwendet werden. Dies wird in anderen Beispielen in diesem Thema veranschaulicht.

In diesem Beispiel ist der Endpunkt eine URL. Ein Bestätigungs-Token wird an diese Webadresse gesendet. Verifizieren Sie das Abonnement mit diesem Bestätigungs-Token innerhalb von drei Tagen nach Erhalt.

Importe

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

Beispiel-Code

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

Abonnieren eines Themas mit einer Lambda-Funktion

Um ein Abonnement für eine Lambda-Funktion zu initiieren, verwenden Sie den Vorgang Abonnieren.

Sie können die Abonnementmethode verwenden, um mehrere verschiedene Endpunkte für ein Amazon SNS-Thema zu abonnieren, abhängig von den Werten, die für übergebene Parameter verwendet werden. Dies wird in anderen Beispielen in diesem Thema veranschaulicht.

In diesem Beispiel ist der Endpunkt eine Lambda-Funktion. Ein Bestätigungstoken wird an diese Lambda-Funktion gesendet. Verifizieren Sie das Abonnement mit diesem Bestätigungs-Token innerhalb von drei Tagen nach Erhalt.

Importe

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

Beispiel-Code

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

Abonnieren einer Text-SMS für ein Thema

Um SMS-Nachrichten an mehrere Telefonnummern gleichzeitig zu senden, abonnieren Sie ein Thema mit jeder einzelnen Telefonnummer.

Um ein Abonnement für eine Telefonnummer abzuschließen, verwenden Sie die Operation Subscribe.

Sie können die Abonnementmethode verwenden, um mehrere verschiedene Endpunkte für ein Amazon SNS-Thema zu abonnieren, abhängig von den Werten, die für übergebene Parameter verwendet werden. Dies wird in anderen Beispielen in diesem Thema veranschaulicht.

In diesem Beispiel ist der Endpunkt eine Telefonnummer im E.164-Format, einem Standard für die internationale Schreibweise für Telefonnummern.

Ein Bestätigungs-Token wird an diese Telefonnummer gesendet. Verifizieren Sie das Abonnement mit diesem Bestätigungs-Token innerhalb von drei Tagen nach Erhalt.

Eine alternative Möglichkeit, SMS-Nachrichten mit Amazon SNS zu senden, finden Sie unter Senden von SMS-Nachrichten in Amazon SNS mit AWS SDK for PHP Version 3.

Importe

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

Beispiel-Code

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

Bestätigen des Abonnements für ein Thema

Um ein Abonnement letztendlich zu erstellen, muss der Eigentümer des Endpunkts die Absicht, Nachrichten von dem Thema zu empfangen, mithilfe eines Tokens bestätigen, das beim anfänglichen Abschluss des Abonnements gesendet wurde, wie zuvor beschrieben. Bestätigungs-Token sind drei Tage gültig. Nach drei Tagen können Sie ein Token erneut senden, indem Sie ein neues Abonnement abschließen.

Um ein Abonnement zu bestätigen, verwenden Sie die -ConfirmSubscriptionOperation.

Importe

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

Beispiel-Code

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

Auflisten von Abonnements für ein Thema

Um bis zu 100 bestehende Abonnements in einer bestimmten AWS Region aufzulisten, verwenden Sie die -ListSubscriptionsOperation.

Importe

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

Beispiel-Code

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

Abbestellen eines Themas

Verwenden Sie zum Entfernen eines Endpunkts, für den ein Thema abonniert wurde, die Operation Unsubscribe.

Wenn das Abonnement eine Authentifizierung zum Löschen erfordert, kann sich nur der Eigentümer des Abonnements oder der Eigentümer des Themas abmelden, und es ist eine AWS Signatur erforderlich. Wenn der Kündigungsaufruf keine Authentifizierung erfordert und der Anforderer nicht der Eigentümer des Abonnements ist, wird eine Nachricht über die endgültige Kündigung des Abonnements an den Endpunkt gesendet.

Importe

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

Beispiel-Code

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

Veröffentlichen einer Nachricht in einem Amazon SNS-Thema

Um jedem Endpunkt, der ein Amazon SNS-Thema abonniert hat, eine Nachricht zuzustellen, verwenden Sie die Operation Veröffentlichen.

Erstellen Sie ein Objekt, das die Parameter für die Veröffentlichung einer Nachricht enthält, einschließlich des Nachrichtentexts und des Amazon-Ressourcennamens (ARN) des Amazon SNS-Themas.

Importe

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

Beispiel-Code

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