使用AWS Lambda计算正在运行和已停止的Ec2实例



如何使用boto3和AWS Lambda函数计算特定区域中正在运行和已停止的EC2实例的数量?

下面是一些获取实例列表并计算stoppedrunning实例数量的代码:

import boto3
def lambda_handler(event, context):

ec2_resource = boto3.resource('ec2')
instances = [instance.state["Name"] for instance in ec2_resource.instances.all()]

print('Running: ', instances.count('running'))
print('Stopped: ', instances.count('stopped'))

ec2_resource.instances.all()的调用检索所有实例的列表,并且有一个state属性包含状态的Name

这将在Lambda函数的默认区域中运行。如果您希望更改区域,请像这样指定区域名称:

ec2_resource = boto3.resource('ec2', region_name='ap-southeast-2')

更新:如何通过SNS获得通知。

如果你想通过SNS收到通知,有两个选项:

  • 让Lambda功能使用publish(PhoneNumber='123')命令,
  • 直接通过Amazon SNS发送短信到您的手机
  • 让Lambda函数使用publish(TopicArn=xxx)命令向Amazon SNS主题发送消息,然后通过首选方法(例如电子邮件,短信)订阅该SNS主题。

请注意,实例启动/停止需要一分钟左右的时间,所以如果你把它和启动/停止实例的代码结合起来,在发出这些命令后计数不会立即准确。

最新更新