SORACOM Button으로 버스터 콜을 발령해 보았다

정말 와카마츠입니다.

SORACOM LTE-M Button으로 무엇을 만들까 고민하는 것은 즐겁습니다.
모처럼이므로 강요가 있는 것을 만들고 싶다고 여러가지 생각하고 있을 때, 어느 만화의 장면을 생각해 냈습니다.

버스터 콜



  
원피스에 나오는 모든 것을 파괴하는 명령이군요.
이 버스터 콜을 발령하는 계기가 버튼입니다.

AWS식 버스터 호출



(프로레슬링 기술 같네요)

모처럼 Lambda를 킥할 수 있으므로 AWS 리소스를 파괴하려고 합니다.
유석에 AWS 서비스가 너무 많기 때문에 EC2 인스턴스의 범위로 제한하기로 결정했습니다.

SORACOM Button → AWS IoT → Lambda → EC2Terminate

라는 구성입니다.

람다



코드는 다음과 같습니다.
언어는 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에서 두 대를 시작했습니다.ENIES LOBBY 에는 세계 정부의 깃발 대신 TerminateProtection을 설정해 둡니다.


버스터 콜 발령



모든 것을 굽습니다.
TerminateProtection은 효과가 없습니다.
무자비하다.



요약



버튼 하나로 인스턴스가 지워져 가는 것은 의외로 상쾌합니다.

사실은 AMI나 EIP라든지 삭제하도록 할까 하고 생각했습니다만, 키리가 없어질 것 같아서 그만두었습니다.
검증 환경이라든지 모든 인스턴스를 태우고 싶을 때나 편리하네요(나는 무서워서 사용하지 않습니다.

좋은 웹페이지 즐겨찾기