我如何设置闹钟使用博托终止EC2实例?(How do I set an alarm to termi

2019-10-19 09:01发布

我一直无法找到一个简单的例子,显示我如何使用boto以终止通过报警的Amazon EC2实例(不使用自动缩放)。 我要终止具有CPU使用率10分钟,不到1%的具体实例。

以下是我试过到目前为止:

import boto.ec2
import boto.ec2.cloudwatch
from boto.ec2.cloudwatch import MetricAlarm

conn = boto.ec2.connect_to_region("us-east-1", aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
cw = boto.ec2.cloudwatch.connect_to_region("us-east-1", aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)

reservations = conn.get_all_instances()
for r in reservations:
    for inst in r.instances:
        alarm = boto.ec2.cloudwatch.MetricAlarm(name='TestAlarm', description='This is a test alarm.', namespace='AWS/EC2', metric='CPUUtilization', statistic='Average', comparison='<=', threshold=1, period=300, evaluation_periods=2, dimensions={'InstanceId':[inst.id]}, alarm_actions=['arn:aws:automate:us-east-1:ec2:terminate'])
        cw.put_metric_alarm(alarm)

不幸的是它给了我这个错误:

尺寸= { 'INSTANCEID':[inst.id]},alarm_actions = [ 'ARN:AWS:自动化:我们-东- 1:EC2:终止'])类型错误: 的init()得到了意想不到的关键字参数'alarm_actions'

我敢肯定,这是一些简单的我失踪。

另外,我不使用CloudFormation,所以我不能使用自动缩放功能。 这是因为我不希望闹钟使用度量整个组,而只对特定的实例,只有终止特定实例(未在该组中的任何实例)。

在此先感谢您的帮助!

Answer 1:

报警的行为不是由传入的维度,而是添加到您正在使用的MetricAlarm对象的属性。 在你的代码,你需要做到以下几点:

alarm = boto.ec2.cloudwatch.MetricAlarm(name='TestAlarm', description='This is a test alarm.', namespace='AWS/EC2', metric='CPUUtilization', statistic='Average', comparison='<=', threshold=1, period=300, evaluation_periods=2, dimensions={'InstanceId':[inst.id]})
alarm.add_alarm_action('arn:aws:automate:us-east-1:ec2:terminate')
cw.put_metric_alarm(alarm)

您还可以在这里看到的博托文件中:

http://docs.pythonboto.org/en/latest/ref/cloudwatch.html#module-boto.ec2.cloudwatch.alarm



文章来源: How do I set an alarm to terminate an EC2 instance using boto?