如何在代码中创建AWS SNS主题(iOS Mobile Hub SDK)

大卫·乌

我想在代码中动态创建Amazon SNS主题。我正在使用适用于iOS的AWS Mobile Hub sdk。

当我尝试创建主题时

…
AWSSNSCreateTopicInput* input = [AWSSNSCreateTopicInput new];
NSString* name = @"topic_name";
[input setName:name];

[[[[AWSSNS defaultSNS] createTopic:input] continueWithSuccessBlock:^id _Nullable(AWSTask<AWSSNSCreateTopicResponse *> * _Nonnull task)
…

我从AWS收到一个错误:

<Message>User: (role/credentials) is not authorized to perform: SNS:CreateTopic on resource: (topic)</Message>

(角色/凭证)代表IAM角色及其Cognito凭证。(topic)是我通过提供主题名称请求的主题的ARN

AWS Mobile Hub为我的Mobile Hub角色创建了以下推送策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:CreatePlatformEndpoint",
                "sns:GetEndpointAttributes",
                "sns:SetEndpointAttributes"
            ],
            "Resource": [
                "(APN role arn)"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "sns:Subscribe",
                "sns:Publish",
                "sns:Unsubscribe"
            ],
            "Resource": [
                "(dynamodb role arn)",
                "(Mobile Hub Role arn)"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "sns:ListTopics"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

我尝试添加线

"sns:CreateTopic",

到中间的权限集(恰好在“ sns:Subscribe”上方),但这不能解决错误。从错误消息并阅读AWS文档,看来我必须将策略附加到我创建的每个主题上才能使用它。以下是AWS文档中可能相关的2个片段:

The following example shows the permissions that are automatically created by AWS Config for a new topic. This policy statement allows AWS Config to publish to a specified Amazon SNS topic.

If you want to use an existing SNS topic from another account or you set up your delivery channel using the API, make sure to attach the following policy to the SNS topic.

{
  "Id": "Policy1415489375392",
  "Statement": [
    {
      "Sid": "AWSConfigSNSPolicy20150201",
      "Action": [
        "SNS:Publish"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:sns:region:account-id:myTopic",
      "Principal": {
        "Service": [
          "config.amazonaws.com"
        ]
      }
    }
  ]
}

 IAM Role Policy for Amazon SNS Topic

Use this example policy as a model for granting AWS Config permissions to access your SNS topic:

{
  "Version": "2012-10-17",
  "Statement": 
   [
     {
      "Effect":"Allow",
      "Action":"sns:Publish",
      "Resource":"yourSNStopicARN"
     }
    ]
}

这就是我使用SDK创建主题所能找到的全部信息。谁能提供或指出我一个完整的例子?

谢谢

安德鲁·C

支持移动推送的服务AWS for Amazon SNS论坛(简单通知服务)可能是获得有关此主题的帮助的更好位置。
https://forums.aws.amazon.com/forum.jspa?forumID=72

问题似乎是适当的移动应用程序用户IAM角色没有创建主题的权限。默认情况下,Mobile Hub不授予移动应用程序用户创建SNS主题的权限。您应该将sns:CreateTopic权限添加到具有sns:ListTopic的语句中,如下所示:

    {
        "Effect": "Allow",
        "Action": [
            "sns:ListTopics",
            "sns:CreateTopic",
        ],
        "Resource": [
            "*"
        ]
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

iOS上的Mobile Hub Cognito

AWS Mobile Hub 用户池

AWS Amplify/CLI vs AWS mobile hub

使用Mobile Hub测试适用于iOS的Amazon SNS,但无法使其正常工作

Ionic AWS Mobile Hub Starter 问题

AWS Mobile Hub:Web 应用程序的示例代码

如何从Amazon SNS主题退订iOS设备?

如何使用AWS Mobile Hub设置开发环境?

无法在 AWS Mobile Hub 上切换用户池

使用AWS Mobile SDK中的Quickblox Pod文件的iOS构建错误

如何在 CARTO Mobile SDK (Xamarin iOS/Android) 中将背景颜色设置为透明?

在 C Sdk 中获取设备孪生 - Azure IoT Hub

如何使用Java SDK以编程方式删除已确认的SNS订阅(而不是主题)?

使地图适合Carto mobile SDK中的对象

AWS Mobile Hub-如何在没有情节提要的情况下实施用户登录

标头的内容在IOS SDK8中的Jquery mobile中重叠

如何在iOS SDK中创建伞式框架?

如何在Swift中为iOS创建SDK?

如何将 App ID mobile (iOS) SDK 与 Kitura Web 应用程序连接?

Azure Event Hub Python SDK

如何在AWS CloudFormation中创建Amazon SQS队列并将其订阅到Amazon SNS主题?

如何使用 microsoft azure client sdk c 从 iot hub 消息中获取 EventEnqueuedUtcTime

iOS,DfP和Google Mobile SDK:频次上限失败

快速访问状态信息 - DJI Mobile SDK iOS

如何在Visual Studio 2013中使用SDK版本5.0部署Xamarin ios应用程序以使用旧主题(不是iOS 7主题)

Amazon Lex Bot 仅适用于使用 AWS Mobile Hub 制作的示例应用程序中的 Speech to Speech 演示

如何通过 SDK 检查是否为特定 AWS_ACCOUNT_ID 和区域启用了 AWS Security Hub 集成?

如何使用节点 js sdk 'azure-iothub' 从 IOT HUB 获取“connectionStateUpdatedTime”

如何在Paypal Mobile SDK中获取交易ID或其他信息