Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@chemie2472

SORACOM LTE-M Button+AWS LambdaでEC2インスタンスの状態を操る

More than 1 year has passed since last update.

はじめに

タイトルそのままです。
SORACOM LTE-M Buttonを買ったので同一リージョン内のインスタンスの起動・停止・再起動をボタンだけでできるようにしました。

注意

Lambda関数のIAMロールを設定しましょう。
この辺りが参考になると思います

AWS Lambda上での実装(Python 3.6)

今回は1回押すと起動/2回押すと再起動/長押しで停止するようにします。

IoTEC2Button.py
from __future__ import print_function

import boto3
import json
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)



def lambda_handler(event, context):
    logger.info('Received event: ' + json.dumps(event))
    #今回は東京リージョン内のインスタンスを操作するのでap-northeast-1
    client = boto3.client('ec2','ap-northeast-1')
    responce = client.describe_instances()
    #全インスタンスIDを入れておく配列
    all_list = []
    for reservation in responce['Reservations']:
      for instance in reservation['Instances']:
          ##ステータスがterminatedになっているインスタンスがあるときのエラー対策
          if instance['State']['Name'] != "terminated":
              all_list.append(instance['InstanceId'])
    click_type = event['deviceEvent']['buttonClicked']['clickType']
    #操作対象のインスタンスのID(個別で操作したい場合はここに操作対象のインスタンスIDを入れる)
    ilist=list(all_list)
    #1回押した時
    if click_type == "SINGLE":
        start =  client.start_instances(InstanceIds=ilist)
        return start
    #2回押した時
    elif click_type == "DOUBLE":
        reboot =  client.reboot_instances(InstanceIds=ilist)
        return reboot
    #長押しした時
    elif click_type == "LONG":
        forcestop =  client.stop_instances(InstanceIds=ilist,Force=True)
        return forcestop
    logger.info('OK') 

おわりに

LTE-Mボタンは外出先でも使えるので使う時だけ起動/作業終わったら停止させればコストも減らせて非常に便利です。
インスタンス常時稼働させとくとコストが...ただいちいちコンソール開くのもなぁ...なんて面倒くさがりな方(主に私)にもいいかもしれません。

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?