AWS SDK for PHP バージョン 3 を使用した Amazon SNS でのトピックの管理 - AWS SDK for PHP

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SDK for PHP バージョン 3 を使用した Amazon SNS でのトピックの管理

Amazon Simple Queue Service (Amazon SQS)、HTTP/HTTPS URL、E メール、AWS SMS または AWS Lambda に通知を送信するには、まずそのトピックのサブスクライバへのメッセージ配信を管理するトピックを管理する必要があります。

オブザーバー設計パターンの観点で言うと、トピックは件名と同様です。トピックが作成されたら、メッセージがトピックに発行されたときに自動的に通知を受け取るサブスクライバを追加します。

トピックへのサブスクライブの詳細については、「AWS SDK for PHP バージョン 3 を使用した Amazon SNS でのサブスクリプションの管理」を参照してください。

以下の例では、次の方法を示しています。

  • CreateTopic を使用して通知を発行するトピックを作成する。

  • ListTopics を使用してリクエスタのトピックのリストを返す。

  • DeleteTopic を使用してトピックとそのすべてのサブスクリプションを削除する。

  • GetTopicAttributes を使用してトピックのすべてのプロパティを返す。

  • SetTopicAttributes を使用して、トピックの所有者がトピックの属性を新しい値に設定できるようにする。

Amazon SNS の使用の詳細については、「メッセージの配信ステータスの Amazon SNS トピック属性を使用するを」参照してください。

AWS SDK for PHP 用のすべてのサンプルコードは GitHub で入手できます。

認証情報

サンプルコードを実行する前に、AWS の認証情報を設定します (AWS SDK for PHP バージョン 3 AWS を使用した での認証 を参照)。AWS SDK for PHP からのインポート (AWS SDK for PHP バージョン 3 のインストール を参照)。

トピックの作成

トピックを作成するには、CreateTopic オペレーションを使用します。

AWS アカウント 内の各トピック名は一意にする必要があります。

インポート

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

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $topicname = 'myTopic'; try { $result = $SnSclient->createTopic([ 'Name' => $topicname, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

トピックをリストする

現在の AWS リージョンにおける最大 100 件の既存のトピックをリストするには、ListTopics オペレーションを使用します。

インポート

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

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); try { $result = $SnSclient->listTopics(); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

トピックの削除

既存のトピックとそのすべてのサブスクリプションを削除するには、DeleteTopic オペレーションを使用します。

サブスクライバにまだ配信されていないメッセージもすべて削除されます。

インポート

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

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic'; try { $result = $SnSclient->deleteTopic([ 'TopicArn' => $topic, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

トピック属性を取得する

1 つの既存のトピックのプロパティを取得するには、GetTopicAttributes オペレーションを使用します。

インポート

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

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic'; try { $result = $SnSclient->getTopicAttributes([ 'TopicArn' => $topic, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

トピック属性を設定する

1 つの既存のトピックのプロパティを更新するには、SetTopicAttributes オペレーションを使用します。

PolicyDisplayName、および DeliveryPolicy 属性のみ設定できます。

インポート

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

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $attribute = 'Policy | DisplayName | DeliveryPolicy'; $value = 'First Topic'; $topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic'; try { $result = $SnSclient->setTopicAttributes([ 'AttributeName' => $attribute, 'AttributeValue' => $value, 'TopicArn' => $topic, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }