0

ich habe:AWS SNS als Quelle für AWS Lambda

  • Cloudwatch Regeln, die Nachrichten an ein SNS Thema
  • Ein Lambda-Funktion veröffentlichen, die SNS Thema als seine Quelle hat

Wenn ein Cloudwatch Regel wird ausgelöst, sie veröffentlicht ihren Regelnamen in einem SNS-Zweig, und dann wird die Lambda-Funktion aufgerufen. Die Lambda-Funktion geht voran und löscht die CloudWatch-Regel, die die Lambda-Funktion aufgerufen hat, basierend auf dem Regelnamen, der über SNS an Lambda übergeben wurde.

Ich habe mehrere Regeln, die auf verschiedenen Zeitplänen auslösen. Das Problem ist, dass eine Regel ausgelöst wird, aber mehrere Regeln gelöscht werden. Die Lambda-Funktion sollte nur für diesen Regelnamen aufgerufen werden.

+0

Könnten Sie klären * warum * Sie dies tun? Es gibt möglicherweise einen besseren Weg, um das zu erreichen, was Sie suchen, anstatt CloudWatch-Regeln zu erstellen/löschen (was ich für Regeln für CloudWatch-Ereignisse halte). Zum Beispiel, warum feuern Sie eine Regel basierend auf einem Zeitplan und löschen Sie dann die Regel? Versuchen Sie, die Regel nur einmal auszuführen? Können Sie Ihren Lambda-Code angeben? Haben Sie die Protokolldateien überprüft, um zu bestätigen, wie oft die Lambda-Funktion ausgelöst wird? –

+0

Also hier ist was ich tue, meine Regeln haben mehrere Ziele und sie beabsichtigten, Nachrichten an sqs und sns Themen zu senden, so dass andere Anwendungen konsumieren können. Die Regeln werden in verschiedenen Intervallen wie etwa alle 1/2/3 .. Minuten oder alle 1/2/3 .. Stunden usw. geplant. In einigen Fällen empfängt die Anwendung, die die Nachricht konsumiert, die Nachricht, dass diese Regel nur einmal ausgeführt werden soll und dann gelöscht werden sollte. Die konsumierende Anwendung ruft die API auf und fügt ein anderes Ziel an dieselbe Regel an. Dieses neue Ziel löscht die Regel, wenn sie erneut ausgelöst wird. – johnny

+0

Dieses neue Ziel ist ein anderes SNS-Thema und seine Nachricht ist der Name der Regel und ein Lambda ist die Ereignisquelle für dieses SNS-Thema. Wenn die Regel ausgelöst wird, hat sie das neue Ziel und das neue Ziel ruft Lambda über SNS auf, um die Regel zu löschen. – johnny

Antwort

1

Aufgrund Ihrer Antworten klingt es so, als wäre das Löschen der Regeln nicht die optimale Lösung, nach der Sie suchen? Wäre es akzeptabel, die CloudWatch-Ereignisregel einfach zu deaktivieren? Wenn dies der Fall ist, ist die Methode im SDK ziemlich einfach [1] und würde es unnötig machen, Regeln für die gleichen Intervalle programmatisch neu zu erstellen, Sie müssten sie einfach mit demselben Namen wieder aktivieren.

[1] http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#disableRule-property

+0

Vielleicht eine Option zu versuchen, aber das Ding ist Regeln sind begrenzt, standardmäßig 50 Regeln pro Konto und ich habe es auf 3K erhöht. Ich werde sehen, ob das Aktivieren/Deaktivieren die Aufgabe erledigt. – johnny