본인이 진행하는 프로젝트나 서비스의 도메인별로 AWS 서비스를 분리하다보면, 수 십개의 계정을 사용하게 될 것이다. 혹시 모를 위험에 대비해, 아래의 간단한 계정 설정을 진행하고 Lambda를 살펴보도록 하자.
먼저 AWS 콘솔에 접속하면 다양한 리전 중에서 선택할 수 있다. 여기에서는 '서울' 리전을 선택하자. 이는 사용자의 위치와 가까운 리전을 선택하면 데이터 전송 시간이 줄어들기 때문이다.
리전을 바꾸려면 '계정' - '설정' - '편집' - '기본 리전' 순서로 이동하여 '아시아 태평양 (서울)'을 선택하자.
AWS는 서비스 이용에 따라 비용이 발생한다. 이러한 비용을 효과적으로 관리하기 위해 '비용 관리' 기능을 활성화하자. 메인 페이지에서 해당 버튼을 클릭하면 자동으로 비용 관리가 활성화 된다. 이를 통해 사용중인 서비스의 비용을 실시간으로 확인하고 관리할 수 있다.
활성화에 하루가 걸리니 꼭 계정을 생성하자마자 한 번 눌러주자. :)
AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이, 서버리스하게 코드를 실행할 수 있게 해주는 이벤트 주도형 AWS 서비스이다. 사용자는 단순히 코드를 업로드하기만 하면 실행이나 스케일링 및 보안 관리를 AWS가 알아서 처리해준다.
우선 함수를 생성해보자.
함수 생성
에서 새로 작성
버튼을 클릭하면 다음과 같은 창이 뜬다.
함수 이름 : 이름이다 👍
권한 - 기본 실행 역할 변경: 이 부분은 Lambda 함수가 실행될 때 AWS 서비스와 상호 작용할 수 있는 권한을 제어한다. AWS 테라폼에서는 기존에 설정된 역할을 사용하게 된다. 이는 보안과 관리를 용이하게 하기 위함이다.
(AWS 테라폼과 함께 사용한다면 기존 역할 사용을 선택할 것.)
끝이다. 생성된 함수에 코드를 입력하면 되며, 트리거 URL을 생성해서 onClick과 같은 곳에 넘겨주면 간단하게 사용이 가능하다.
AWS API Gateway는 클라이언트와 백엔드 서비스 간의 API 호출 트래픽을 관리하는 서비스이다. RESTful API와 소켓 통신 등 모든 종류의 API 유형과 트래픽을 안정적으로 처리하고 성능을 향상시킬 수 있다.
여기선 FE에서 각 컴포넌트를 Router 컴포넌트로 묶듯이, AWS Lambda의 함수들을 매핑하고 버젼을 관리하는 용도로 사용할 예정이다.
가장 보편적인 REST API로 만들어보자!
첫 번째로, 'REST API'를 구축하자.
API 이름과 설명은 본인이 원하는대로 설정하자. 여기서 엔드포인트 유형
은 '지역'을 선택하자. 하지만 나중에 성능 최적화를 위해 다른 유형을 선택할 수도 있다! :)
API Gateway를 사용하여 클라이언트의 요청을 AWS Lambda 함수나 다른 AWS 서비스에 매핑할 수 있다.
API 구성이 변경된 경우에는 변경 사항을 반영하기 위해 API를 다시 배포해야 한다.
매핑 과정을 완료하면, AWS Lambda에 있는 동일한 리전의 람다 함수가 매핑될 수 있다. 저장하면 Root Lambda 함수의 리소스 정책이 변경된다.
API 배포 후에는 API 스테이지를 생성해야 한다. 스테이지는 API의 특정 버전을 의미한다.
리소스 - 작업 - API배포 - 새 스테이지 만들기
생성된 스테이지로 호출을 보내면 API가 정상적으로 작동한다. :)
API Gateway로 들어오는 트래픽을 제어하려면 도메인 이름을 연결해야 한다.
API Gateway는 HTTPS만 지원하기 때문에, 도메인 연결 후 SSL 인증서를 생성하는 과정을 거쳐야한다!
(AWS에서 도메인을 구매한 경우, 이 과정이 아주 간단하다)
SSL 인증서는 클라이언트와 서버 간 통신이 안전하게 이루어지도록 보장한다.
이곳에서 사용할 atcoder.pengoose.dev에 대한 SSL 인증서를 요청할 수 있다. 와일드카드를 사용하여 인증서를 생성할 것이다.
인증서 페이지에 있는 CNAME의 Key와 Value를 도메인 설정에 추가한다.
CNAME을 입력하기 위해 본인이 도메인을 구매한 페이지로 가서 속성을 추가해주자.
HOST가 Key이고, ANSWER가 Value이다.
정상적으로 설정이 완료되면 다음과 같이 나타난다.
라우팅과 비슷하다.
리소스는 특정 API 경로
를 의미한다. HTTP 메서드와 연결되어 들어오는 요청을 특정 백엔드 로직(AWS Lambda 함수)으로 연결해주는 역할을 수행한다.
각 리소스에 대한 메서드를 설정할 수 있으며, 해당 리소스 경로(엔드포인트)가 메서드에 맞게 매핑된다.
위에서도 언급했지만, 변경이 진행되었다면 API 배포
를 진행해야 한다!