今回行う内容
Lambdaではトリガーを設定して処理を実行させることが出来ます。
この記事では20時に所望のec2インスタンスを停止させるという目的のもと、Lambdaの使い方を説明して行きます。
Lambdaの新規作成
今回はec2のstart,stopの権限を追加しなければならないので、カスタムロールを作成します。
新規Lambdaの作成から、以下のようにカスタムロールの作成を選択してください(名前は適当に決めてください。ランタイムはPython3.6にします)。
新しいIAMロールの作成を選び、ロール名を適当に設定します。ポリシードキュメントを表示、編集から以下のように書き換えます。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:Start*",
"ec2:Stop*"
],
"Resource": "*"
}
]
}
許可するとLambda作成画面で勝手に既存のロールとして選択されますので、このまま関数の作成を押します。これで関数の画面に飛びます。

ec2インスタンスを停止させるスクリプトを書く
さて、ec2にアクセス権を持つLambdaを作成できたので、具体的にインスタンスを停止させるスクリプトをPythonで書いていきます。 AWS用のboto3というライブラリを使います。また、以下対象のインスタンスID(i-*****************)をmy_idと書きます。
関数コードのlambda_function.pyを編集していきます。
一番シンプルに書くと以下のようになります。コピペしてください。

import boto3
import os
def lambda_handler(event, context):
instance_id = ['my_id']
ec2 = boto3.client("ec2")
ec2.start_instances(InstanceIds=instance_id)
return 'Hello from Lambda'
コピペできたら、右上の保存ボタンで内容を保存し、テストを選択してテストしましょう。以下のように表示されたら成功です。選択したインスタンスが起動していることを確認しましょう。 
トリガーを設定し、目的を達成する
中身はできたので、これを実行するタイミングを決めて目的を達成しましょう。20時にこのスクリプトを起動するためにCloudWatch Eventを使用します。
サービス→管理ツール→CloudWatchに入り、左のイベント→ルールの作成を選択します。
今回はcron式によって指定します。詳しくは公式ドキュメントから確認してください。 
cron式とターゲット(作成したLambda関数)を選択します。今回のcron式はcron(0 18 * * ? *)です。
詳細に飛び、適当に説明を追加した後ルールの作成をします。
これで完成です。
8:00にインスタンスを起動させたいなら、同じようにまずLambda関数を作り、CloudWatchでイベントを設定してあげれば大丈夫です。


