Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Rufen Sie eine Lambda-Funktion von einem Alarm aus auf
CloudWatch alarms garantiert einen asynchronen Aufruf der Lambda-Funktion für eine bestimmte Zustandsänderung, außer in den folgenden Fällen:
-
Wenn die Funktion nicht existiert.
-
When CloudWatch ist nicht berechtigt, die Lambda-Funktion aufzurufen.
Wenn der Lambda-Dienst nicht erreicht werden CloudWatch kann oder die Nachricht aus einem anderen Grund zurückgewiesen wird, versuchen Sie es CloudWatch erneut, bis der Aufruf erfolgreich ist. Lambda stellt die Nachricht in eine Warteschlange und verarbeitet Ausführungswiederholungen. Weitere Informationen zu diesem Ausführungsmodell, einschließlich Informationen darüber, wie Lambda mit Fehlern umgeht, finden Sie unter Asynchronous invocation im AWS Lambda Developer Guide.
Sie können eine Lambda-Funktion in demselben Konto oder in anderen AWS Konten aufrufen.
Wenn Sie einen Alarm angeben, um eine Lambda-Funktion als Alarmaktion aufzurufen, können Sie wählen, ob Sie den Funktionsnamen, den Funktionsalias oder eine bestimmte Version einer Funktion angeben möchten.
Wenn Sie eine Lambda-Funktion als Alarmaktion angeben, müssen Sie eine Ressourcenrichtlinie für die Funktion erstellen, damit der CloudWatch Dienstprinzipal die Funktion aufrufen kann.
Eine Möglichkeit, dies zu tun, ist die Verwendung von AWS CLI, wie im folgenden Beispiel:
aws lambda add-permission \ --function-name
my-function-name
\ --statement-id AlarmAction \ --action 'lambda:InvokeFunction' \ --principal lambda.alarms.cloudwatch.amazonaws.com \ --source-account111122223333
\ --source-arn arn:aws:cloudwatch:us-east-1
:111122223333
:alarm:alarm-name
Alternativ können Sie eine Richtlinie erstellen, die einem der folgenden Beispiele ähnelt, und sie dann der Funktion zuweisen.
Im folgenden Beispiel wird das Konto angegeben, in dem sich der Alarm befindet, sodass nur Alarme in diesem Konto (111122223333) die Funktion aufrufen können.
Das folgende Beispiel hat einen engeren Gültigkeitsbereich, sodass nur der angegebene Alarm im angegebenen Konto die Funktion aufrufen kann.
Es wird nicht empfohlen, eine Richtlinie zu erstellen, in der kein Quellkonto angegeben ist, da solche Richtlinien anfällig für „Probleme durch verwirrte Stellvertreter“ sind.
Lambda-Metriken zu CloudWatch Untersuchungen hinzufügen
Sie können Lambda-Metriken zu Ihren aktiven CloudWatch Untersuchungen hinzufügen. Bei der Untersuchung eines Problems können Lambda-Metriken wertvolle Erkenntnisse über die Leistung und das Verhalten von Funktionen liefern. Wenn Sie beispielsweise ein Problem mit der Anwendungsleistung untersuchen, können Lambda-Metriken wie Dauer, Fehlerraten oder Drosselungen dabei helfen, die Ursache zu identifizieren.
So fügen Sie Lambda-Metriken zu CloudWatch Untersuchungen hinzu:
Öffnen Sie die AWS Lambda Konsole unter. https://console.aws.amazon.com/lambda/
-
Suchen Sie im Abschnitt Monitor nach der Metrik.
-
Öffnen Sie das Kontextmenü für die Metrik und wählen Sie Untersuchen, Zur Untersuchung hinzufügen. Wählen Sie dann im Bereich Untersuchen den Namen der Untersuchung aus.
Ereignisobjekt, das von an CloudWatch Lambda gesendet wurde
Wenn Sie eine Lambda-Funktion als Alarmaktion konfigurieren, CloudWatch übermittelt sie eine JSON-Nutzlast an die Lambda-Funktion, wenn sie die Funktion aufruft. Diese JSON-Nutzlast dient als Ereignisobjekt für die Funktion. Sie können Daten aus diesem JSON-Objekt extrahieren und in Ihrer Funktion verwenden. Das folgende ist ein Beispiel eines Ereignisobjekts aus einem Metrikalarm.
{ 'source': 'aws.cloudwatch', 'alarmArn': 'arn:aws:cloudwatch:us-east-1:444455556666:alarm:lambda-demo-metric-alarm', 'accountId': '444455556666', 'time': '2023-08-04T12:36:15.490+0000', 'region': 'us-east-1', 'alarmData': { 'alarmName': 'lambda-demo-metric-alarm', 'state': { 'value': 'ALARM', 'reason': 'test', 'timestamp': '2023-08-04T12:36:15.490+0000' }, 'previousState': { 'value': 'INSUFFICIENT_DATA', 'reason': 'Insufficient Data: 5 datapoints were unknown.', 'reasonData': '{"version":"1.0","queryDate":"2023-08-04T12:31:29.591+0000","statistic":"Average","period":60,"recentDatapoints":[],"threshold":5.0,"evaluatedDatapoints":[{"timestamp":"2023-08-04T12:30:00.000+0000"},{"timestamp":"2023-08-04T12:29:00.000+0000"},{"timestamp":"2023-08-04T12:28:00.000+0000"},{"timestamp":"2023-08-04T12:27:00.000+0000"},{"timestamp":"2023-08-04T12:26:00.000+0000"}]}', 'timestamp': '2023-08-04T12:31:29.595+0000' }, 'configuration': { 'description': 'Metric Alarm to test Lambda actions', 'metrics': [ { 'id': '1234e046-06f0-a3da-9534-EXAMPLEe4c', 'metricStat': { 'metric': { 'namespace': 'AWS/Logs', 'name': 'CallCount', 'dimensions': { 'InstanceId': 'i-12345678' } }, 'period': 60, 'stat': 'Average', 'unit': 'Percent' }, 'returnData': True } ] } } }
Das folgende ist ein Beispiel eines Ereignisobjekts aus einem zusammengesetzten Alarm.
{ 'source': 'aws.cloudwatch', 'alarmArn': 'arn:aws:cloudwatch:us-east-1:111122223333:alarm:SuppressionDemo.Main', 'accountId': '111122223333', 'time': '2023-08-04T12:56:46.138+0000', 'region': 'us-east-1', 'alarmData': { 'alarmName': 'CompositeDemo.Main', 'state': { 'value': 'ALARM', 'reason': 'arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild transitioned to ALARM at Friday 04 August, 2023 12:54:46 UTC', 'reasonData': '{"triggeringAlarms":[{"arn":"arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild","state":{"value":"ALARM","timestamp":"2023-08-04T12:54:46.138+0000"}}]}', 'timestamp': '2023-08-04T12:56:46.138+0000' }, 'previousState': { 'value': 'ALARM', 'reason': 'arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild transitioned to ALARM at Friday 04 August, 2023 12:54:46 UTC', 'reasonData': '{"triggeringAlarms":[{"arn":"arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild","state":{"value":"ALARM","timestamp":"2023-08-04T12:54:46.138+0000"}}]}', 'timestamp': '2023-08-04T12:54:46.138+0000', 'actionsSuppressedBy': 'WaitPeriod', 'actionsSuppressedReason': 'Actions suppressed by WaitPeriod' }, 'configuration': { 'alarmRule': 'ALARM(CompositeDemo.FirstChild) OR ALARM(CompositeDemo.SecondChild)', 'actionsSuppressor': 'CompositeDemo.ActionsSuppressor', 'actionsSuppressorWaitPeriod': 120, 'actionsSuppressorExtensionPeriod': 180 } } }