Amazon SNS使用PHP推送主题

Amazon SNS使用PHP推送主题,php,amazon-web-services,amazon-sns,Php,Amazon Web Services,Amazon Sns,我试图理解AmazonPHPSDKforAWS,但我真的不能使用它。 我找到一些基本类来创建、显示和推送主题,但我也不工作。 我只是想找到一种方法(最简单的方法)从我的网站上推送一个主题 首先,为了熟悉,我建议通过手动执行所有必要步骤一次,如中所述,即和 之后,它应该是相当直接的,以方便运行文档中提供的示例片段,例如,参见AmazonSN类中的方法: $sns = new AmazonSNS(); // Get topic attributes $response = $sns->pub

我试图理解AmazonPHPSDKforAWS,但我真的不能使用它。 我找到一些基本类来创建、显示和推送主题,但我也不工作。
我只是想找到一种方法(最简单的方法)从我的网站上推送一个主题

首先,为了熟悉,我建议通过手动执行所有必要步骤一次,如中所述,即和

之后,它应该是相当直接的,以方便运行文档中提供的示例片段,例如,参见AmazonSN类中的方法:

$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());
有关更完整的示例,您可能希望查看中提供的示例

如果这些都不起作用,您将不得不提供更多关于您所遇到的具体问题的详细信息,正如我们已经要求的那样


祝你好运

我通过使用这些类成功地做到了->


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

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

然后,您可以使用下面的(v3)
创建SNS客户端(或影响任何服务的客户端,当然需要做一些更改),然后创建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";

    }


?>

根据AWS官方文档,我们必须创建一个SnsClient并调用它的发布方法。您可以从AWS控制台获取主题的ARN

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

没有您尝试过的错误消息或代码?嗨,您成功了吗?我在寻找同样的东西。如果你不介意的话,你能帮助我吗?当然,任何对你最有用的东西-我只想再次强调给以后的读者,你正在使用的代码是2年前的(即显然没有维护),特别是仅限于SNS,鉴于官方采用一致的类设计覆盖大多数可用的AWS服务,并定期更新新功能、安全和性能修复等;它在原则上工作得很好,所以我强烈建议任何人在使用各自有限的解决方案之前先看一看。谢谢,我知道这段代码是有限的,但我只想使用SNS,而不是使用所有的库。除了这本AWS SDK手册之外,php每周都在使用,这真的很难理解。但是你的回答也很好我同意@SteffenOpel关于“使用官方和支持的代码”的建议,但我承认图书馆缺乏可用的文档。值得注意的是:如果你包括主题,那么任何短信都不会显示实际的信息。