管理 Amazon SNS 中的主题Amazon适 SDK for PHP 版本 3 - Amazon适用于 PHP 的开发工具包
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理 Amazon SNS 中的主题Amazon适 SDK for PHP 版本 3

要将通知发送到 Amazon Simple Queue Service (Amazon SQS)、HTTP/HTTPS URL、电子邮件、Amazon SMS,或者Amazon Lambda,您必须首先创建主题,以管理该主题的任何订阅者的消息传输。

对于观察程序设计模式,此主题 (Topic) 类似于该主题 (Subject)。创建主题后,您可以添加在有消息发布到该主题时将自动通知的订阅者。

了解有关订阅主题的详细信息,请参阅使用 Amazon SNS 中的订阅Amazon适 SDK for PHP 版本 3

以下示例演示如何:

有关使用 Amazon SNS 的更多信息,请参阅消息传输状态的 Amazon SNS 主题属性

所有示例代码Amazon适用 SDK for PHP 开发工具包版本 3(位于 GitHub 上)

Credentials

运行示例代码之前,请配置Amazon凭证,如的凭证Amazon适 SDK for PHP 版本 3。然后导入AmazonSDK for PHP,如的基本使用模式Amazon适 SDK for PHP 版本 3

创建主题

要创建主题,请使用 CreateTopic 操作。

您的每个主题名称Amazon帐户必须唯一。

导入

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

示例代码

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

列出主题

要列出当前的最多 100 个现有主题Amazon区域,请使用ListTopicsoperation.

导入

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

示例代码

$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\Sns\SnsClient; use Aws\Exception\AwsException;

示例代码

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

获取主题属性

要检索单个现有主题的属性,请使用 GetTopicAttributes 操作。

导入

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

示例代码

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

设置主题属性

要更新单个现有主题的属性,请使用 SetTopicAttributes 操作。

您只能设置 PolicyDisplayNameDeliveryPolicy 属性。

导入

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

示例代码

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