[AWS] AWS 스터디 5-6주차 회고, Elastic Beanstalk + IAM 사용자 추가

SSO·2022년 6월 2일
2

[AWS] AWS 스터디

목록 보기
4/4

Retrospect


이번에는왜 5주차 6주차 회고를 함께 쓰게 되었나 ..! 5주차 내용이 6주차까지 연장되었기 때문이지요 ~.~ 5주차에서 Elastic Beanstalk 서비스에서 환경 및 어플리케이션을 만들어서 pipeline으로 무중단 배포 실습을 배웠다. 하지만 알 수 없는 오류 (500, unhealthy)가 떠버려서 결국 실패 😵 하지만!! 일주일 만에!! 우리 스터디 조 멘토(OB지만 이제 능동적으로 스터디를 이끌어가주시는.. 빛 OB...)님이! 문제 해결법을 들고와서 환경 생성부터 복습하면서 파바박 실습 성공시켜주었다!! (최고!) 빠르게 원래 6주차 내용이었던 IAM 사용자 추가 방법까지 스무스하게 스터디 6주차 수업 마무리 ㅎ_ㅎ 개인적으로 너무 알차고 재밌었다.

비록 Elastic Beanstalk에 해당하는 내용은 6주차까지 이어졌지만, 본래 5주차 내용이었으므로 5주차에 해당 내용을 다루고, 6주차 카테고리에서는 IAM 사용자 추가로 다루기로 하겠다 :)


🧡 5주차


프로그램 형상 관리의 문제점이 있다.
새로운 개발이 생겨나면서 서비스와 개발의 형상이 일치하지 않을 때가 발생할 수 있다. 즉, 기존과 동일하게 유지되지 않은 문제가 발생한다.

쉽게 정리하면,
개발을 하고 프로젝트를 배포했다. 그 후에 새로운 기술이 생겨났다. 그 기술을 도입하려고 한다. 앗 그런데 기존에 배포한 프로젝트에 기술을 도입하자 기존과 뭔가 맞지 않는 문제가 일어났다.

그럼 이러한 문제를 어떻게 해결할 수 있을까? CI로 이 문제를 해결하고 CD하여 지속적으로 유지한다.

CI (Continuous Integration) | 지속적 통합
CD (Continuous Depolyment) | 지속적 배포

다시 말해서,
지속적 통합으로 형상 불일치의 문제를 해결하고,
지속적 배포함으로써 서비스를 지속적으로 유지시킨다.


이러한 CI/CD를 도와주는 것이 AWS의 서비스 중 하나인 Elastic Beanstalk 서비스이다.

(AWS) Elastic Beanstalk
Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker를 사용하여 Apache, Nginx, Passenger, IIS와 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게 배포하고 조정할 수 있는 서비스입니다.

