Lambda関数でEC2を開始、停止する方法を紹介します。
python を例にしています。
・boto3 はレイヤ追加することなく利用可能です。
・ポリシーとロールを作成します。ロールで"サービス、ユースケース"は「Lamda用」に設定する必要があります。もしEC2用にした場合、Lamda関数作成時に既存の Role で作成した Role が表示されません。
・Lamdaにアタッチするポリシーのロールは次の通り。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:Start*",
"ec2:Stop*"
],
"Resource": "*"
}
]
}
コードは次の通り。
import boto3
import os
region = 'us-east-1'
instances = ['i-*****************']
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name=region)
action = event["Action"]
response = ec2.describe_instances(InstanceIds=instances)
ec2_status = response['Reservations'][0]['Instances'][0]['State']['Name']
if action == "Start":
ec2.start_instances(InstanceIds=instances)
print('started your instance: ' + str(instances[0]))
elif action == "Stop":
ec2.stop_instances(InstanceIds=instances)
print('stopped your instance: ' + str(instances[0]))
"errorMessage": "Parameter validation failed:\nInvalid type for parameter InstanceIds, value:
Python における正しい インスタンスIDの指定方法。
['i-*****************']
【超重要】本ページは情報が古くなっている可能性があります。参考程度にしてください。
[ 一覧に戻る]
【注意事項】本ページの内容は個人的に調査した結果がであり内容が正しいことは保証されません。
またAWSサービスは常に改良、アップデートされており本ページの内容が古く誤った内容になる可能性もあります。変更になっても本ページが正しく更新されるとは限りません。
あくまでも参考程度でご覧ください。内容により発生したいかなる時間的損害、金銭的損害、その他の損害に関しても何人も保証しません。