AWS

· AWS
ECS 배포 실패해도 서버가 다운 안되는 이유 - ECS 서비스 롤링 업데이트 방식 ECS와 Secrets Manager를 연동해서 환경 변수 설정하는 작업을 하다가 Spring Boot 기동에 실패해도 DNS로 접속하면 접속이 되는 모습을 확인했다. Spring Boot의 기동이 실패해도 서버가 다운되지 않는 이유를 함께 살펴보자. AWS ECS는 "롤링 업데이트(rolling update)"라는 방식을 사용한다. 이것은 서비스를 업데이트할 때 모든 태스크(컨테이너 인스턴스)를 한 번에 교체하는 게 아니라, 단계적으로 새로운 버전으로 교체하는 방법이다. 이 과정에서 중요한 두 가지 설정이 있다: minimumHealthyPercent (최소 실행 작업 비율) 이 값은 서비스가 정상적으로 작동하기 위해 ..
· AWS
Secrets Manager 이용해서 환경변수 적용하기(IAM 정책, Spring Boot 코드 수정) 지난 포스팅에서 ECS 태스크에서 Secrets Manager에 접근할 수 없어서 태스크 정의가 생성되지도 않았다. 이번 포스팅에서 IAM 정책을 추가해 주고 에러를 해결해 보자. 1. IAM 정책 연결해 주기 ECS 태스크가 Secrets Manager에 접근할 수 있도록 ecsTaskExecutionRole 역할에 권한을 부여해야 한다. 1. IAM > 역할 화면에 들어가서 내게 필요한 ecsTaskExecutionRole을 검색한다. 2. 역할 이름을 클릭해서 들어가면 나에게 필요한 'SecretsManagerReadWrite' 권한이 없다. 현재 ecsTaskExecutionRole에 연결된 권..
· AWS
Secrets Manager 이용해서 환경변수 적용하기 Spring Boot와 RDS를 직접 연동까지는 성공했다. 그리고 나는 모든 소스를 GitHub에 올리기 때문에 직접 데이터베이스 접속 정보가 코드상에 노출되면 안 된다. 이 문제를 해결하기 위해 AWS Secrets Manager 서비스를 이용해 중요한 접속 정보를 코드에 직접 포함시키지 않고 환경 변수를 통해 프로젝트를 실행시켜 보자. 1. Secret 생성하기 1. AWS Secrets Manager 접속하기 https://aws.amazon.com/ko/secrets-manager/ 클라우드 암호 관리 - AWS Secrets Manager - AWS AWS Secrets Manager는 수명 주기에 걸쳐 데이터베이스 보안 인증 정보, API..
· AWS
SpringBoot와 PostgreSQL 연동하기 지난 포스팅에서 RDS PostgreSQL을 생성했다. 이제 Spring boot에 Database를 연결해 보자. 1. build.gradle 파일을 수정해 준다. dependencies { .. 기존 코드들 // postgreSQL runtimeOnly 'org.postgresql:postgresql' } 2. 그리고 우측 상단에 코끼리 모양 버튼을 눌러줘야 한다. (Load Gradle Changes) 2. application.yml 파일을 수정해 준다. url 부분에 엔드 포인트는 본인이 생성한 RDS > 데이터베이스 개요에 [연결 및 보안] 탭에서 "엔드포인트"를 확인하면 된다. spring: datasource: driver-class-nam..
· AWS
PostgreSQL 생성하기 1. RDS PostgreSQL 생성하기 1. AWS RDS 페이지 접속하기 https://aws.amazon.com/ko/rds/ 데이터베이스 관리 시스템 | 관계형 RDS | Amazon Web Services 닫기 이 다이어그램은 Amazon Relational Database Service(RDS)의 주요 기능과 이점을 보여줍니다. 왼쪽에서 오른쪽으로 세 개의 섹션이 표시되어 있습니다. 첫 번째 섹션에는 노트북 그림이 있습니다. 첫 aws.amazon.com 2. RDS 대시보드 접속해서 [데이터베이스 생성] 버튼 클릭한다. 3. 데이터베이스 생성 방식 선택에서 '표준 생성'을 선택한다. 4. 엔진 옵션은 'PostgreSQL'을 선택한다 5. 엔진 버전은 기본으로 선..
· AWS
CodePipeline - 배포 오류 해결 (S3 거치지 않고 ECR에서 이미지 가져오기) 지난 게시글에서 GitHub main 브랜치에 push가 되면 CodePipeline이 trigger 되고 CI/CD가 적용되는 모습을 봤다. 중간에 Build 단계에서 오류가 났던걸 해결했다. 그리고 이제 Deploy 단계에서 발생하는 에러들을 해결해 보자. 1. 배포 Deploy 오류 발생 (S3 관련 오류) 1-1. Build 단계가 잘 넘어가더니 이번엔 Deploy 단계에서 에러가 발생했다. 1-2. 아래와 같은 오류가 발생했다. Unable to access the artifact with Amazon S3 object key 'recipia-member-git-n/BuildArtif/IejGhqN' lo..
· AWS
CodePipeline - 빌드 오류 해결 (IAM 역할에 권한 정책 연결) CodePipeline에서 겨우겨우 Build 단계에서 DOWNLOAD_SOURCE 에러를 해결했더니 이제 Build 단계에서 PRE_BUILD 관련 에러가 터졌다. 해당 에러를 해결하는 과적을 적어보겠다. 1. CodePipeline Build 단계 오류 발생 (PRE_BUILD 단계) 1-1. 이전 과정에서 에러를 해결하고 다시 파이프라인을 돌려보았다. S3 권한을 수정하고 [변경 사항 릴리스]를 클릭했다. 1-2. 빌드하는 곳으로 이동해서 하단의 [세부 정보]를 클릭한다. 1-3. 빌드의 “세부 정보”를 확인했더니 이번에는 기존에 발생했던 DOWNLOAD_SOURCE관련 에러는 사라졌다. 1-4. 대신 PRE_BUILD 단..
· AWS
CodePipeline 빌드 오류 해결 (S3 접근 권한) 지난번 포스팅에서 CodePipeline 파이프라인을 생성하고 동작시켰는데 계속 빌드 단계에서 오류가 났다. 해당 오류들을 하나하나씩 해결해 가는 과정을 작성해 보도록 하겠다. 1. CodePipeline 빌드 오류 발생 1-1. 빌드에서 오류가 발생해서 확인하기 위해 "CodeBuild에서 보기" 링크를 클릭한다. 1-2. 빌드 상태의 하단에 “단계 세부 정보” 목록을 클릭해서 확인했다. 1-3. DOWNLOAD_SOURCE단계에서 아래와 같은 오류가 발생했다. CLIENT_ERROR: RequestError: send request failed caused by: Get "": dial tcp #@$@#$:443: i/o timeout for..
평양냉면7
'AWS' 카테고리의 글 목록 (2 Page)