Holen Sie sich die Argumente in CloudWatch mit Java auf Lambda registriert.
Die Lambda-Funktion, die EC2 startet und stoppt, wurde im vorherigen Artikel erstellt. CloudWatchEvents Cron wurde so konzipiert, dass es mehrmals gestartet wird, z. B. um 8:00, 9:00, 17:00 und 18:00 Uhr. Aber vergessen, welche Instanz zu welcher Zeit gestartet wurde, Ich musste die in CloudWatch Events registrierten Argumente einzeln überprüfen. Es war ein Ärger, also habe ich eine Funktion erstellt, um die Argumente zu erhalten. (Ich wollte vermeiden, Notizen zu machen, weil ich die registrierten Argumente mit den Notizen synchronisieren musste.)
・ Eclipse-Vorbereitung ・ Registrierung ausführen (eines Tages) ・ Implementierung-Stopp / Start EC2
[Wie beim letzten Mal](https://qiita.com/t_ookubo/items/3b12bd985a65a73b4c59#%E3%81%A8%E3%82%8A%E3%81%82%E3%81%88%E3%81%9A % E3% 82% AF% E3% 83% A9% E3% 82% B9% E4% BD% 9C% E6% 88% 90)
//Erstellen Sie ein CloudWatchEvents-Objekt
AmazonCloudWatchEvents event = AmazonCloudWatchEventsClientBuilder.defaultClient();
ListRulesResult retRule = event.listRules(new ListRulesRequest());
for(Rule rule : retRule.getRules()) {
// rule.getName()、rule.getDescription()
}
Dieser Teil der Konsole Wie der Methodenname andeutet, können Sie den Namen und die Beschreibung der Regel abrufen.
// get target information from rule
ListTargetsByRuleRequest req = new ListTargetsByRuleRequest().withRule(rule.getName());
ListTargetsByRuleResult retTarget = event.listTargetsByRule(req);
List<Target> cloudWatchTargets = retTarget.getTargets();
for (Target target : cloudWatchTargets) {
// do loop each cloud watch rule's target
}
Dieser Teil der Konsole
target.getArn()
Jetzt wird jedes Ziel in der folgenden Form zurückgegeben arn:aws:lambda:region:xxxxxx:function:functionName
Also mit endWith eingrenzen
if (target.getArn().endsWith("Funktionsname, den Sie eingrenzen möchten")) {
//
}
Dieser Teil der Konsole (bei diesem Konsolenbildschirm gibt es überhaupt nur einen, es spielt also keine Rolle, ob Sie dies tun oder nicht.)
target.getInput()
Dieser Teil der Konsole
//Da die Eingabe von cloudWatch in json beschrieben ist, konvertieren Sie von json nach bean
SomethingBean cloudWatchInput = Jackson.fromJsonString(target.getInput(), SomethingBean.class);
Formatieren Sie anschließend den Namen, die Beschreibung, die Argumente usw. der CloudWatchEvents-Regel, die Sie bisher erhalten haben, in das Formular, das Sie ausgeben möchten, und geben Sie es zur Fertigstellung an die Ausgabe zurück.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-cloudwatch</artifactId>
<version>1.11.99</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-events</artifactId>
<version>1.11.719</version>
<scope>compile</scope>
</dependency>
Recommended Posts