2016-04-19 2 views
2

In meiner Anwendung muss ich Nachrichten an den gegebenen Themennamen senden. Das Thema wurde bereits von anderen Personen erstellt und in einer Konfigurationsdatei geben sie nur das Thema Name an. Meine Arbeit ist es, die Nachrichten in dem gegebenen Thema Name zu schieben. Gibt es eine Möglichkeit, Thema ARN nach Thema NAME in Java zu bekommen?AWS SNS - Wie bekomme ich das Thema arn nach dem Namen des Themas?

Antwort

2

Ich habe dies auf eine von zwei Arten getan. Der ARN ist immer das gleiche Muster. Sie können also einfach "arn: aws: sns :::" abonnieren, wobei:

Region von Regions.getCurrentRegion() ist. Seien Sie vorsichtig damit, da es ein wenig teuer für einen Anruf ist, und Sie müssen damit umgehen, dass Sie nicht in einer EC2/Elastic Beanstalk-Instanz sind.

Konto stammt von AmazonIdentityManagementClient.getUser(). GetUser(). GetArn(). Sie müssen die Kontonummer von diesem analysieren. Die gleiche Warnung, dass Sie nicht in einer EC2-Umgebung sind.

Name ist, was Sie haben.

Ein einfacher Weg ist Schleife durch die Themen und suchen Sie nach dem gewünschten Namen in der ARN. Sie verwenden dazu die Methode listTopics von AmazonSNSClient. Denken Sie daran, dass diese Methode nur die ersten 100 Themen zurückgibt - Sie sollten die gesamte Themenliste korrekt durchlaufen.

0

Was Sie tun können, ist eine Tabelle erstellen, die Thema und seine topicArn enthält.

Das Thema arn kann von der Konsole abgerufen werden oder die API beim Erstellen eines Themas verwenden.

Auf diese Weise keine Schleife oder versuchen, ein Muster zu entsprechen.

3

Wie in diesem answer mit createTopic (topicName) angegeben ist direkter Ansatz. Falls das Thema zuvor erstellt wurde, wird nur das Thema ARN zurückgegeben.

Verwandte Themen