✅ 오늘 배운 것
드디어 api gateway를 porkbun 도메인과 연결하는 데 성공했다!!
이제 다음 스텝으로 넘어갈 수 있어서 뿌듯하기도 하고, 그동안 모호한 상황에서 나름의 우여곡절을 겪었기에 이를 기록해서 정리해 보려고 한다.
연결하는 과정에서 필요한 서비스들은 다음과 같다. 내가 개발했던 과정에서는 이 외의 다른 서비스와 상호작용하지는 않았었다.
- aws lambda
- aws api gateway
- aws certificate manager
- porkbun
맨 처음으로는 api lambda가 퍼블릭 엔드포인트에서 잘 동작하는지를 확인해 주어야 하겠다. 그래야 api gateway를 통해 연결했을 때에도 잘 동작할 것이니 말이다.
그 다음으로는 aws certificate manager의 issued(발급 완료)된 인증서가 필요하다. 나는 이 문제로 헤매기 전에 이미 발급받은 인증서가 있는 상태였어서 어떻게 내가 이걸 발급했었는지 잘 기억이 나지 않았다. 그래서 다른 블로그의 글을 가져와봤다. 여기서 '도메인 SSL/TLS 인증서 추가하기' 부분에 해당 과정이 잘 설명되어 있어서 복습하는 데 도움이 많이 되었다.
그 다음으로는 api gateway로 이동해서 custom domain을 생성해야 한다. api gateway 서비스로 이동하면 좌측 메뉴에 '사용자 지정 도메인 이름'이라는 메뉴가 있다. (영어로는 아마 'custom domain'이 포함된 메뉴일 것이다.) 여기로 들어오면 나의 경우는 이미 연결해 둔 도메인이 있어서 하나의 레코드가 나오고, 없으면 추가하면 된다. '도메인 이름 추가' 버튼을 누르면 된다.
그러면 추가 페이지가 나오는데, 나는 '도메인 이름'과 'ACM 인증서'를 할당해주는 것 빼고는 설정을 바꾸지는 않았었다. 이런 식으로 할당했다.
도메인 이름을 입력해주고, 특정 VPC 내부에서만이 아닌 일반 URL 엔드포인트로 접근이 가능하게 하는 것이 목적이므로 '퍼블릭'으로 할당해줬다.
'API 엔드포인트 유형'의 경우 사실 잘 모르는 부분이었다. 그래도 REST API만 지원하도록 했다가 나중에 일부 기능이나 API가 동작하지 않는 경우가 있을 수도 있다고 생각해서 '리전별(권장)'으로 입력했었다.
최소 TLS 버전과 상호 TLS 인증 역시 기본값으로 두었다. 마지막의 ACM 인증서의 경우는 드롭다운 메뉴를 클릭해서 맞는 인증서를 할당해주면 된다. 나의 경우는 앞에 dev라는 서브도메인을 할당하려고 했기 때문에 *(와일드카드)가 붙은 인증서를 선택해 주었다.
이 부분은 처음 Certificate Manager에서 인증서를 발급받을 때 결정해야 한다. 그냥 도메인(stepby.one)과 와일드카드가 붙은 도메인(*.stepby.one) 총 두 개에 대해 인증서를 발급하면 편했다.
그리고 '도메인 이름 추가'를 눌러주자. 그 다음에는 이렇게 만든 custom domain 설정을 기존에 잘 동작하던 api gateway와 연결해주면 된다. api gateway 서비스로 다시 들어가보면 방금 생성된 '사용자 지정 도메인 이름(custom domain)'이 생겼을 텐데, 이 도메인 이름을 눌러서 들어가보자.
그러면 하단에 'API 매핑' 섹션이 보이고 아직은 아무것도 없을 것이다. 여기서 'API 매핑 구성'을 눌러서 매핑을 추가해주자. 나의 경우는 미리 할당해 둔 상태라서 이렇게 'backend-dev'라는 api gateway가 custom domain에 연결되어 있다.
그러면 이렇게 현재 활성화된 api gateway들 중 어떤 것을 해당 custom domain에 연결할지를 선택할 수 있다. 원하는 api gateway를 선택해 주고 저장 버튼을 누르자.
이제는 porkbun 사이트로 다시 들어간 다음 구매한 도메인에 대해서 cname 레코드를 추가해 주어야 한다. porkbun 사이트에서 로그인을 하고 우상단 메뉴의 'account' 메뉴를 클릭하면 드롭다운으로 하위 메뉴들이 나오는데, 여기서 'Domain Management'를 클릭해주자. 그러면 본인이 구매한 도메인 레코드들을 볼 수 있다.
여기서 본인이 구매한 도메인 이름에 마우스를 올리면 'DNS | NS' 라는 레코드가 나오고 클릭할 수 있다. 우리는 이미 연결된 도메인에 대해서 서브도메인을 추가로 설정하는 것이니 NS 부분은 건드릴 필요가 없고, DNS를 클릭해주자.
그러면 이런 화면이 나오면서 레코드를 추가할 수 있다. 우리는 서브도메인을 추가할 것이므로 CNAME 타입으로 설정하고, Host 부분의 이름은 설정하려는 서브도메인의 값을 입력해준다.
여기서 Answer / Value 부분이 중요한데, 이 값은 api gateway의 custom domain 상세보기 페이지로 들어가면 얻을 수 있다. api gateway의 '사용자 지정 도메인 이름' 메뉴로 들어가서 아까 추가한 레코드를 클릭해보자. 그러면 이런 화면이 나오는데, 여기의 'API Gateway 도메인 이름' 값을 입력해주면 된다.
그러면 이런 cname 타입 레코드가 생긴다.
해당 도메인의 레코드가 DNS 서버에 전파되어 접속이 가능하게 되려면 시간이 필요하다고 알고 있다. 정확한 시간은 없지만, TTL이 600초라서 나는 10분 내외를 예상했었다. 실제로는 약 1시간 정도의 시간이 걸렸던 것 같다(40분 이후에 시도해봤는데도 되지 않았기 때문에 그렇게 추측했다).
✅ 궁금한 점
- CNAME 레코드는 보통 subdomain에 대해 매핑을 추가할 때 할당하는 레코드라고만 알고 있었다. 정확한 CNAME 레코드의 정의가 무엇일지 궁금하다. 정확히는 CNAME 타입이 무엇이길래 서브도메인을 추가하려면 CNAME 타입의 레코드를 추가해야 하는 것인지가 궁금하다.
- 전체 구조가 어떻게 되는 것인지 대강 말로는 설명할 수 있지만 그림이 그려지지는 않는다. 그림을 한번 그려보자.
'개발 일기장 > SWM Onestep' 카테고리의 다른 글
20250106 TIL: AWS RDS 인스턴스 삭제 (0) | 2025.01.06 |
---|---|
20250105 TIL: 개발 서버에서 앱 정상 작동하도록 복구하기 [진행중] (0) | 2025.01.05 |
20241227 TIL: aws lambda 실행 오류 해결하기 [진행중] (2) | 2024.12.27 |
20241223 TIL: api gateway에서 custom domain을 사용해서 porkbun 도메인과 연결하기 [진행중] (0) | 2024.12.23 |
20241222 TIL: zappa로 lambda에서 django 서버 배포하기 [진행중] (0) | 2024.12.22 |