본문 바로가기
eomoff
Dev Log/Projects

[AWS 배포기 #0] 배포를 내가 해보려고함 - 외부API키 발급

eomoff 2026. 9. 10. 00:33

 

4~5주짜리 팀 프로젝트가 끝났음. 나는 도메인 CRUD, 외부 API 연동(OpenFeign), Redis, Kafka를 맡았음.

끝나고 제일 아쉬운 건 배포를 한 번도 안 해봤다는 것임. 인프라를 한 명이 맡으면 나머지는 배포를 배울 기회가 없음.

서비스는 잘 돌아감. 그런데 그건 팀원이 만든 환경이라, 나는 그게 어떻게 떠 있는지 설명을 못 함. 그래서 팀 레포를 fork해서 내 AWS 계정에 처음부터 다시 올려보려고 함.

AWS 콘솔을 열기 전에 도메인 없이 지금 받을 수 있는 외부 키 6개부터 받아둠.

배포할 스택

영화·드라마·스포츠 중 뭘 볼지 고민하는 사람을 위한 콘텐츠 큐레이션 서비스임.

분류 스택
언어·프레임워크 Java 17 · Spring Boot 3.5 · Spring Security · Spring Batch
데이터 PostgreSQL 16 · Spring Data JPA · QueryDSL · Redis 7
실시간·메시징 WebSocket(STOMP) · SSE · Kafka 3.9 · Elasticsearch 8.18
인증·외부 API JWT · OAuth2(Google, Kakao) · TMDB · The Sports DB
인프라 AWS ECS · ECR · S3 · Docker · Nginx · GitHub Actions

AWS 리소스는 아직 하나도 없음. 여기서 다루는 건 표의 인증·외부 API 줄뿐임.

받을 외부 API 목록

서비스 받는 값
TMDB API 키
The Sports DB API 키
Google 클라이언트 ID · 보안 비밀번호
Kakao REST API 키 · 클라이언트 시크릿

구글과 카카오는 로그인 후 돌아올 주소(리디렉션 URI)를 등록해야 함. 도메인이 없어도 localhost로 먼저 등록하고, 도메인이 생기면 같은 칸에 추가하면 됨. 그래서 지금 받을 수 있음.


TMDB · The Sports DB

TMDBthemoviedb.org에 가입하고 API 발급을 신청하면 됨.

The Sports DBthesportsdb.com 문서에 있는 Free Sports API를 보면 됨. 무료는 응답 개수가 매우 적음.


Google 로그인

console.cloud.google.com에서 발급함. 동의 화면을 먼저 채우고, 그다음 클라이언트를 만들어야 키가 나옴.

동의 화면

  1. 프로젝트 생성 → 만든 프로젝트 선택
    • 이름은 아무거나 상관없음
    • 상위 리소스는 개인 계정이면 조직이 없어서 비워두면 됨
  2. API 및 서비스 → OAuth 동의 화면
    • "아직 구성되지 않음"과 함께 시작하기 버튼이 보이면 그걸 누름
  3. 앱 정보
    • 앱 이름: 로그인할 때 사용자한테 그대로 보이니까 서비스 이름으로 넣음. Google이 들어가면 거부됨
    • 지원 이메일: 드롭다운에서 내 계정 고름
  4. 대상 → 외부
    • 내부는 Workspace 조직 계정 전용이라 개인 계정은 아예 못 고름
  5. 연락처 정보 → 내 이메일 직접 입력
    • 사용자한테 보이는 게 아니고 구글이 공지 보낼 때 쓰는 주소임

클라이언트 만들기

클라이언트 → 클라이언트 만들기에서 채우는 칸은 네 개임.

넣을 값
애플리케이션 유형 웹 애플리케이션
이름 아무거나. 콘솔에서 구분하는 용도라 사용자한테는 안 보임
승인된 JavaScript 원본 비워둠. 브라우저에서 구글 SDK를 직접 부를 때 쓰는 칸인데, 이 앱은 서버가 처리함
승인된 리디렉션 URI http://localhost:8080/login/oauth2/code/google

리디렉션 URI는 내가 짓는 값이 아님. 스프링 시큐리티가 주소/login/oauth2/code/제공자이름 형태로 만들어주는 거라, 뒤에 google만 바뀜.

입력란은 URI 추가 버튼을 눌러야 생김.

도메인이 생기면 같은 칸에 https://도메인/login/oauth2/code/google을 하나 더 추가하면 됨. localhost는 안 지워도 됨.

보안 비밀번호는 만들 때 한 번만 보임. 만들기를 누르면 클라이언트 ID와 보안 비밀번호가 나옴.

 

JSON을 받아두거나 그 자리에서 바로 복사해둬야 함.

처음엔 테스트 상태임

대상을 외부로 만들면 앱이 처음엔 테스트 상태임. 테스트 사용자로 등록한 계정만 로그인되고, 리프레시 토큰도 7일이면 만료됨.

도메인을 붙이고 실제로 열 때 프로덕션으로 게시하면 됨. email이랑 profile만 쓰면 구글 검수는 없음.


Kakao 로그인

developers.kakao.com에서 카카오 계정으로 로그인해서 발급함. 설정은 네 군데를 거침.

앱 추가

앱 → 애플리케이션 추가하기에서 채우는 칸은 네 개임.

넣을 값
앱 이름 서비스 이름. 로그인 동의 화면에 그대로 보임
회사명 개인이면 본인 이름이나 닉네임. 동의 화면에 "○○○에서 다음 정보를 요청합니다"로 보임
카테고리 아무거나. 기능에 영향 없고 나중에 바꿀 수 있음
앱 대표 도메인 비워둠. 카카오톡 공유·스크랩용이라 로그인과 무관함

카카오 로그인 켜기

앱 → 제품 설정 → 카카오 로그인 → 일반에서 사용 설정을 ON으로 바꿈. OFF면 로그인 호출 자체가 거부됨.

같은 화면의 OpenID Connect는 OFF로 둠. ID 토큰을 추가로 받는 기능인데, 이 앱은 닉네임과 프로필 사진만 받아서 필요 없음.

리다이렉트 URI와 시크릿

앱 → 앱 설정 → 플랫폼 키로 가면 REST API 키, JavaScript 키, 네이티브 앱 키 세 개만 나열돼 있음. 리다이렉트라는 단어가 아예 없어서 여기서 제일 헤맸음.

 

REST API 키를 클릭해서 상세로 들어가야 리다이렉트 URI와 시크릿이 나옴.

상세 화면에서 보는 칸은 다섯 개임.

 

  • REST API 키 — 클라이언트 ID로 쓰는 값. JavaScript 키 아님
  • 카카오 로그인 리다이렉트 URIhttp://localhost:8080/login/oauth2/code/kakao
  • 비즈니스 인증 리다이렉트 URI — 다른 용도라 건드리지 않음
  • 호출 허용 IP 주소 — 비워둠
  • 클라이언트 시크릿 — 여기 있는 코드가 시크릿임

리다이렉트 주소 규칙은 구글과 같고, 끝이 kakao로만 바뀜.

시크릿은 꼭 받아야 함. 이 앱은 토큰을 요청할 때 시크릿을 같이 보내는 방식으로 설정돼 있음. 시크릿은 기본으로 활성화돼 있어서 따로 켤 건 없고, 활성화 표시가 있으면 ON인지만 봄.

동의항목

앱 → 제품 설정 → 카카오 로그인 → 동의항목에서 개인정보 영역의 닉네임프로필 사진만 설정함.

동의 단계는 네 가지 중에 고름.

동의 단계 설명
필수 동의 카카오 로그인 시 사용자가 필수로 동의해야 함
선택 동의 동의하지 않아도 로그인이 완료됨
이용 중 동의 로그인 시점이 아니라 항목이 필요한 시점에 동의를 받음
사용 안 함 동의를 요청하지 않음

둘 다 필수 동의로 둠. 이 앱은 로그인하는 순간 닉네임과 프로필 사진으로 회원을 만들어서, 그 시점에 값이 확실히 와야 함.

 

동의 목적도 필수 입력임. 로그인 동의 화면에 그대로 보이는 문구라 짧게 씀.

  • 닉네임 → 회원 가입 및 서비스 내 프로필 표시
  • 프로필 사진 → 서비스 내 프로필 이미지 표시

이메일, 성별, 연령대 같은 나머지 항목은 건드리지 않음. 카카오는 이메일 동의항목을 쓰려면 비즈니스 앱으로 전환해야 하는데, 이 앱은 애초에 이메일을 안 받음.