amazon-web-services - AWS SNS:为什么我的“幽灵”订阅未显示在主题中
问题描述
我在使用 Amazon AWS SNS 时遇到了一个奇怪的问题:使用aws-php-sdk
(3.112.7) 创建订阅和主题时,总是存在“幽灵”或“不可见”订阅。
如您所见,此订阅存在于“订阅”选项卡中。但是,当我单击主题链接(此处cav_56826
)时,我看不到任何订阅。
你们有没有类似的问题?这怎么会发生?
这是我的简化代码:
try
{
$arn = "arn:aws:sns:eu-west-1:XXXXXXXXXXXXXXXXX:app/APNS_VOIP_SANDBOX/ios_cav";
$topics = array("allUsers", "cav_56826");
$topicsToSubcribe = array();
foreach ($topics as $topic)
{
$res = $this->snsClient->createTopic(['Name' => $topic]);
if ($res->get('@metadata')['statusCode'] == 200)
{
array_push($topicsToSubcribe, $res->get('TopicArn'));
}
else
{
throw new Exception("An error occured during Amazon SNS createTopic", $res->get('@metadata')['statusCode']);
}
}
$SNSEndPointData = $this->snsClient->createPlatformEndpoint([
'PlatformApplicationArn' => $arn,
'Token' => $token
]);
foreach ($topicsToSubcribe as $topic)
{
$this->snsClient->subscribe([
'Protocol' => "application",
'Endpoint' => $SNSEndPointData->get('EndpointArn'),
'TopicArn' => $topic
]);
}
}
catch (\Exception $e)
{
// Logs some errors
}
解决方案
在进行一些更改后,使用 PHP5.6.40
和 AWS SDK PHP 3.122.0
(在此处找到)和以下代码,我可以看到预期/正确的行为正在发生。
<?php
require '/usr/src/myapp/aws.phar';
$sdk = new Aws\Sdk([
'region' => 'us-east-1',
'version' => 'latest',
]);
$snsClient = $sdk->createSns();
$token = "XX:YY";
try
{
$arn = "arn:aws:sns:us-east-1:360479286475:app/GCM/test-stackoverflow";
$topics = array("allUsers", "cav_56826");
$topicsToSubcribe = array();
foreach ($topics as $topic)
{
$res = $snsClient->createTopic(['Name' => $topic]);
if ($res->get('@metadata')['statusCode'] == 200)
{
array_push($topicsToSubcribe, $res->get('TopicArn'));
}
else
{
throw new Exception("An error occured during Amazon SNS createTopic", $res->get('@metadata')['statusCode']);
}
}
$SNSEndPointData = $snsClient->createPlatformEndpoint([
'PlatformApplicationArn' => $arn,
'Token' => $token
]);
foreach ($topicsToSubcribe as $topic)
{
$snsClient->subscribe([
'Protocol' => "application",
'Endpoint' => $SNSEndPointData->get('EndpointArn'),
'TopicArn' => $topic
]);
}
}
catch (\Exception $e)
{
// Logs some errors
}
?>
希望这可以帮助。
推荐阅读
- react-native - 如何使用 papaparse 读取 csv 文件的内容?使用本机反应
- ios - 将 APN 上传到 Firebase 控制台失败 - “没有为此应用存储团队 ID”
- javascript - HTML 输入类型文件打开服务器文件
- javascript - 为什么会话正常工作并且在一些不活动之后,突然间一切都破裂了?
- javascript - 成功发送 DM 时回复
- sql - 如何用选定的单词替换句子中的单词?
- python - Pandas 对具有相同大小响应的组应用函数
- php - 如何验证多种格式的日期
- java - 为“Step”作用域 bean 编写 JUnit 测试 - 没有为作用域名称“step”注册作用域(Spring Batch 3.0.10)
- azure - 如何将 Azure 成本和使用数据发送到日志分析工作区或直接发送到 Azure 指标?