AWS Secrets & ECS SpringBoot 설정 (1): Secret 생성
·
AWS/ECS, ECR
이전 포스트에서는 로컬 환경에서 RDS를 SpringBoot 프로젝트와 연결하는 데 성공했다. 이번에는 AWS의 CodePipeline을 CI/CD구축을 해서 ECS로 배포에 성공한 SpringBoot 프로젝트의 tomcat에 이 RDS(postgreSQL)를 연결해 주도록 하자 이 포스트에서는 우선 Secret을 생성하는 방법에 대해서 소개한다. 1. AWS Secrets Manager를 사용하는 이유 1-1. Secrets Manager를 사용하는 이유 AWS Secrets Manager를 사용하는 이유는 보안 때문이다. 예를 들어, GitHub 같은 공개된 저장소에 데이터베이스 접속 정보나 API 키 같은 민감한 정보를 yml 파일에 그대로 넣어두면, 누구나 그 정보를 볼 수 있게 되고, 이는 심각..
AWS - ALB를 적용시킨 ECS의 동적 포트 할당관계 동작원리
·
AWS/ECS, ECR
ALB를 적용시킨 ECS의 동작원리 이전 포스트에서 배포를 완료하고 실행했는데 ALB의 DNS주소 뒤에 8081포트를 입력하고 접속하니 접속이 불가능했는데 아무런 포트를 입력하지 않고 접속하니 잘 동작했다. 이에 ALB(Application Load Balancer)를 적용시킨 ECS(Elastic Container Service)의 동작원리를 알아보고 이 포스트를 작성한다. 1. ALB 리스너 포트 설정 ALB의 리스너 포트를 80으로 설정하면, ALB는 클라이언트로부터 80 포트에서 들어오는 요청을 수신한다. 클라이언트는 이 경우 ALB의 DNS 주소만 입력하여 접속할 수 있다 (예: http://ALB-DNS-Address/). 아래와 같이 80 포트를 ALB의 리스너 포트로 설정한 상황이다. 2...
AWS CI/CD: CodePipeline 배포 최종 점검 (8편)
·
AWS/CodePipeline, CICD
저번 포스트에서는 Deploy단계에서 S3에서 이미지를 불러와서 오류가 발생했던 부분을 수정했었다. 이번에는 그 다음에 새롭게 발생한 ECS 실행 오류를 해결한다. 1. 배포오류 (Memory 부족 문제) 1-1. 오류 파악 저번 포스트에 이어서 빌드를 진행했더니 아래와 같이 배포단계에서 무한로딩이 발생했다. 계속 진행중이 떠서 답답해서 ECS 클러스터에 들어가서 확인해 봤다. 아래와 같이 배포에서 실패한 작업이3번이었다. 1-2. 이벤트 메시지 확인 이벤트의 메시지를 확인해봤더니 다음과 같았다. "Amazon ECS가 recipia-member-service 서비스의 요구 사항을 충족하는 컨테이너 인스턴스를 찾지 못했음을 나타낸다." 특히, 가장 근접한 매치인 컨테이너 인스턴스 15ce592c56944..
AWS CI/CD: CodePipeline 배포 오류 수정 (7편)
·
AWS/CodePipeline, CICD
열심히 빌드오류를 수정해서 고쳤다. 근데 근데!! 이번에는 Deploy 배포단계에서 오류가 생겼다 당장 해결해보도록 하자 1. 배포 오류 파악하기 1-1 .오류 파악 아래와 같이 Deploy에서 빨갛게 실패라고 나왔다... 1-2. 아래의 오류가 발생했다. Unable to access the artifact with Amazon S3 object key 'recipia-member-git-n/BuildArtif/IejGhqN' located in the Amazon S3 artifact bucket 'codepipeline-ap-northeast-2-555139989952'. The artifact object key is not found. 1-3. 오류 해석 이 오류는 AWS CodePipeline..
AWS CI/CD: CodePipeline 세 번째 빌드 오류 해결 (6편)
·
AWS/CodePipeline, CICD
저번 포스트에서는 PRE_BUILD단계의 오류를 해결했다. 이번 포스트에서는 그 다음 BUILD 단계에서 발생한 오류를 해결해 보자 1. BUILD단계의 오류 파악하기 1-1. 오류 파악 PRE_BUILD오류를 해결했더니 이번에는 BUILD 에서 오류가 발생했다. 오류 로그를 바로 확인했다. 1-2. 오류 로그 확인 #5 [2/2] ADD build/libs/member-0.0.1-SNAPSHOT.jar member-api.jar #5 ERROR: failed to calculate checksum of ref moby::z5ufilzi940gpc8hp3lj0ypj8: failed to walk /var/lib/docker/tmp/buildkit-mount237631583/build/libs: lstat..
AWS CI/CD: CodePipeline 첫 번째 빌드 오류 해결 (4편)
·
AWS/CodePipeline, CICD
이번에는 3편에서 만든 CodePipeline을 실행하면 발생하는 오류를 해결해보도록 하자 1. 빌드 오류사항 파악 1-1. 오류 발생 잘 만들어서 동작시켰더니 빌드에서 오류가 발생했다. 이를 파악하기 위해 실행 실패 하단의 "CodeBuild에서 보기"를 클릭했다. 1-2. 오류 파악하기 "빌드 상태" 하단에 있는 “단계 세부 정보” 목록을 클릭해서 오류를 확인했다. DOWNLOAD_SOURCE단계에서 아래와 같은 오류가 발생했다. CLIENT_ERROR: RequestError: send request failed caused by: Get "https://codepipeline-ap-northeast-2-555139989952.s3.ap-northeast-2.amazonaws.com/Recipia-..
AWS CI/CD: CodePipeline 빌드 스테이지 추가 (2편)
·
AWS/CodePipeline, CICD
지난번 Step2에 이어서 빌드 스테이지를 추가한다. 1. Step3. 빌드 스테이지 추가 1-1. Step3는 빌드 스테이지 추가이다. 아래와 같은 화면이 나올것이다. 1-2. 빌드 공급자 선택 Jenkins가 아니라 CodeBuild를 사용할것이기 때문에 AWS CodeBuild를 선택한다. 1-3.프로젝트 생성하기 AWS CodeBuild를 선택하면 아래와 같은 화면이 나오는데 여기서 "프로젝트 생성" 버튼을 눌러서 만들어주자 1-4. CodeBuild 빌드 프로젝트 생성하기 아래와 같이 CodeBuild의 빌드 프로젝트를 생성하는 팝업창이 나올것이다. 여기서 먼저 프로젝트의 이름과 설명을 작성한다. 1-5. 환경 설정하기 하단으로 스크롤하면 "환경" 설정이 나온다. 여기서 "관리형 이미지"를 선택..
AWS CI/CD: CodePipeline 기본 설정 (1편)
·
AWS/CodePipeline, CICD
CodePipeline 시리즈는 지금까지 열심히 만든 ECR, ECS를 활용하여 CI/CD를 구현해 보는 시리즈이다. CodePipeline으로 CI/CD를 구축하는 과정에서 많은 우여곡절이 있었지만 이를 모두 순서대로 기록하기에 글을 다 읽어보면서 필요한 부분만 따라하고 정보를 가져갔으면 좋겠다. 사전사항으로는 ECR을 생성하고 ECS 서비스까지 한번 성공적으로 기동시킨다음 CodePipeline을 만드는 것을 추천한다. ECR 생성하기 2023.10.27 - [AWS] - AWS ECR로 Docker 이미지 관리하기: 완벽 가이드 AWS ECR로 Docker 이미지 관리하기: 완벽 가이드 이번 포스트에서는 ECS를 사용하기 전에 꼭 필요한 Docker 이미지를 관리해주는 DockerHub의 AWS버전..