전 포스팅에는 파이썬 코드를 통해 ec2를 키고 끄는 것을 해보았다. 이번에는 파이썬 코드를 aws lambda에 넣고 ec2를 키고 꺼보도록 한다. 먼저 꺼져있는 ec2 인스턴스를 키는 것 부터 해보도록 한다.
이제 aws cli(참고)에 넣었던 환경변수를 똑같이 넣어야 한다.
여기서는 변수명은 ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION으로 한다.
해당 네모칸에 아래에 있는 코드를 넣도록 하자
import os
import boto3 # boto3 패키지 가져오기
# 호스트의 환경변수 불러오기
AWS_ACCESS_KEY_ID = os.getenv("ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = os.getenv("SECRET_ACCESS_KEY")
AWS_DEFAULT_REGION = os.getenv("REGION")
client = boto3.client('ec2', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
region_name=AWS_DEFAULT_REGION) # ec2 client 객체 초기화
def start_ec2(instance_list): # stop_ec2() 함수 정의
response = client.start_instances(
InstanceIds=instance_list
)
return response
def lambda_handler(event, context):
# TODO implement
instance_list = ['ec2-instance-id']
start_ec2(instance_list)
lambda_handler 함수의 instance_list에 키고싶은 ec2 인스턴스 id를 넣으면 해당 인스턴스가 실행 될 것이다.
코드를 작성하고 Ctrl+s로 저장 후 Deploy 버튼을 누르고 Test 버튼을 클릭.
Test 버튼을 누르면 해당 창이 나오는데 이벤트 이름을 지정하고 저장을 누른다.
그 후 다시 Test 버튼을 누르면 아래 실행결과가 나온다. 에러가 없다면 정상적으로 실행이 된 것이고 EC2로 이동하여 제대로 동작되는지 확인할 수 있다.
import os
import boto3 # boto3 패키지 가져오기
# 호스트의 환경변수 불러오기
AWS_ACCESS_KEY_ID = os.getenv("ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = os.getenv("SECRET_ACCESS_KEY")
AWS_DEFAULT_REGION = os.getenv("REGION")
client = boto3.client('ec2', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, region_name=AWS_DEFAULT_REGION) # ec2 client 객체 초기화
def stop_ec2(instance_list): # stop_ec2() 함수 정의
response = client.stop_instances(
InstanceIds=instance_list
)
return response
def lambda_handler(event, context):
# TODO implement
instance_list = ['ec2-instance-id']
stop_ec2(instance_list)
추가로 ec2를 자동으로 끄고 싶다면 해당 코드를 lambda에 넣어서 생성하면 된다.