가시다님이 하시는 스터디에서는 클라우드 포메이션으로 실습 스터디를 한번에 할 수 있는 자료를 제공해주신다.
매우 편리함!!!
그러나 나는 인내심과 집중력이 쿠크다스이기에, 환경 만드는데 20분이상 걸린다는 핑계로 공부하려고 앉았다가 기다리면서 유튜브 보다가 집중력이 끝나버린다.
그래서, 회사 퇴근후 집에 가는 길에 핸드폰으로 저 클라우드포메이션을 실행시켜놓고, 집에서 공부하려고 앉을 때 바로 시작하면 얼마나 좋을까!! 라는 생각을 하게 되었다.
구조 흐름은 아래와 같다.
슬랙 -> aws Chatbot -> Lambda -> Cloudformation
결과물:
핸폰 슬랙에서 아래처럼 명령어(저장해놨다가 복붙하면 갸꿀!)를 치면

아래처럼 클라우드포메이션 스택이 생성된다!

구축 순서
스텝1. AWS Chatbot 생성


(위 단계에서 개인용 워크스페이스가 없다면 새 워크스페이스를 만들면된다)

- 개인전용 워크스페이스 생성되면 아래화면에서 Configure channel 선택

- 내 워크스페이스에서 생성한 채널들이 보임

스텝2. 람다생성
람다를 아래코드를 넣어 생성함.
현재 내 환경은 ip가 바뀌기 때문에 event 파라미터로 sg_cidr를 받기로 함.
생성시 TemplateURL은 스터디에서 제공해주는 s3 url 그대로 사용하되, parameter만 덮어씌운다.
import json
import boto3
import os
def lambda_handler(event, context):
client = boto3.client('cloudformation')
key_name = os.environ['key_name']
access_key = os.environ['access_key']
secret_key = os.environ['secret_key']
sg_cidr = event['sg_cidr']
# print(f"key_name:{key_name}, access_key:{access_key}, secret_key:{secret_key}, sg_cidr:{sg_cidr}")
client.create_stack(
StackName = 'myeks',
TemplateURL='https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/K8S/eks-oneclick.yaml',
Parameters=[
{
'ParameterKey': 'KeyName',
'ParameterValue': key_name,
},
{
'ParameterKey': 'MyIamUserAccessKeyID',
'ParameterValue': access_key,
},
{
'ParameterKey': 'MyIamUserSecretAccessKey',
'ParameterValue': secret_key,
},
{
'ParameterKey': 'SgIngressSshCidr',
'ParameterValue': sg_cidr,
}
]
)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
환경변수 추가해준다.(더 안전하게 하려면 파라미터스토어나 시크릿매니저 사용추천)

하고 슬랙에다 @aws로 시작하면서 aws cli를 날리면 된다!
이제 집가서 리소스 구축하는거 오래걸려서 공부하기 힘들다는 핑계거리가 사라져버렸다. 좋은건가; 좋은거지!

댓글