개요
CloudFormation에서 사용하는 명령어들을 정리
CloudFormation
AWS EC2와 같은 리소스를 기술하는 템플릿을 작성할 수 있는데, 이를 CloudFormation이 프로비저닝하여 생성하는 역할 수행
매번 별개의 EC2를 생성하고 설정할 필요 없기에, 리소스 관리 시간을 줄이고 어플리케이션에 집중할 수 있게 도움
•
인프라 관리 간소화
•
신속한 인프라 복제
•
인프라 변경 사항 제어 및 추적
관련 명령어
스택 배포
# template-file.yaml에 정의된 Parameter들을 명령어 상에서 직접 재정의하여 기입 가능
# 접속에 사용될 Key Pair 이름을 KeyName으로 정의하여 사용
# EC2 인스턴스와 통신할 수 있는 IP 대역을 SgIngressSshCidr로 정의하여 사용
# 생성하려는 EC2 인스턴스 타입을 MyInstanceType으로 정의하여 사용
aws cloudformation deploy --template-file <template-file.yaml> --stack-name <stack-name> --parameter-overrides KeyName=<ec2-key-pair-name> SgIngressSshCidr=$(curl -s ipinfo.io/ip)/32 MyInstanceType=<instance-type> --region <region>
Shell
복사
배포된 EC2 IP 확인
# Region과 Stack 이름을 지정하여 json path로 EC2 IP 확인
aws cloudformation describe-stacks --stack-name <stack-name> --query 'Stacks[*].Outputs[0].OutputValue' --output text --region <region>
Shell
복사
스택 상태
# 기본 명령어를 통해 배포된 스택 목록 확인 가능한데, 삭제된 스택들을 포함한 결과 출력
aws cloudformation list-stacks
# 배포 상태를 stack-status-filter라는 필터 옵션으로 기입 가능 (상태 값은 아래 링크 확인)
# https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stacks.html#options
aws cloudformation list-stacks \
--stack-status CREATE_IN_PROGRESS CREATE_COMPLETE CREATE_FAILED \
--query "StackSummaries[*].{StackName:StackName, StackStatus:StackStatus}"
# 매초 확인은 아래와 같은 Loop 문으로도 확인 가능
# 생성 및 삭제 관련 상태 포함한 결과 확인 및 테이블 형식
while sleep 1; do
date
AWS_PAGER="" aws cloudformation list-stacks \
--stack-status-filter CREATE_IN_PROGRESS CREATE_COMPLETE CREATE_FAILED DELETE_IN_PROGRESS DELETE_FAILED \
--query "StackSummaries[*].{StackName:StackName, StackStatus:StackStatus}" \
--output table
done
Shell
복사
배포된 EC2 접속
ssh -i <key-path>/<key-name>.pem ubuntu@$(aws cloudformation describe-stacks --stack-name <stack-name> --query 'Stacks[*].Outputs[0].OutputValue' --output text --region <region>)
Shell
복사
스택 삭제
aws cloudformation delete-stack --stack-name <stack-name>
Shell
복사