AWS LambdaでEC2インスタンスの自動停止・起動(Python)①Lambda関数作成編

こんにちは、シュガーです。
今回はAWS Lambdaを使ってEC2インスタンスを定時に自動で停止・起動させる方法をご紹介したいと思います。
Lambda関数作成編とCloudWatch Event作成編の2つに分けてご紹介いたします。

IAMロールの作成

まず準備としてIAMロールの作成を行います。
今回はLambdaからEC2の操作ができるよう権限を割り当てます。
IAMのコンソール画面の左メニューからロールを選択し、「ロールの作成」をクリックします。
ロールタイプはAWSサービスを選択し、その項目の中から「Lambda」を選択します。

次の画面のアクセス権限では、既存のポリシーをアタッチします。
「AmazonEC2FullAccess」と検索をし、表示されたポリシーをアタッチしましょう。

最後の確認画面では、ロール名及び説明を明記します。
ここは自分でわかるようなロール名を設定しましょう。
「ロールの作成」をクリックすることでロールの作成が完了です。

Lambda関数の作成(停止)

それでは停止用のLambda関数を作成します。
AWS Lambdaのダッシュボードから「関数の作成」を選択します。
・ステップ1
設計図の選択では「一から作成」を選択します。

・ステップ2
トリガーの設定では何もせず、そのまま「次へ」を選択します。

・ステップ3
関数の設定では、ランタイムの指定を行い、Lambda関数のコードを記述する必要があります。
また、この画面で先ほど作成したIAMロールの適用を行います。
今回はPython編ということでランタイムはPython 3.6を選びます。

Lambda関数のコードはこのように記述しました。
[‘X-XXXXXXXXX’]には停止させたいインスタンスIDを指定します。
複数指定したい場合には、インタンスIDとインスタンスIDの間に「,」を入れることで指定が可能になります。

次にIAMロールをアタッチします。
「既存のロールを選択」し、続けて先ほど作成したIAMロールをプルダウンから選びましょう。

ステップ4
確認画面で設定した情報に間違いがなければ「関数の作成」をクリックすることでLambda関数が作成されます。

Lambda関数の作成(起動)
続けて起動用のLambda関数を作成します。
手順は先程のLambda関数の作成(停止)と同じです。
Lambda関数のコードのみ異なります。

IAMロールは同じで問題ありません。
確認画面で問題なければ起動用のLambda関数を作成しましょう。

最後に

今回はここまでになります。
次回ではCloudWatch Eventの設定を行いたいと思います。
【次回記事】AWS LambdaでEC2インスタンスの自動停止・起動(Python) ②CloudWatch Event作成編

お楽しみに!

この記事を書いた人

aws-recipe-user