首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS SNS :为什么我的“幽灵”订阅没有出现在主题中

AWS SNS :为什么我的“幽灵”订阅没有出现在主题中
EN

Stack Overflow用户
提问于 2019-08-20 15:15:45
回答 1查看 877关注 0票数 5

我对Amazon有一个奇怪的问题:当使用aws-php-sdk (3.112.7)创建订阅和主题时,总是有“幽灵”或“不可见的”订阅。

如您所见,此订阅存在于“订阅”选项卡中。但是,当我单击主题链接(此处为cav_56826)时,无法看到任何订阅

你们也有过类似的问题吗?怎么会发生这种事?

这里是我的简化代码:

代码语言:javascript
复制
  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
    }
EN

回答 1

Stack Overflow用户

发布于 2020-01-10 16:25:27

通过使用PHP 5.6.40和AWS 3.122.0 (发现的这里)和下面的代码,在做了一些更改之后,我可以看到预期的/正确的行为正在发生。

代码语言:javascript
复制
<?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
    } 

?>

所有订阅:

"allUsers“订阅:

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57576738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档