Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Richiama una funzione Lambda da un allarme
CloudWatch alarms garantisce un'invocazione asincrona della funzione Lambda per un determinato cambio di stato, tranne nei seguenti casi:
-
Quando la funzione non esiste.
-
When non CloudWatch è autorizzato a richiamare la funzione Lambda.
Se non CloudWatch riesce a raggiungere il servizio Lambda o il messaggio viene rifiutato per un altro motivo, CloudWatch riprova finché la chiamata non ha esito positivo. Lambda mette in coda il messaggio e gestisce i tentativi di esecuzione. Per ulteriori informazioni su questo modello di esecuzione, incluse informazioni su come Lambda gestisce gli errori, consulta Asynchronous invocation nella Developer Guide. AWS Lambda
È possibile richiamare una funzione Lambda nello stesso account o in AWS altri account.
Quando specifichi un allarme per richiamare una funzione Lambda come operazione di allarme, puoi scegliere di specificare il nome della funzione, l'alias della funzione o una versione specifica di una funzione.
Quando si specifica una funzione Lambda come azione di allarme, è necessario creare una politica delle risorse per la funzione per consentire al responsabile del CloudWatch servizio di richiamare la funzione.
Un modo per farlo è utilizzare AWS CLI, come nell'esempio seguente:
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
In alternativa, puoi creare una policy simile a uno degli esempi riportati di seguito e assegnarla alla funzione.
L'esempio seguente specifica l'account in cui si trova l'allarme, in modo che solo gli allarmi in quell'account (111122223333) possano richiamare la funzione.
L'esempio seguente ha un ambito più limitato e consente solo all'allarme specificato nell'account specificato di richiamare la funzione.
Non è consigliabile creare una policy che non specifichi un account di origine, poiché tali policy sono vulnerabili a problemi di "confused deputy".
Aggiungi metriche Lambda alle indagini CloudWatch
Puoi aggiungere metriche Lambda alle indagini attive. CloudWatch Quando si analizza un problema, le metriche Lambda possono fornire informazioni preziose sulle prestazioni e sul comportamento delle funzioni. Ad esempio, se stai esaminando un problema di prestazioni delle applicazioni, le metriche Lambda come la durata, i tassi di errore o le accelerazioni potrebbero aiutarti a identificare la causa principale.
Per aggiungere metriche Lambda alle indagini: CloudWatch
Apri la console all' AWS Lambda indirizzo. https://console.aws.amazon.com/lambda/
-
Nella sezione Monitor, trova la metrica.
-
Apri il menu contestuale della metrica, scegli Indagine, Aggiungi all'indagine. Quindi, nel riquadro Indaga, seleziona il nome dell'indagine.
Oggetto evento inviato da CloudWatch Lambda
Quando configuri una funzione Lambda come azione di allarme, CloudWatch fornisce un payload JSON alla funzione Lambda quando richiama la funzione. Questo payload JSON funge da oggetto evento per la funzione. Puoi estrarre dati da questo oggetto JSON e utilizzarli nella tua funzione. Di seguito è riportato un esempio di oggetto evento da un allarme del parametro.
{ '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 } ] } } }
Di seguito è riportato un esempio di oggetto evento da un allarme composito.
{ '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 } } }