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 두 번째 빌드 오류 해결 (5편)
·
AWS/CodePipeline, CICD
이번에는 PRE_BUILD 단계에서 발생한 빌드오류를 해결해 보자 1. 빌드 오류 파악하기 1-1. 오류 파악 열심히 S3 관련 문제를 해결했더니 이번에는 아래와 같은 PRE_BUILD 단계에서 에러가 발생했다. COMMAND_EXECUTION_ERROR: Error while executing command: aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin {ecr 리포지토리 주소}. Reason: exit status 1 1-2. 빌드 로그 분석하기 조금 더 정확히 보기위해 빌드 로그를 확인했다. 아무래도 이번에는 IAM 권한관련 에러인것 같다. (ECR 권한에러) [Cont..
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 배포 및 검토 (3편)
·
AWS/CodePipeline, CICD
이번에는 2편에 이어서 Step4 배포 스테이지와 Step5 검토를 작성한다. 1. Step4: 배포 스테이지 추가 1-1. 배포 스테이지 추가 Step3에서 다음을 누른다면 아래와 같은 배포 스테이지 추가 화면으로 이동된다. 1-2. 배포 공급자 선택 배포 공급자 하단의 박스를 눌러서 Amazon ECS를 선택해 준다. 1-3. 배포 스테이지 추가하기 이전에 만든 ECS 클러스터를 선택하고 서비스도 선택한다. 여기서 중요한게 이미지 정의 파일인데 이것때문에 배포시 오류가 발생했다. (배포단계를 설명할 때 오류 해결사항을 적도록 하겠다.) 2. 검토 2-1. 검토하기 이 단계에서는 지금까지 작성한 내용들을 하나하나 검토한다. 4단계까지 전부 확인했을때 문제가 없다면 하단의 "파이프라인 생성" 버튼을 누른..