2016-04-07 9 views
5

AWS SNSで私のアプリケーションにプッシュ通知を送信し始めました。今日、プッシュ通知を送信するトピックを取得するには、SNSクライアント関数listTopics()を使用してすべてのトピックを読み込み、ARNにトピックの名前が表示されているかどうかを確認する必要がありますために。AWS SNS名前でトピックを取得

トピックARNを取得するのは非常に非効率的な方法ですが、この情報を取得する最も効率的な方法があるかどうかを知りたいと思います。たとえば、関数getTopicByNameなどがあります。

もしそうでなければ、私はARNが不変であるかどうか知りたいのですが、トピックARNをデータベースに保存することはできますか?

ありがとうございました。

答えて

4

名前でSNSトピックを検索する方法はわかりません。

ARNは変更できません。 SNSの話題には変わりません。特に、the documentationによるSNSトピックのARNは、次の形式になります

arn:aws:sns:region:account-id:topicname

だから、SNSのトピックのARNを変更するための唯一の方法は、その場合、あなたのルックアップで(名前を変更することであろう名前を変更することもできます)、トピックを削除して新しい地域やまったく別のアカウントで再作成します。その場合、これは本当に同じトピックではありません。

+0

を公開することができます)? – GodFather

+0

はい、変更しないでください –

7

トピックが既に存在するか、作成されるかどうか気にしない場合は、より直接的なアプローチはCreateTopicに電話するだけです。与えられた名前、CreateTopicはARNを含む既存のトピックを返します。

3

トピックがすでに利用可能な場合は、次のようにcreateTopicメソッドを使用できます。この場合、リクエスタがすでに指定された名前のトピックを所有している場合、新しいトピックを作成せずにそのトピックのARNが返されます。 AWS Java SDKでは、コードは次のようになります。

AWSCredentialsProvider provider = new ProfileCredentialsProvider(); 
    AmazonSNS sns = AmazonSNSClientBuilder.standard().withCredentials(provider).build(); 
    CreateTopicResult createRes = sns.createTopic("HelloTopic"); 

その後CreateTopicResultを使用することにより、あなたは感謝の男が、最後の疑いで、ARNのこのルールは、など任意のARN(トピック、エンドポイント、アプリケーション、のために働くトピックARNを取得し、メッセージ

sns.publish(new PublishRequest(createRes.getTopicArn(), "Hello World")); 
関連する問題