教材
実作業
停止して起動する EC2 インスタンスの ID を取得します
EC2の画面から当該EC2インスタンス選択
リージョンも確認しておく
JSON ポリシーエディターを使い IAM ポリシーを作成します
IAMの画面からポリシーを選びポリシーの作成をクリック
JSONタブをクリック
コピペして適切なタグをつけて名前をつけて作成
Lambda のための IAM ロールを作成します
IAMの画面からロールを作成
さきほどのポリシーをアタッチして
適切なタグをつけて名前をつけて作成
EC2 インスタンスを停止および起動する Lambda 関数を記述する
このまま実施します
- AWS Lambda コンソールで、[Create function] クリックします。
- [Author from scratch] をクリックします。
- [Basic information] に次の事項を追加します。 [Function name] に EC2 インスタンスを停止させる関数の名前を入力します。たとえば「StopEC2Instances」のようになります。 [Runtime] では [python 3.8] を選択します。 [Permissions] で [Choose or create an execution role] を展開します。[Execution role] で [Use an existing role] を選択します。[Role] で今回作成した IAM ロールを選択します。
- [Create function] をクリックします。
- [Function code] で、次のコードをコピーして 、コードエディターのエディタペインに貼り付けます (lambda_function)。このコードでは指定したEC2 インスタンスを停止します
関数コード例 - EC2 インスタンスの停止
import boto3
region = 'us-west-1'
instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.stop_instances(InstanceIds=instances)
print('stopped your instances: ' + str(instances))
注意: [region] で、「us-west-1」を自分のインスタンスがある AWS リージョンと置き換えます。[instances] で、サンプルの EC2 インスタンス ID を、実際に停止および起動したいものの ID と置き換えます。
関数コード例 - EC2 インスタンスの開始
import boto3
region = 'us-west-1'
instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=instances)
print('started your instances: ' + str(instances))
注意: region および instances では、EC2 インスタンスを停止させたコードと同じ値を使用します。
Lambda 関数のテスト
今回起動と停止なのでテストのコードはいらない
デプロイ忘れないこと
Lambda 関数をトリガーするよう、CloudWatch Events のルールを作成します。
Cloudwatch の画面から イベントを開いてルールを選択する
あとはそのまま実施します
- [Targets] の [Add target] をクリックします。
- [Lambda function] をクリックします。
- [Function] から EC2 インスタンスを停止させる関数を選択します。
- [Configure details] を選択します。
- [Rule definition] で次の事項を行います。 [Name] には「StopEC2Instances」といったようなルールを指定する名称を入力します。 (任意) [Description] でルールを記述します。たとえば「Stops EC2 instances every night at 10 PM.」のようになります。 [State] で [Enabled] チェックボックスをオンにします。
- [Create rule] を選択します。
あとがき
ルールの書き方を勉強したい
「平日毎朝7時にスタート 夕方6時にストップ」など