我一直无法找到一个简单的示例,该示例向我展示了如何使用 boto 通过警报终止 Amazon EC2 实例(不使用 AutoScaling)。我想终止 CPU 使用率低于 1% 的特定实例 10 分钟。
这是我迄今为止尝试过的:
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:automate:us-east-1:ec2:terminate']) TypeError: init () got an unexpected keyword argument 'alarm_actions'
我敢肯定这是我想念的简单的东西。
另外,我没有使用 CloudFormation,因此无法使用 AutoScaling 功能。这是因为我不希望警报在整个组中使用指标,而仅针对特定实例,并且仅终止该特定实例(而不是该组中的任何实例)。
在此先感谢您的帮助!