本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從警示叫用 Lambda 函數
CloudWatch 警示保證 Lambda 函數針對指定狀態變更進行非同步調用,但下列情況除外:
-
當函數不存在時。
-
當 CloudWatch 無權叫用 Lambda 函數時。
如果 CloudWatch 無法連線 Lambda 服務,或訊息因其他原因而遭到拒絕,CloudWatch 會重試,直到呼叫成功為止。Lambda 會將訊息排入佇列,並處理執行重試。如需有關此執行模型的詳細資訊,包括 Lambda 如何處理錯誤的資訊,請參閱《 AWS Lambda 開發人員指南》中的非同步調用。
您可以在相同帳戶或其他帳戶中叫用 Lambda 函數 AWS 。
當您指定警示來調用 Lambda 函數作為警示動作時,您可以選擇指定函數名稱、函數別名或函數的特定版本。
在將 Lambda 函數指定為警示動作時,必須為函數建立資源政策,以允許 CloudWatch 服務主體調用函數。
其中一種方法是使用 AWS CLI,如下列範例所示:
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
或者,您可以建立類似下列其中一個範例的政策,然後將其指派給函數。
下列範例會指定警示所在的帳戶,因此只有該帳戶 (111122223333) 中的警示才能調用函數。
下列範例的範圍較窄,只允許指定帳戶中的指定警示調用函數。
不建議建立不指定來源帳戶的政策,因為這類政策容易出現混淆的代理問題。
將 Lambda 指標新增至 CloudWatch 調查
您可以將 Lambda 指標新增至作用中的 CloudWatch 調查。調查問題時,Lambda 指標可以提供有關函數效能和行為的寶貴洞見。例如,如果您正在調查應用程式效能問題,持續時間、錯誤率或調節等 Lambda 指標可能有助於識別根本原因。
若要將 Lambda 指標新增至 CloudWatch 調查:
在 https://https://console.aws.amazon.com/lambda/
開啟 AWS Lambda 主控台。 -
在監控區段中,尋找 指標。
-
開啟指標的內容選單,選擇調查、新增至調查。然後,在調查窗格中,選取調查的名稱。
從 CloudWatch 傳送至 Lambda 的事件物件
當您將 Lambda 函數設定為警示動作時,CloudWatch 會在調用 Lambda 函數時將 JSON 承載傳遞至該函數。此 JSON 承載用作函數的事件物件。您可以從此 JSON 物件中提取資料並在函數中使用它。以下是來自指標警示的事件物件範例。
{ '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 } ] } } }
以下是來自複合警示的事件物件範例。
{ '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 } } }