Spring Boot 3 버전과 SNS, SQS 연동하기 지난 포스팅에서는 SNS-SQS를 연동할 때 Amazon console을 이용했다. 이번 글에서는 Spring Boot 3 버전에서 SNS로 이벤트를 발행하고 SQSListener로 메시지를 받아보자! 1. SpringBoot 설정 (build.gradle, application.yml) 1. build.gradle 코드 추가 스프링 부트 버전 3과 호환되는 의존성으로 적어준다. // AWS implementation platform("io.awspring.cloud:spring-cloud-aws-dependencies:3.0.1") implementation 'io.awspring.cloud:spring-cloud-aws-starter-sqs' ..
전체 글
하다보니 재미있는 AI에 빠져있는 평양냉면7 문의사항: ysoil8811@gmail.comSNS, SQS 생성하기 1. SNS 생성하기 1. AWS SNS 페이지로 이동하자. AWS 콘솔창에서 'SNS'를 검색해서 이동하자. 2. SNS 페이지에서 "주제 생성" 영역에서 '주제 이름'을 작성하고 [다음 단계]를 클릭한다. 나는 테스트 용도로 'sns-test'로 작성했다. 3. 그럼 "주제 생성" 페이지로 이동한다. "세부 정보"에서 "유형"을 선택한다. FIFO 선택 경우 중복 메시지 없음: FIFO 주제는 메시지의 중복 전달을 허용하지 않는다. 순서 보장: 메시지는 정확히 한 번씩, 전송된 순서대로 처리된다. 제한된 처리량: 표준 주제에 비해 처리량이 낮으며, 특정 제한이 있다. 보다 엄격한 메시지 필터링: 메시지 필터링이 표준 주제보다 더 엄격하다. 사용 사례: 금융 거래 처리, 주문..
이해하기 쉬운 CORS 및 API 개발 안내서 (Access-Control-Allow-Headers) 웹 개발을 하다 보면 'CORS'라는 용어를 자주 접하게 된다. CORS 관련 에러도 자주 마주치다 보니 한번 제대로 이해해 보는 시간을 가져보자! CORS는 Cross-Origin Resource Sharing의 약자로, 한 출처에서 불러온 웹 페이지가 다른 출처의 리소스와 상호 작용할 수 있게 하는 보안 메커니즘이다. 이 글에서는 CORS가 왜 중요한지, 어떻게 작동하는지, 그리고 실제 API 개발에 어떻게 적용되는지를 알아보자! 1. 출처(Origin)란 무엇인가? 웹에서 "출처"는 리소스가 어디에서 왔는지를 식별하는 중요한 개념이다. 출처는 URL의 세 가지 주요 구성 요소인 프로토콜(예: ht..
IAM MFA 설정하기 1. AWS 콘솔에 로그인하고 우측 로그인 계정을 클릭해 "보안 자격 증명" 페이지로 이동한다. 2. 아래와 같이 "내 보안 자격 증명" 페이지로 이동된다. 여기서 [MFA 디바이스 할당] 버튼을 클릭한다. 3. MFA 디바이스 할당 1단계 페이지로 이동된다. 3-1. 1단계에서 디바이스 이름을 작성한다. 나는 "내 이니셜-iphone"으로 작성했다. 3-2. 그리고 MFA device를 선택한다. 나는 모바일로 인증하기 위해 "Authenticator app"을 선택했다. 그리고 [다음]을 클릭한다. 4. 2단계로 이동한다. 나는 Google Authenticator 어플을 사용했다. 앱 설치하고 실행 후 브라우저 화면에서 "QR 코드 표시" 링크를 클릭하면 QR코드가 화면에 노..
ECS, ALB - 동적 포트 매핑 활성화와 DNS 접속 ECS를 동적 포트 매핑을 활성화하고 ALB DNS를 이용해 접속해 보자. 이전 포스팅에서 ECS 태스크 정의에서 호스트 포트와 컨테이너 포트를 전부 8081로 설정해 주고, 재 배포가 진행되면 8081 포트가 이미 사용 중이라는 에러를 만났었다. 그래서 호스트 포트를 0으로 설정해서 동적 포트를 활성화시켰더니 포트 충돌 에러가 해결됐다. 그리고 이름 확인하기 위해 ALB DNS로 접속해 확인해 보자 동적 포트 매핑 ECS에서 호스트 포트를 0으로 설정하는 것은 "동적 포트 매핑"을 활성화하는 것이다. 이렇게 설정하면, ECS는 컨테이너가 시작될 때 사용 가능한 포트를 자동으로 할당받는다. 이 방법은 여러 인스턴스에서 같은 컨테이너를 실행할 때 포..
ECS 배포 실패해도 서버가 다운 안되는 이유 - ECS 서비스 롤링 업데이트 방식 ECS와 Secrets Manager를 연동해서 환경 변수 설정하는 작업을 하다가 Spring Boot 기동에 실패해도 DNS로 접속하면 접속이 되는 모습을 확인했다. Spring Boot의 기동이 실패해도 서버가 다운되지 않는 이유를 함께 살펴보자. AWS ECS는 "롤링 업데이트(rolling update)"라는 방식을 사용한다. 이것은 서비스를 업데이트할 때 모든 태스크(컨테이너 인스턴스)를 한 번에 교체하는 게 아니라, 단계적으로 새로운 버전으로 교체하는 방법이다. 이 과정에서 중요한 두 가지 설정이 있다: minimumHealthyPercent (최소 실행 작업 비율) 이 값은 서비스가 정상적으로 작동하기 위해 ..
Secrets Manager 이용해서 환경변수 적용하기(IAM 정책, Spring Boot 코드 수정) 지난 포스팅에서 ECS 태스크에서 Secrets Manager에 접근할 수 없어서 태스크 정의가 생성되지도 않았다. 이번 포스팅에서 IAM 정책을 추가해 주고 에러를 해결해 보자. 1. IAM 정책 연결해 주기 ECS 태스크가 Secrets Manager에 접근할 수 있도록 ecsTaskExecutionRole 역할에 권한을 부여해야 한다. 1. IAM > 역할 화면에 들어가서 내게 필요한 ecsTaskExecutionRole을 검색한다. 2. 역할 이름을 클릭해서 들어가면 나에게 필요한 'SecretsManagerReadWrite' 권한이 없다. 현재 ecsTaskExecutionRole에 연결된 권..
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..