Wie übergebe ich Parameter von einem geplanten Auslöser in EventBridge an eine AWS-Batch-Aufgabe?

Letzte Aktualisierung: 20.01.2022

Ich möchte Parameter von einem geplanten Auslöser in Amazon EventBridge an eine AWS-Batch-Aufgabe übergeben.

Kurzbeschreibung

In AWS Batch sind Ihre Parameter Platzhalter für die Variablen, die Sie im Befehlsabschnitt Ihrer AWS-Batch-Aufgabendefinition definieren. Mit diesen Platzhaltern können Sie:

  • Verwenden Sie dieselbe Aufgabendefinition für mehrere Aufgaben, die dasselbe Format verwenden.
  • Ändern Sie programmgesteuert die Werte im Befehl zur Übermittlungszeit.

Es empfiehlt sich, Ihren Parameter als Schlüssel-Wert-Paar zu definieren. Beispiel:

"Parameters" : {"test" : "abc"}

Wenn Sie eine Aufgabendefinition registrieren oder eine Aufgabe weiterleiten, verwenden Sie Platzhalter für die Parametersetzung im Befehlsfeld der Containereigenschaften der Aufgaben. Beispiel:

"Command" : [ "echo” "Ref::test" ]

Wenn Sie die vorherige Aufgabe senden, wird das Argument Ref::test im Befehl des Containers durch den Standardwert (abc) ersetzt.

Sie können einen anderen Parameterwert für denselben Parameterschlüssel definieren, wenn Sie einen Job weiterleiten. Beispiel:

"Parameters" : {"test" : "hello"}

Wenn Sie die vorherige Aufgabe senden, wird das Argument Ref::test im Befehl des Containers durch den benutzerdefinierten Wert (hallo) ersetzt, den Sie bei der Aufgabenübermittlung definiert haben.

Auflösung

Richten Sie Ihre AWS-Batch-Umgebung ein

1.    Erstellen einer Rechenumgebung.

2.    Erstellen Sie eine Aufgaben-Warteschlange, und ordnen Sie dann Ihre Aufgaben-Warteschlange der Rechenumgebung zu, die Sie in Schritt 1 erstellt haben.

3.    Erstellen Sie eine Aufgabendefinition mit einem Bild (zum Beispiel: nginx).

Erstellen Sie eine EventsBridge-Regel

1.    Öffnen Sie die EventBridge-Konsole.

2.    Wählen Sie Regel erstellen aus.

3.    Geben Sie einen Namen für Ihre Regel ein. Optional können Sie eine Beschreibung eingeben.

4.    Wählen Sie unter Muster definieren die Option Ereignismuster oder Zeitplan basierend auf Ihrem Anwendungsfall aus.

5.    Wählen Sie unter Ereignisbus auswählen die Standardoption des AWS-Standardereignisbusses aus.

6.    Wählen Sie in Ziele auswählen in der Dropdown-Liste Ziel die Option Batch-Aufgaben-Warteschlange aus.

7.    Geben Sie für Aufgaben-Warteschlange den ARN der Aufgaben-Warteschlange ein, die Sie zuvor erstellt haben.

8.    Geben Sie für Aufgabendefinition den Namen der Aufgabendefinition ein, die Sie zuvor erstellt haben.

9.    Geben Sie unter Aufgabenname einen Namen für Ihre Aufgabe ein.

10.    Erweitern Sie den Abschnitt Eingabe konfigurieren und wählen Sie Konstante (JSON-Text) aus.

11.    Geben Sie in das angezeigte Textfeld Folgendes ein:

{"Parameters": {"name":"test"}, "ContainerOverrides": { "Command": ["echo","Ref::name"] } }

Die Regel sendet eine AWS-Batch-Aufgabe, wenn EventBridge die Regel aufruft. Wenn die Aufgabe erfolgreich ist, drucken Ihre CloudWatch-Protokolle an den folgenden Stellen „Test“:

Log Group: /aws/batch/job
Log Stream: yourJobDefinitionName/default/your-ecs-task-ID

Wichtig: Sie müssen Camel Case für JSON-Text in Ihren EventBridge-Regeln verwenden.

12.    Wählen Sie Erstellen aus.