本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以使用 從 Amazon Elastic Compute Cloud AWS Lambda 處理生命週期事件,並管理 Amazon EC2 資源。Amazon EC2 就生命週期事件向 Amazon EventBridge (CloudWatch Events) 傳送事件,例如執行個體狀態變更、Amazon Elastic Block Store 磁碟區快照完成,或排定 Spot 執行個體將終止。您可以設定 EventBridge (CloudWatch Events),將這些事件轉遞至 Lambda 函數以進行處理。
EventBridge (CloudWatch Events) 會非同步地叫用您的 Lambda 函數與來自 Amazon EC2 的事件文件。
範例 執行個體生命週期事件
{
"version": "0",
"id": "b6ba298a-7732-2226-xmpl-976312c1a050",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "111122223333",
"time": "2019-10-02T17:59:30Z",
"region": "us-east-1",
"resources": [
"arn:aws:ec2:us-east-1:111122223333:instance/i-0c314xmplcd5b8173"
],
"detail": {
"instance-id": "i-0c314xmplcd5b8173",
"state": "running"
}
}
如需設定事件的詳細資訊,請參閱依排程調用 Lambda 函數。如需處理 Amazon EBS 快照通知的範例函數,請參閱適用於 Amazon EBS 的 EventBridge 排程器。
您也可以使用 AWS 開發套件,透過 Amazon EC2 API 管理執行個體和其他資源。
將許可授予 EventBridge (CloudWatch Events)
若要處理來自 Amazon EC2 的生命週期事件,EventBridge (CloudWatch Events) 需要叫用您函數的許可。此許可來自函數的資源型政策。如果您使用 EventBridge (CloudWatch Events) 主控台設定事件觸發條件,則主控台會代您更新資源型政策。否則,新增如下的聲明:
範例 Amazon EC2 生命週期通知的資源型政策聲明
{
"Sid": "ec2-events",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-east-1:12456789012:function:my-function",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:events:us-east-1:12456789012:rule/*"
}
}
}
若要新增陳述式,請使用 add-permission
AWS CLI 命令。
aws lambda add-permission --action lambda:InvokeFunction --statement-id ec2-events \ --principal events.amazonaws.com --function-name
my-function
--source-arn 'arn:aws:events:us-east-1:12456789012
:rule/*'
如果您的函數使用 AWS SDK 來管理 Amazon EC2 資源,請將 Amazon EC2 許可新增至函數的執行角色。