BK クラウド / システム 記事
JA
English ENDeutsch DEEspañol ES中文 ZHFrançais FRPortuguês (Brasil) PT-BR日本語 JA
つながりましょう ↗
← 実践ノートに戻る

AWS:障害時にEC2を再起動する

アーカイブ記事:2019年の記録です。現在はサポートされていないPythonバージョンなど、過去の手順を含みます。

このブログはEC2で動いていました。コストを抑えるためロードバランサーを使わず、希望容量1のAuto Scalingグループにしていました。DB接続が不安定になることがあり、最も簡単な自動対処はインスタンスの再起動でした。ロードバランサーなしでは少し工夫が必要だったので、手順を残しました。

  • Route 53のヘルスチェックを作成します。
  • 対応するCloudWatchアラームを選び、SNSトピックを関連付けます。
  • トピックからメール通知とLambdaの呼び出しを行うよう設定します。
  • LambdaのIAMロールに、EC2を再起動する権限を付けます。

以下は当時ネットで見つけたLambdaコードです。記事の執筆時点ではPython 3.xではなく2.7が必要でした。

import boto3

region = ‘us-west-1’

instances = [‘i-12345cb6de4f78g9h’, ‘i-08ce9b2d7eccf6d26’]

def lambda_handler(event, context):

    ec2 = boto3.client(‘ec2’, region_name=region)

    ec2.stop_instances(InstanceIds=instances)

    print ‘stopped your instances: ‘ + str(instances)