본문 바로가기
Slack

Slack slash command와 AWS lambda를 활용한 대화형 EC2 Stop & Go 기능 개발(slack 메시지로 ec2 관리하기)

by Pacloud 2023. 7. 21.
반응형

이번 포스팅에서는 간단하게 정리하자면, Slack을 통해서 AWS EC2를 끄고 켤 수 있는 기능을 만든 것을  소개 하려고 한다.

 

먼저 사용한 서비스를 정리하자면,

 

1. AWS Ec2

2. AWS Lambda

3. Lambda 함수 구성

4. Slack App

5. Slack slash command 

 

이렇게 5가지로 정리할 수 있고 사전 준비되어야 하는 것들은

 

1. Slack 워크스페이스 및 앱 생성

2. Ec2 생성 

 

정도가 있는데 앱 생성 및 워크스페이스 생성은 전에 올려놓은 글을 참조하면 된다.

2023.04.04 - [Slack] - [Slack으로 점심 추천 Bot 만들기 with aws lightsail] - 1 기본세팅

 

이제부터 람다 함수를 생성해서 작성하고 Slash command와 연동하는 과정을 설명하겠다.

 

1. Lambda 함수 생성(본인이 사용할 환경에 맞추어서 생성하기)

 

2. 코드 작성

import boto3

def lambda_handler(event, context):
    instance_id = "my-instance-id"  # 중지할 EC2 인스턴스의 식별자 입력
    ec2_client = boto3.client('ec2')
    response = ec2_client.describe_instances(InstanceIds=[instance_id])
    current_state = response['Reservations'][0]['Instances'][0]['State']['Name']
    
    if current_state=='running':
        ec2_client.stop_instances(InstanceIds=[instance_id])

    return {
        'statusCode': 200,
        'body': 'EC2 instance stopped successfully.'
    }

 

3.함수구성(cors 꼭 해제)

4. 생성된 함수 URL 복제

 

5.함수 URL 슬랙 슬래시 커맨드에 입력

 

 

아, 참고로 슬랙 슬래시 커맨드 메뉴는 슬랙 앱 메뉴의 왼쪽에 있다.

 

6. 앱 설치.

 

 

7.람다 함수 권한 설정 ( 이는 람다 함수 초기 생성 시 그 어떤 권한도 없기 때문이다.)

Ec2 삭제 및 생성 관련 권한을 추가한다.( 권한이 헷갈린다면,, Ec2 full 권한을 주자..)

 

 

역할 이름을 클릭하면 권한 설정 화면으로 넘어가는데,

 

위처럼 권한을 추가하면 된다.

 

8. 확인 및 테스트

 

올바르게 세팅했다면 다음과 같이 Ec2가 성공적으로 꺼졌다는 알람이 온다!

오늘의 포스팅은 여기서 끝.