EC2自動起動停止

https://www.t3a.jp/blog/infrastructure/lambda-auto/
https://aws.amazon.com/jp/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/


(1)Lambda用のIAMロールの作成

(1.1)ポリシーの作成
ポリシー名:pol_ec2

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:Start*",
"ec2:Stop*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}

(1.2)ロールの作成
ロール名:role_ec2
参照ポリシー名: pol_ec2

 

(2)Lambdaファンクションの作成

(2.1)起動用ファンクションの作成
関数名: fun_start_ec2
ランタイム: Python3.7
ロール名:role_ec2

import boto3

def lambda_handler(event, context):
client = boto3.client('ec2')
response = client.start_instances(InstanceIds=event["instanceid"])
print(response)

 

(2.2)停止用ファンクションの作成

関数名: fun_stop_ec2
ランタイム: Python3.7
ロール名:role_ec2

import boto3

def lambda_handler(event, context):
client = boto3.client('ec2')
response = client.stop_instances(InstanceIds=event["instanceid"])
print(response)

 

(3)CloudWatch Eventsの登録
※ 注意:cronはUTC指定です

(3.1)起動用ルールの作成
ルール名: rule_start_ec2
Cron式: 01 12 * * ? *
関数名: fun_start_ec2
入力: 定数: {"instanceid": ["i-12345678901234567","i-12345678901234568"] }

(3.2)停止用ルールの作成
ルール名: rule_stop_ec2
Cron式: 06 12 * * ? *
関数名: fun_stop_ec2
入力: 定数: {"instanceid": ["i-12345678901234567","i-12345678901234568"] }