Lambda関数を用いてEC2インスタンスを起動する方法(前編)

データ活用ことはじめ

AWS Lambdaは、サーバレスのコンピューティングフレームワークです。

本ブログではAWS Lambdaを使うメリットやAWS Lambda でEC2を起動する方法について紹介します。

1.AWS Lambdaを使うメリット

AWS Lambdaはサーバレスのコンピューティングフレームワークであるため、AWS Lambdaを使用することで開発者はサーバを管理する必要がなく、スケーリング・セキュリティ・アップデートなどのさまざまな管理タスクをAWSに任せることができます。

AWS Lambdaを使ってEC2インスタンスを起動することで、インフラストラクチャ管理タスクを自動化することができます。
この方法は、開発者がEC2インスタンスを手動で起動しなくても、特定のイベント(例えばS3バケットへのファイルアップロード)をトリガーにして、自動的にインスタンスを起動することができるというメリットがあります。

AWS Lambdaを使ってEC2インスタンスを起動する方法の他にも、いくつかの一般的なEC2起動方法があります。

  1. ユーザーインターフェース:AWS Management Consoleを直接操作してEC2インスタンスを起動する
  2. AWS CLI:コマンドラインツールを使用してEC2インスタンスを起動する
  3. AWS SDK:さまざまな言語のAWS SDKを使用してEC2インスタンスを起動する

これらのEC2起動方法を比較すると、AWS Lambdaを使ってEC2インスタンスを起動するメリットは、起動用バッチを配置するためのEC2インスタンスを別途用意する必要がなく、特定のイベントが発生した時にEC2インスタンスを起動することができるため、フレキシブルな設計が可能であるという点です。
また、AWS LambdaはAWSによって運用・管理されているため、開発者がサーバを運用する必要がなく、開発者の負担も軽減されます。

一方、ユーザーインターフェースを使ってEC2インスタンスを起動するデメリットは、プログラム制御ができないため、運用性が低いことなどが挙げられます。

2.Lambda関数の作成手順

2-1 Lambda関数の設定

まずAWSメインメニューからLambdaを選択し、関数の作成をクリックします。
「一から作成」を選択すると、次の画面になります。


次に、関数名に任意の名前を入力し、ランタイムはPython 3.9(最新バージョン)を選択します。
「実行ロールの変更」では、「既存のロールを使用する」を選択しますが、まだ既存ロールがないため次のステップで作成していきます。

2-2 Lambdaで使用するロールの作成

AWSマネジメントコンソールからIAMを選択し、IAMダッシュボードに入ります。
「アクセス管理」→「ロール」→「ロールを作成」の順番でクリックしていきます。
こちらの画面では、まず「AWSのサービス」を選択し、ユースケースでは「Lambda」を選択します。


そして、本例ではAmazonEC2FullAccess(EC2に対するすべてのアクティビティを許可)というポリシーを追加します。


こちらの画面でロール名を入力し、ロールを作成します。


ロール一覧で先ほど作成したロールが表示されることを確認できます。


Lambdaの設定画面に戻ると、既存のロールで先ほど作成したロールが選択可能となりました。


以上でLambdaの事前準備は完了です。

3.コーディング

本章ではEC2を起動させるためのコーディングを紹介します。
ここでLambda関数を構築する際に使用するPythonのSDKは、AWS公式ドキュメント[注1]の下図のように確認できます。
本例ではPython 3.9を使用するため、SDKはboto3を使用することになります。


ソースコードを構築するために使用する条件等は、同じくAWS公式ドキュメント[注2]で確認できます。


EC2を起動させるために必須な項目は下記の4項目になります。
本例ではこちらの4項目を使用します。

ImageId DAMIの一意の識別子
InstanceType EC2のInstanceTypeを指定するパラメータ
MaxCount 最大インスタンス数
MinCount 最小インスタンス数

コード作成する際に使用するImageIdは下記の手順で取得できます。
「EC2」→「クイックスタート」


下記のようにコードを入力し、Deployをクリックします。


以上でEC2を起動させるためのコーディングが完了しました。

4.検証

先ほど作成したLambda関数でEC2の起動ができるかを検証します。

「テスト」をクリックし、下記のようにテストイベントを設定します。


これでテストイベントを実行できるようになったので、「TEST」をクリックします。


図で示すように、テストステータスは成功であり、コードに設定した’EC2 STARTED’も表示されました。
AWSマネジメントコンソールからEC2に入って、先ほど作成したEC2が実行中であることも確認できます。

5.おわりに

今回はAWS初心者向けに、Lambda関数でEC2を起動する方法をご紹介しました。

結論として、使用するEC2起動方法は開発者のニーズやインフラストラクチャの規模などによって異なりますが、AWS Lambdaを使ってEC2インスタンスを起動することで、フレキシブルな設計と開発者の負担を軽減することができるというメリットがあります。
ぜひ使ってみてください!

本ブログの後編ではイベントをトリガーにする方法を紹介します。



■商標について
Amazon Web Services、および、かかる資料で使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。


<参考リンク>
[注1] AWS Lambda Developer Guide:Building Lambda functions with Python
[注2] AWS:EC2 / Client / run_instances

BI_banner01.png