본문 바로가기
반응형

개발/AWS46

AWS ECR SpringBoot Docker Image Push AWS에서 제공하는 Image Repository에 SpringBoot로 작성된 Docker Image를 Push하는 방법을 정리해본다. 1. Dockerfile 작성 먼저 간단한 SpringBoot 어플리케이션에 Dockerfile을 작성한다. Dockerfile 내용은 아래와 같이 작성한다. FROM adoptopenjdk/openjdk11:jdk-11.0.11_9-alpine-slim ARG JAR_FILE_PATH=build/libs/*.jar COPY ${JAR_FILE_PATH} app.jar ENTRYPOINT ["java", "-jar", "app.jar"] 참고로 베이스 이미지를 'FROM adoptopenjdk/openjdk11'로 설정을 했을 때와 'FROM adoptopenjdk/o.. 2022. 6. 1.
AWS CloudWatch Logs 적재(CWAgent) 지표를 통한 모니터링이 아닌 "로그"를 통한 모니터링을 지원 CloudWatch Logs 구성 로그 이벤트 - 독립적인 이벤트로 볼 수 있는 로그 모음 - ex. 클라이언트 요청부터 응답까지 쌓인 여러 줄의 로그를 하나의 이벤트로 볼수 있음 로그 스트림 - 동일한 소스에서 기록된 로그 이벤트들을 시간순으로 모아둔 스트림 로그 그룹 - 여러 로그 스트림을 하나로 모아둔 곳. - ex. 여러 인스턴스에서 발생한 로그들을 모아둔 그룹 CloudWatch Agent를 통한 Nginx Log 적재 * 기존에는 CloudWatch Logs Agent가 별도로 존재했지만 최근에는 CloudWatch Agent가 지표 및 로그를 동시에 처리 할 수 있음 - CloudWatch 로그그룹에서 '로그 그룹 생성' 클릭 - .. 2022. 3. 12.
AWS CloudWatch Alarm(경보) 설정 CloudWatch Alarm 테스트 - CloudWatch에서 '경보 생성' 버튼 클릭 - '지표선택' 클릭 - 테스트로 ELB의 'RequestCount' 를 선택 함 - 지표가 RequestCount(요청량)이니깐 통계를 '합계' 변경하고 다음 - 조건에 10 보다 큼 설정, 데이터포인트는 '1/1' 선택(= 5분내에 RequestCount가 10이 넘는 경우가 1번 이상(1/1) 발생하면 알림 발생 의미) - SNS 주제 설정 및 알림 수신할 이메일 입력, '경보상태'와 '정상' 상태 2개로 구성했음 - 이름 간단히 입력하고 생성 - 수신 이메일로 등록했던 메일을 확인해보면 메일이 왔고, 이메일 Confirm 진행 - ALB를 통해서 요청날려보니 아래와 같이 'ALARM(경보)' 상태 메일 옴 -.. 2022. 3. 12.
AWS CloudWatch Agent 사용(EC2) CloudWatch로 EC2인스턴스에 대한 기본적인 지표들(CPU, 네트워크I/O, 디스크 R/W 등)은 확인 가능하지만, Memory, 디스크 사용량은 기본적으로 제공하지 않음. 이 지표들은 OS내에서만 확인이 가능한데, AWS에서 지표를 위해 사용자들의 OS에 임의로 접근이 불가능 하기 때문이라고 한다. 이 정보들은 CloudWatch Agent를 통해서 기록 가능 CloudWatch Agent로 EC2 메모리, 디스크 사용량 지표 기록 1. EC2 Role(역할) 생성 - IAM에서 '역할만들기' 클릭해서 'AWS서비스'의 'EC2' 선택하고 다음 - 권한(Permission) 정책에서 "CloudWatchAgentServerPolicy" 선택하고 다음 - '역할 이름' 간단히 입력하고 생성 함 2.. 2022. 3. 12.
AWS CloudWatch 사용자 지정 지표(Custom Metrics) 생성 Custom Metrics(사용자 지정 지표) AWS에서 제공되는 지표가 아닌 사용자 임의로 생성하는 지표 AWS CLI 및 SDK를 통해서 기록 가능 AWS CLI를 통한 Custom Metrics 생성 방법 - 기본 EC2 생성 및 접속해서 "aws configure" 설정, 해당 계정은 [CloudWatchEventsFullAccess] 정책을 가지고 있음 - test 디렉토리 및 test.json 파일 생성 mkdir test vi test.json - 아래 데이터 test.json 파일에 입력(출처: https://gist.github.com/deopard/76d334b9c4616c8e5e60429631c0f3b2) "Timestamp" 항목은 테스트하는 시점 2주이내로 변경 [ { "Metri.. 2022. 3. 11.
AWS Secrets Manager 개념 및 테스트 비밀값 관리 대부분 어플리케이션은 외부에 노출돼서는 안되는 비밀값을 갖고 있음(ex. 데이터베이스 접속정보, 서드파티 서비스 호출을 위한 액세스 키 등) 비밀값 관리 원칙 비밀값 유출가능성으로 비밀값은 버전 관리 시스템에 업로드되면 안됨 비밀값은 최소한의 인원만 알고 있어야 함 비밀값과 아닌 값은 분리해서 관리 필요 비밀값 관리 방법 배포 자동화 툴 - Jenkins, Chef, Ansible 같은 배포 자동화 툴들은 배포 시 서버 내 암호화된 값을 어플리케이션이 사용할 수 있게 저장할 수 있음 Vault(오픈소스) - 비밀값 암호화, API 접속을 위한 임시 토큰 발급, 키 롤링, 외부서비스(IAM, SSH, DB 등)에서 사용하는 권한 시스템 사용, 기록 감사, 암복호화 API 등 제공 - 어플리케이.. 2022. 3. 11.
AWS ALB, AutoScalingGroup 활용해서 Blue-Green 배포 테스트 Blue-Green 배포 대체 환경을 생성하여 점진적으로 트래픽을 전환하는 방식 로드밸런서의 설정(등록/해제) 변경으로 롤백이 빠름 배포 과정에서 요청량을 처리하는 인스턴스 개수가 줄지 않음 배포 과정에서 인스턴스의 수를 2배로 늘려야 함으로 배포준비 시간이 오래 걸림 Blue/Green 배포를 위해 일단 기존 환경인 Blue환경을 확인한 후 신규 버전인 Green 환경 구성하여 로드밸런서 설정을 진행한다. 기존 Blue환경 구성 확인 * 기존 환경 구성 참조: https://happy-jjang-a.tistory.com/70 - ASG에 "mytest-nginx-asg" 그룹과 로드밸런서에 대상 그룹 설정되어 있음 - 로드밸런서 설정: 리스너 HTTP:80 및 대상그룹 - 로드밸런서를 통한 기존 환경 .. 2022. 3. 9.
AWS Certificate Manager(ACM) 인증서 생성 HTTPS와 SSL/TLS 인증서 HTTPS는 HTTP 프로토콜의 보안이 강화된 버전 HTTP 프로토콜에 SSL/TLS 암호화 프로토콜을 이용해 전송되는 데이터의 암호화를 진행 HTTPS의 3가지 목적 - 기밀성: 주고 받는 내용에 대한 암호화 - 무결성: 주고 받는 내용을 변조하지 못하게 하는것 - 인증: 클라이언트가 통신하고 있는 서버의 신원을 확인 AWS Certificate Manager를 통해 무료로 발급 가능 Certificate Manager를 통한 인증서 생성 - ACM메뉴에서 오른쪽 '인증서 요청' 클릭(기존에 이미 가지고 있는 인증서가 있다면 '인증서 가져오기'로 등록 가능) - '퍼블릭 인증서 요청' 선택 - 서브도메인까지 포함하기 위해 사용하는 도메인 앞에 * 붙임(ex> *.myt.. 2022. 3. 8.
반응형