출처 | AWS 공식 홈페이지 (https://aws.amazon.com/ko/elasticbeanstalk/)

위와 같이, 특정 프로젝트를 무중단 배포할 수 있게 하는 서비스이다. Github 등과 같은 곳에 연결해서, 코드를 수정하고 Git에 Push하면 auto scaling(자동으로 재배포하는 것으로 이해하면 됨)해주는 기능도 있어서 편리한 서비스이다.


그럼 이제 이 서비스를 활용하여 CI/CD를 사용하는 실습을 진행해보자.

https://github.com/thguss/ElasticBeanstalkSample.git
👆 위의 프로젝트를 무중단 배포해볼 것이다.


👩‍💻 Elastic Beanstalk (환경 및 어플리케이션 생성)

💥 AWS 사이트에 접속하여, 로그인 하고 Elastic Beanstalk 서비스로 이동하자.

💥 환경 메뉴에서 새 환경 생성을 클릭하자.

💥 클릭한 후, 웹 서버 환경을 선택해주고 다음으로 넘어가 나머지 세팅을 진행해주었다.

💥 웹 서버 환경에서 애플리케이션 이름을 입력해주자. 해주면 환경 이름도 자동으로 입력된다.

💥 플랫폼에서 관리형 플랫폼을 선택하고, 플랫폼은 Node.js로 선택해준다. (배포하려는 프로젝트가 Node.js 기반이므로 선택했다. 다른 프로젝트를 배포하려면 일치하는 플랫폼 선택하면 됨) > 그리고 다 됐으면 환경 생성을 클릭해주면 끝!

💥 돌아와서 환경애플리케이션 메뉴에서 확인하면 생성한 환경과 해당하는 애플리케이션이 생성되었음을 확인할 수 있다.


👩‍💻 CodePipeline

프로젝트를 Elastic Beanstalk로 배포해줄 때는, 파이프라인을 통해서 서버를 연결한다. 그러기 위해서 AWS 내의 CodePipeline 서비스에서 파이프라인을 생성하고 프로젝트 및 생성한 Elastic Beanstalk의 환경 및 애플리케이션을 연결해주어야 한다.

💥 AWS의 CodePipeline 서비스로 이동해서 파이프라인 생성을 클릭해주자.

💥 파이프라인 이름을 지정해주고 다음으로 넘어갔다.

💥 프로젝트를 Github에 올려뒀으므로, 소스 공급자GitHub(버전 2)를 선택하고, GitHub에 연결을 클릭하여 연결해주자!

💥 연결 이름깃허브 아이디를 입력해주고, GitHub에 연결을 클릭하였다.

💥 정상적으로 연결되었으면 GitHub 앱에 검색창을 클릭하면 다음과 같이 연결되었음을 확인할 수 있을 것이다. (없으면 새 앱 설치를 클릭해서 연결해주자) 나온거! 선택해주고 연결 버튼을 클릭해주자!

💥 정상적으로 잘 연결되었으면 다음 화면과 같이 연결 준비 완료 상태로 뜰 것이다. 그럼 리포지토리 이름브랜치 이름을 배포하려는 프로젝트가 위치하는 곳에 해당하는 것으로 선택해주자.

💥 빌드 공급자AWS CodeBuild를 선택해주자. 리전아시아 태평양(서울)을, 프로젝트 이름은 CodePipeline에서 생성한 것으로 (처음에 입력해준 파이프라인 이름 포함된 것) 선택해주었다.
여기서, 환경 변수는 실습 연습용이라 건너뛰었는데, 실제 중요한 배포에서는 액세스 키 등과 같이 .env 파일에 포함되는 요소들도 입력해주어야 하는 것으로 배웠다. (메모)

💥 다음으로 넘어가자. 배포 공급자AWS ElasticBeabstalk으로 선택해준다. 리전은 위와 같이 아시아, 애플리케이션 및 환경 이름은 위에서 Elastic Beanstalk에서 생성해준 것으로 선택하면 된다.

💥 다음으로 넘어가면, 검토하고 파이프라인 생성을 클릭해주면 파이프라인이 생성된다.

💥 돌아와서 확인해보면 새로운 파이프라인이 생성된 것을 확인할 수 있다.

💥 해당 파이프라인을 클릭하여 들어가서 기다리면, Source, Build, Deploy가 성공하는 것을 확인하면 된다.


👩‍💻 배포 확인

그럼 이제 다시 Elastic Beanstalk 서비스의 환경 탭으로 넘어와서 해당 환경을 클릭하면 다음과 같은 화면이 뜨면 성공이다 (야호!!) 바로가기 버튼 (빨간색 버튼)을 누르면 배포된 url로 이동한다 ~~

타고 들어가서 url 매핑 테스트 해보면 됨 ㅎㅎㅎㅎ


추가로, 코드를 수정할 일이 생기면 수정하고 다시 Gihub로 push 보내면, 이 친절한 서비스는 자동으로 CI/CD 하여 서비스가 안정적으로 변경되고 지속될 수 있도록 한다.



🧡 6주차


리눅스나 운영체제(OS) 등과 같은 것을 공부하다보면, ROOT 계정으로는 로그인하지 않는 것을 권장하는 내용을 많이 접한 적이 있었다.

IAM 사용자가 이러한 느낌이다. AWS의 본 계정이 ROOT, IAM 사용자 계정을 권한이 제한된 계정이다. 특정 사용자에게 특정 권한만을 제공함으로써 보안을 높이는 것이라고 이해했다.


그럼 AWS에서 IAM 사용자를 추가해보자.


👩‍💻 IAM 사용자 생성

💥 AWS에서 IAM 서비스로 이동해준다.

💥 사용자 탭에서 사용자 추가를 클릭해주자.

💥 사용자 이름을 지정 및 입력해주고, 액세스 암호-프로그래밍 방식 액세스를 선택해주었다. 그럼 추가 입력창이 뜨는데, 사용자 지정 비밀번호로 비밀번호를 입력해주고, 비밀번호 재설정 필요에 체크해주었다. (이는 해당 계정 사용자가 로그인 했을 때, 초기에 비밀번호 변경을 권유하는 창이 뜨도록 한다.)

💥 기존 그룹을 선택해도 되고, 그룹 생성을 클릭하여 그룹을 생성한 후 생성한 그룹을 선택해도 된다. (생성하고 있는 사용자가 소속할 그룹을 선택하는 과정)

💥 다음으로 넘어가면 태그 추가 탭이 나오는데, 추가하지 않고 다음으로 넘어갔다.

💥 마지막 과정에서 전체적으로 검토하고 사용자 추가 버튼을 클릭해준다.

💥 그럼 .csv 파일을 다운로드 받을 수 있는데, 받아서 확인해보면 링크가 포함되어 있다. 그 링크를 통해 접속하여, 해당 계정으로 로그인 및 사용한다.

💥 그리고 다시 사용자 탭으로 돌아오면 생성한 사용자가 추가된 것을 확인할 수 있다.

끝 !!



🙇‍♀️ Feeling


먼저 무중단 배포는 세미나에서 배운 PM2 밖에 몰랐는데, Elastic Beanstalk라는 서비스를 통해서도 간단하게 가능하다는 것을 배울 수 있었다. 5주차에서는 허둥지둥 따라가다가 결국 실패해서 으앙 어렵다~~ 했는데 6주차에서 우리 조 "그저 빛" 님의 지도 하에 다시 따라가니 성공하고 뭐야 싶네~~ 로 바껴버린 갈대같은 마인드 ㅋㅋㅋㅋ 성공하니까 직접 접속해서 url 매핑도 성공하고 뿌듯했다 😊

또 IAM 사용자는 AWS에서 사용자를 추가하는 기능이 있는 것은 알았지만, 이게 권한 제한이 있고 보안을 위해서인 그런 기능 사용 용도를 처음 깨달았다..! 만드는 과정이 어려운 것은 아니었지만 중요한 이론을 배울 수 있었다 !!

profile
쏘's 코딩·개발 일기장

0개의 댓글