[AWS]Django+Elastic Beanstalk+Github Actions CI/CI 파이프라인 구축하기 (1)

Jay·2023년 1월 6일
1
post-thumbnail

개요

여러 회사에서 면접을 진행하며 데브옵스, 배포와 관련된 질문들을 받아왔다. 지금까지 백엔드 개발을 공부하였지만, 프로젝트 경험이 없었기 때문에 배포와 운영에 관한 경험이 많이 부족하다고 느꼈다. 그러던 중 진행중인 미니 프로젝트에서 프론트팀원과 협업을 진행하기 위해 CI/CD 적용의 필요성을 느꼈고, 가벼운 실습을 통해 사용법과 기본적인 개념들을 이해하려고 한다.



AWS 설정

AWS Beanstalk 환경 생성

AWS console에 로그인하여 Elastic Beanstalk 서비스에 들어가게되면 우측 상단에 환경 생성이라는 버튼이 보이게 된다.


환경 생성은 환경 티어 선택 > 웹서버 환경 생성 > 환경 정보 > 플랫폼 > 애플리케이션 코드를 순서대로 입력하여 생성하게 된다.

  • 환경 티어 : API를 운영할 계획이므로 웹 서버 환경을 선택하였다.
  • 애플리케이션 이름 : 사용할 애플리케이션 이름을 적으면 된다.
  • 환경 이름 : 마찬가지로 환경 이름을 정해주면 된다. 보통 '애플리케이션명_env'로 생성된다.
  • 플랫폼 : Django를 사용할 계획이므로 Python 플랫폼으로 사용하고 플랫폼 브랜치와 버전은 추천해주는 것으로 사용하였다. (Python 3.8 running on 64bit Amazone Linux 2, 3.4.3)
  • 애플리케이션 코드 : 샘플 애플리케이션

위와 같은 설정으로 환경을 생성해주었다. 애플리케이션 이름(key: BK_appname)과 환경 이름(key: BK_envname)은 후에 사용해야하니 기억해두자.
환경을 생성하고 다시 왼쪽 메뉴의 '환경' 탭으로 이동하면 생성된 환경들을 확인할 수 있다. 생성된 환경의 URL(환경 이름.ap-northeast-2.elasticbeanstalk.com)로 접속하게 되면 아래와 같은 화면이 나오게 된다.


Database 구성 변경

다음으로는 데이터베이스에 관한 환경 구성을 변경해야 한다. 왼측 메뉴의 환경관련 탭중 '구성'으로 이동하게 되면 여러 카테고리에 관한 구성을 수정할 수 있다.

그 중에 맨 아래에 있는 데이터베이스의 '편집'으로 이동하면 데이터베이스의 설정을 편집할 수 있다. 나는 현재 진행중인 프로젝트에선 MySQL을 사용중이기 때문에 해당 엔진으로 설정하였다. 또한 추후에 데이터베이스에 관한 설정에서 사용할 사용자이름과 암호를 입력하여 적용해준다. 여기서 입력한 사용자이름(key: DB_username)과 암호(key: DB_password)는 따로 기억해 둘 필요가 있다.


S3 configuration

Beanstalk에 push하기 전 임시 저장소로 사용할 S3를 설정해야 한다. 마찬가지로 amazone s3 서비스로 이동하여 버킷을 생성해준다. 버킷 이름과 지역만 ap-northeast-2 다른 설정은 변경할 필요 없이 바로 생성하였다. 버킷의 이름(key: bucket_name)도 후에 사용해야하니 기억해두자.


IAM user access

마지막으로는 AWS자원의 접근 관리를 설정해주어야 한다. AWS의 IAM 콘솔로 이동하여 '사용자 추가'를 클릭하여 사용자를 생성한다.


사용자 이름을 입력하고 access 유형을 선택하여 다음 단계로 넘어간다. access 유형은 액세스 키 유형으로 선택하였다.


다음 권한 설정 페이지에서는 '기존 정책 직접 연결'을 선택한다. 정책으로는 AdministratorAccess-AWSElasticBeanstalk, AmazonS3FullAccess을 선택한다.

검증과 확인 단계를 지나 사용자를 생성하게 되면 생성된 IAM 사용자에 관한 정보가 보여진다. 이 페이지에서 생성된 액세스 키 ID(key: aws_access_key_id)와 비밀 액세스 키(key: aws_secret_access_key)를 확인할 수 있는데, 이 두 값은 후에 사용해야하니 따로 기록해두도록 하자.




여기까지 완료되었다면 AWS 설정은 완료되었다. 이 과정에서 생성된 elastic beanstalk 애플리케이션 이름(key: BK_appname), 환경 이름(key: BK_envname), DB 사용자이름(key: DB_username), 암호(key: DB_password), S3 버킷이름(key: bucket_name), 액세스 키 ID(key: aws_access_key_id)와 비밀 액세스 키(key: aws_secret_access_key)는 후에 CI/CD 파이프라인을 구축하는데 필요하니 기록해두자. 다음에는 Django 프로젝트 생성과 github actions 설정을 정리하여 포스팅해야겠다



reference

https://dev.to/vlntsolo/django-full-ci-cd-flow-to-aws-with-github-actions-and-s3-2enp

0개의 댓글