2016-12-06 6 views
0

私はこの作業をしようと壁に頭を打っている。 python/botoを使用して、失敗したec2インスタンスを回復するcloutwatchアラームを作成しようとしています。 ec2:RecoverInstanceアクションを機能させるのが難しいです。トピックが正しく設定されていないと思われます。Boto/Cloudwatchインスタンスアラームを復旧する

topics = sns_conn.get_all_topics() 

topic = topics[u'ListTopicsResponse']['ListTopicsResult']['Topics'][0]['TopicArn'] 

# arn:aws:sns:us-east-1:*********:CloudWatch 

status_check_failed_alarm = boto.ec2.cloudwatch.alarm.MetricAlarm(
     connection=cw_conn, 
     name=_INSTANCE_NAME + "RECOVERY-High-Status-Check-Failed-Any", 
     metric='StatusCheckFailed', 
     namespace='AWS/EC2', 
     statistic='Average', 
     comparison='>=', 
     description='status check for %s %s' % (_INSTANCE, _INSTANCE_NAME), 
     threshold=1.0, 
     period=60, 
     evaluation_periods=5, 
     dimensions={'InstanceId': _INSTANCE}, 
     # alarm_actions = [topic], 
     ok_actions=[topic], 
     insufficient_data_actions=[topic]) 

# status_check_failed_alarm.add_alarm_action('arn:aws:sns:us-east-1:<acct#>:ec2:recover') 
# status_check_failed_alarm.add_alarm_action('arn:aws:sns:us-east-1:<acct#>:ec2:RecoverInstances') 
status_check_failed_alarm.add_alarm_action('ec2:RecoverInstances') 

cw_conn.put_metric_alarm(status_check_failed_alarm) 

いずれかの提案が高く評価されます。

ありがとうございます。

--MIke

+1

ここで、 'topic'は定義されています。すべてのトピック(例: 'sns = connect_to_region(...); topics = sns.get_all_topics() 'またはAWS管理コンソールでSNS ARNを検索するだけです。 'arn:aws:sns:'のようになります。 – AChampion

+0

こんにちはAChampion - トピック検索部分を表示するようにコードを更新しました。 –

答えて

0

私は、問題は、これらのアラームアクションがarn<acct>を持っていないと思います。

有効な値:ARN:AWS:自動:地域:EC2:cli referenceは、有効なarnの文書を停止し| arn:aws:自動化:地域:ec2:終了| ARN:AWS:自動:地域:EC2:

を回復し、私は例えば、AWSからメトリックを引き出して、そのから、むしろ地面からそれを構築しようとするよりも、アラームを作成することが容易であると思うだろう(未テストコード):

topics = sns_conn.get_all_topics() 
topic = topics[u'ListTopicsResponse']['ListTopicsResult']['Topics'][0]['TopicArn'] 

metric = cloudwatch_conn.list_metrics(dimensions={'InstanceId': _INSTANCE}, 
             metric_name="StatusCheckFailed")[0] 
alarm = metric.create_alarm(name=_INSTANCE_NAME + "RECOVERY-High-Status-Check-Failed-Any", 
          description='status check for {} {}'.format(_INSTANCE, _INSTANCE_NAME), 
          alarm_actions=[topic, 'arn:aws:automate:us-east-1:ec2:recover'], 
          ok_actions=[topic], 
          insufficient_data_actions=[topic], 
          statistic='Average', 
          comparison='>=', 
          threshold=1.0, 
          period=60, 
          evaluation_periods=5) 
+0

こんにちはAChampion、 ありがとうございました....それは確かにずっと簡単で、完全に機能します。 –

関連する問題