0

Cloudwatchイベントにフックされたラムダ関数を設定するいくつかのAWS EC2インスタンスがあります。 1つのラムダ関数は、午前8時にインスタンスを開始し、午後6時にインスタンスをシャットダウンします。私が望むのは、インスタンスがシャットダウンされることをユーザーに通知する方法です(インスタンスがシャットダウンされる予定の15分前)。インスタンス間で反復処理を行い、インスタンス1とインスタンス2がシャットダウンしようとしていることをユーザーに伝えるメッセージを作成する方法はありますか?ラムダ関数のための当社のコードは、例から直接取得されていますシャットダウンするインスタンスについてAWS通知を設定するにはどうすればよいですか?

import boto3 

# Enter the region your instances are in, e.g. 'us-east-1' 
region = 'us-east-1' 

# Enter your instances here: ex. ['X-XXXXXXXX', 'X-XXXXXXXX']# 
instances = ['X-XXXXXXXX', 'X-XXXXXXXX'] 

def lambda_handler(event, context): 
    ec2 = boto3.client('ec2', region_name=region) 
    ec2.start_instances(InstanceIds=instances) 
    print 'started your instances: ' + str(instances) 

任意の入力は大きな助けになります。

+0

「通知する」とはどういう意味ですか?ユーザーはインスタンスにログインしていますか、またはアプリケーションを実行していますか? *あなたに*通知する(電子メール、ポップアップメッセージ、感電)*どのようにしたいですか? –

+0

申し訳ありませんが、私はより明確にすべきでした。電気ショックは出ていますが、電子メールは問題ありません。 – TortillaCurtain

+0

私はなぜAutoscalingグループを簡単に使用しないのでしょうか?あなたもそれをスケジュールすることができます。 –

答えて

0

質問が誤解されていない限り、コードは既存のコードとほぼ同じです。

インスタンスをシャットダウンするラムダ関数のコピーを作成します。実際にサーバーをシャットダウンするのではなく、このバージョンを修正して(SES経由で)電子メールを送信してください。この新しいラムダ関数を、シャットダウン関数が実行される15分前に実行するようにスケジュール設定します。 EC2のデフォルトで

+1

私は別の機能の作成を避けることを望んでいました。自動的に通知を送信するように設定する方法があるかどうかはわかりませんでした。私はあなたの解決策を試してみるつもりです、私はうまくいくでしょう。 – TortillaCurtain

+0

もう少しオープンにしたい場合は、SESではなくSNSトピックにメッセージを公開することができます。その後、通知オプションに柔軟性を持たせることができます。 – Mikelax

1

は、内部(例えばsudo haltまたはsudo poweroff)からインスタンスを停止するAPIを経由して、それらを停止するとまったく同じである - 彼らは、コンソールにStopped状態に遷移し、あなたがする必要はありませんそれらを停止するようにAPIに依頼して停止した場合と同じように、支払いを行います。

コマンドshutdown -h +15は、15分以内にシステムをシャットダウンするように要求し、すべてのttysに警告をブロードキャストします。

だから、シャットダウン機能ではなく15分前に各インスタンスのLambdaからEC2 RunCommandを起動して、各システムでshutdownコマンドをリモートで実行することができます。

これらのシステムが毎日行う場合は、シャットダウンをcrontabに入れてください。

関連する問題