我是无服务器框架和aws的新手,我需要在python上创建一个lambda函数,只要ec2关闭就会发送电子邮件,但我真的不知道如何使用无服务器。所以,如果任何人可以帮助我做到这一点,或者至少给我一些开始的轨道。
答案 0 :(得分:3)
您可以使用CloudWatch进行此操作。
您可以创建云观察规则
然后使用SNS目标发送电子邮件。
答案 1 :(得分:2)
您想要的是 CloudWatch活动。
简而言之,CloudWatch事件能够触发Lambda函数并将其传递给它:
{
"version": "0",
"id": "123-456-abc",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "1234567",
"time": "2015-11-11T21:36:16Z",
"region": "us-east-1",
"resources": [
"arn:aws:ec2:us-east-1:12312312312:instance/i-abcd4444"
],
"detail": {
"instance-id": "i-abcd4444",
"state": "shutting-down"
}
从那里,您可以在Lambda上运行的Python代码中解析此信息。要获取关闭实例的实例ID,您将使用以下内容:
instance_id = event["detail"]["instance-id"]
然后,您可以在官方boto3库的帮助下使用Amazon SES(简单电子邮件服务)API并发送电子邮件。请参阅:http://boto3.readthedocs.io/en/latest/reference/services/ses.html#SES.Client.send_email
当然,您还需要具有必要权限的正确IAM角色才能使用附加到Lambda函数的SES。您可以在AWS IAM Roles页面上轻松创建一个新的。
对于初学者来说,起初看起来似乎势不可挡:
答案 2 :(得分:2)
使用无服务器,你可以为你的函数定义事件触发器......
functions:
shutdownEmailer:
handler: shutdownEmailer.handler
events:
- cloudwatchEvent:
event:
source:
- "aws.ec2"
detail-type:
- "EC2 Instance State-change Notification"
detail:
state:
- shutting down
enabled: true
然后,您可以预期每次事件发生时都会调用您的lambda。