2016-05-05 34 views
0

Amazon SNSトピックをコードで動的に作成したいと考えています。私はiOS向けにAWS Mobile Hub SDKを使用しています。私は、トピックコードでAWS SNSトピックを作成する方法(iOSモバイルハブ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の資格情報を表します。

{ 
    "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": [ 
       "*" 
      ] 
     } 
    ] 
} 

私はライン

を追加してみました: (トピック)は

AWSモバイル・ハブは、私の携帯電話のハブの役割については、以下のプッシュポリシーを作成し、私はトピック名を与えることによって要求されている話題のARNです

"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を使用して、トピックの作成について見つけることができましたすべてです。誰かが完全な例を教えてくれますか?

おかげ

答えて

0

アマゾンSNS(簡易通知サービス)、携帯電話のプッシュをバックアップサービスのAWSフォーラムは、このトピックに関するヘルプを表示するには良い場所かもしれません。
https://forums.aws.amazon.com/forum.jspa?forumID=72

問題は、適切なモバイルアプリユーザーのIAMの役割にトピックを作成する権限がないことが原因と考えられます。モバイルハブは、デフォルトでモバイルアプリユーザーにSNSトピックを作成する権限を与えません。 sns:CreateTopicアクセス許可をsns:ListTopicのような文に追加する必要があります。

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

Andrew Cさん、ありがとうございます。あなたが提案した変更を加えましたが、私はまだ同じエラーが発生しています。あなたが提案したフォーラムで質問を再投稿します。 –

+0

AWSに投稿しますが、AWS開発者アカウントが新規ではなく、ログインしていますが、AWSフォーラムに新しいスレッドを投稿する権限がありません。私はまだそこに投稿の許可を得る方法を考え出していない。 –

+0

今朝の新鮮な目で私は同じ場所で違うエラーが出てきました。私はまた、sns:SetTopicAttributesをポリシーの同じセクションに追加する必要がありました。あなたの助けに感謝し、私はちょっとした結論について謝罪します。 –

関連する問題