2014-02-18 3 views
1

자동 검사를 사용하지 않고 알람을 사용하여 Amazon EC2 인스턴스를 종료하는 데 boto를 사용하는 방법을 보여주는 간단한 예제를 찾을 수 없었습니다. 10 분 동안 1 % 미만의 CPU 사용률을 가진 특정 인스턴스를 종료하려고합니다. 여기 boto를 사용하여 EC2 인스턴스를 종료하도록 알람을 설정하는 방법은 무엇입니까?

내가 지금까지 시도한 것입니다 :

dimensions={'InstanceId':[inst.id]}, alarm_actions=['arn:aws:automate:us-east-1:ec2:terminate']) TypeError: init() got an unexpected keyword argument 'alarm_actions'

나는 그것이 내가 부족 간단하게 뭔가 확신 :

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) 

불행하게도 그것은 나에게 오류를 제공합니다.

또한 CloudFormation을 사용하지 않으므로 자동 크기 조정 기능을 사용할 수 없습니다. 그 이유는 알람이 특정 인스턴스에 대해서만 전체 그룹에서 메트릭을 사용하고 특정 인스턴스 (해당 그룹의 인스턴스가 아닌) 만 종료하도록하기 때문입니다.

미리 도움 주셔서 감사합니다.

답변

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) 
또한 여기에 BOTO 문서에서 볼 수

:`cw.put_metric_alarm (경보) :

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

+0

는 지금은 오류를 받고 있어요 파일 "/usr/lib/python2.6/site-packages/boto-2.0-py2.6.egg/boto/ec2/cloudwatch/__init__.py"545 줄, put_metric_alarm 'Dimensions.member. % s . % s ') build_list_params의 "/usr/lib/python2.6/site-packages/boto-2.0-py2.6.egg/boto/ec2/cloudwatch/__init__.py"파일 237 행 params [label % i] = item TypeError : 형식 문자열에 대한 인수가 충분하지 않습니다. ' – Chewy734

+0

최신 버전이 아닌 boto 2.0이 사용 된 것으로 나타났습니다. 2.25.0으로 업데이트하면 원래 가지고 있던 방식대로 잘 작동합니다. 그래도 고마워! – Chewy734

+0

그래서, 내 대답도 작동합니까? – Rico

관련 문제