Amazon SNS使用PHP推送主题
我试图理解AmazonPHPSDKforAWS,但我真的不能使用它。 我找到一些基本类来创建、显示和推送主题,但我也不工作。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
我只是想找到一种方法(最简单的方法)从我的网站上推送一个主题 首先,为了熟悉,我建议通过手动执行所有必要步骤一次,如中所述,即和 之后,它应该是相当直接的,以方便运行文档中提供的示例片段,例如,参见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关于“使用官方和支持的代码”的建议,但我承认图书馆缺乏可用的文档。值得注意的是:如果你包括主题,那么任何短信都不会显示实际的信息。