share facebook facebook twitter menu hatena pocket slack

2018.11.20 TUE

SORACOM Button でバスターコールを発令してみた

若松 剛志

WRITTEN BY 若松 剛志

どうも若松です。

SORACOM LTE-M Button で何作ろうかと悩むのは楽しいですね。
せっかくなので押しがいがあるのを作りたいといろいろ考えていたときに、あるマンガの場面を思い出しました。

バスターコール

ワンピースに出てくる、全てを破壊する命令ですね。
このバスターコールを発令するきっかけがボタンなのです。

AWS式バスターコール

(プロレス技みたいですね)

せっかくLambdaをキックできるので、AWSリソースを破壊してみようと思います。
流石にAWSサービスは多すぎるので、EC2インスタンスの範囲に限定することにしました。

SORACOM Button → AWS IoT → Lambda → EC2Terminate

という構成です。

Lambda

コードは以下となります。
言語はPython3.6です。

BusterCall

import boto3
import jmespath

def lambda_handler(event, context):

    ec2 = boto3.client('ec2')

    instanceids = jmespath.search(
        'Reservations[].Instances[?State.Name!=`terminated`][].InstanceId',
        ec2.describe_instances()
    )

    for instanceid in instanceids:
        ec2.modify_instance_attribute(
            InstanceId=instanceid,
            DisableApiTermination={
                'Value': False
            }
        )

    ec2.terminate_instances(
        InstanceIds=instanceids
    )

    print(instanceids)

    return

AWS IoT

以下のように設定を済ませます。

EC2

流石に東京リージョンは怖いので、オレゴンで行います。
インスタンスは何でもいいのでt2.nanoで2台起動しました。
ENIES LOBBY には世界政府の旗代わりにTerminateProtectionを設定しておきます。

バスターコール発令

全てを焼き尽くします。
TerminateProtectionとて効きません。
無慈悲です。

まとめ

ボタンひとつでインスタンスが消し飛んでいくのは意外と爽快です。

本当はAMIやEIPとかも削除するようにしようかと思ってましたが、キリが無くなりそうなのでやめました。
検証環境とかで全てのインスタンスを燃やし尽くしたいときとか便利ですね(私は怖いので使いません。

元記事はこちら

SORACOM Button でバスターコールを発令してみた

若松 剛志

若松 剛志

AWS環境の構築、運用を担当。インフラを中心に雑食な感じで生きてます。JAWS-UGでも活動中。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。