Amazon SNS使用PHP推送主题

Dar*_*Dar 5 php amazon-web-services amazon-sns

我正在尝试了解AWS的amazon php sdk,但我真的无法使用它.我找到了一些基本类来创建,显示和推送主题,但我也没有工作.我只想找到一种方法(最简单的方法)从我的网站推送一个主题.

Ste*_*pel 19

首先,为了熟悉亚马逊简单通知服务(SNS),我建议通过AWS管理控制台手动执行所有必需步骤,如" 入门指南"中所述,即创建主题,订阅此主题发布消息给它.

之后,它应该是相当直接的,以便于运行AWS SDK for PHP运行的文档中提供的示例片段,请参阅例如AmazonSNS类中的方法publish():

$sns = new AmazonSNS();

// Get topic attributes
$response = $sns->publish(
    'arn:aws:sns:us-east-1:9876543210:example-topic',
    'This is my very first message to the world!',
    array(
        'Subject' => 'Hello world!'
    )
);

// Success?
var_dump($response->isOK());
Run Code Online (Sandbox Code Playgroud)

有关更完整的示例,您可能需要查看使用SNS发送消息时提供的示例[...].

如果这些都不成功,那么您必须提供有关您遇到的特定问题的更多详细信息,这已经是tster要求的.

祝好运!


h8p*_*hak 5

正如@SteffenOpel 告诉您的那样,您应该尝试一次通过 AWS 管理控制台手动执行所有必需的步骤。

然后你可以使用AWS SDK的PHP(V3)as below创建SNS客户机(或任何INFACT服务的客户,肯定有一些变化),然后创建一个SNS主题

<?php
    //assuming that use have downloaded the zip file for php sdk
    require 'C:/wamp/www/aws sdk/aws-autoloader.php'; //Change the path according to you
    use Aws\Sns\SnsClient;



    try{
            /*-------------METHOD 1----------------*/
            // Create a new Amazon SNS client using AWS v3
            //$sns = new Aws\Sns\SnsClient([
            $sns = new SnsClient([

                'region' => 'us-west-2', //Change according to you
                'version' => '2010-03-31', //Change according to you
                'credentials' => [
                    'key'    => '<Your root AWS Key',
                    'secret' => '<Your root AWS Secret>',
                ],
                'scheme' => 'http', //disables SSL certification, there was an error on enabling it 

            ]);

            $result = $sns -> createTopic([
            'Name' => '<Your Topic>',
            ]);


        /*-------------METHOD 2----------------*/
        /*
        // Create a new Amazon SNS client using AWS v2
        $sns = SnsClient::factory(array(

            'region' => 'us-west-2',
            'version' => '2010-03-31',
            'credentials' => [
                'key'    => '<Your root AWS Key',
                'secret' => '<Your root AWS Secret>',
            ],
            'scheme' => 'http',
        ));


        $result = $sns -> createTopic([
            'Name' => '<Your Topic>',
            ]);

        */



        /*-------------METHOD 3----------------*/
        /*
        // Create a new Amazon SNS client using AWS SDK class
        // Use the us-west-2 region and latest version of each client.
        $sharedConfig = [
            'region'  => 'us-west-2',
            'version' => '2010-03-31',

            'credentials' => [
                'key'    => '<Your root AWS Key',
                'secret' => '<Your root AWS Secret>',
            ],
            //'ssl.certificate_authority' => '/path/to/updated/cacert.pem',
            'scheme' => 'http',
        ];

        // Create an SDK class used to share configuration across clients.
        $sdk = new Aws\Sdk($sharedConfig);

        $sns =  $sdk -> createSns();

        $result = $sns -> createTopic([
            'Name' => '<Your Topic>',
            ]);
        */


        if ($result)
            echo "Yes";
        else
            echo "No";
    }

    catch(Exception $e){

        echo 'Caught Exception: ', $e->getMessage(), "\n";

    }


?>
Run Code Online (Sandbox Code Playgroud)

注意:此代码说明了以三种不同的方法为 SNS 创建客户端。 您可以根据需要取消注释并使用一个。如果您正在创建单个客户端,方法 1(版本 3)是最好的,否则使用方法 3。方法 2 很快就会贬值(作为它的版本 2)


Dar*_*Dar 2

我通过使用此类-> Amazon-SNS-client-for-PHP成功做到了这一点

非常好,易于使用,工作效果非常好。

  • 当然,无论什么对你最有效 - 我只是想再次向后来的读者强调,你使用的代码是 2 年前的(即显然没有维护),并且特别仅限于 SNS,而官方 [AWS SDK for PHP] (http://aws.amazon.com/sdkforphp/) 涵盖了大多数可用的 AWS 服务,具有一致的类设计,并定期更新新功能、安全性和性能修复等;它原则上工作得很好,所以我强烈建议任何人在求助于各自有限的解决方案之前先看看它。 (6认同)
  • 谢谢,我知道这个代码是有限的,但我只想使用 SNS 而不是使用所有库。除了这个 AWS SDK 手册之外,php 的使用非常周,而且它真的很难理解。但你的回答也很好 (2认同)
  • 我同意 @SteffenOpel 关于“使用官方和支持的代码”的建议,但我认识到该库缺乏可用的文档。 (2认同)