API Gateway, Lambda, ElastiCache, S3 구성을 해보자.
보안 그룹 생성
- AWS Console에서 VPC를 입력하여 들어간다.
- 특정 IP와 port에서만 접근 하는 것을 허용하기 위해 만든다.
- 왼쪽 목록에서 보안 그룹을 선택하여 보안 그룹을 생성한다.
- valkey의 보안 그룹
- valkey는 lambda로부터만 접근 가능하도록 inbound만 설정해준다.

- lambda의 보안 그룹
- lambda는 s3와 valkey 접근을 위해 outbound 설정을 해준다.

VPC 내에 ElastiCache 구성
- ElastiCache에는 3가지가 있다. valkey, memcached, redis oss
- Memcached vs RedisOSS

- Memcached vs RedisOSS vs Valkey

- RedisOSS가 가장 안정적이지만 비용과 성능면에서 Valkey가 좋아 Valkey를 사용해보았다.
- valkey 구성
- AWS Console에서 ElastiCache에 들어가 Valkey 캐시 생성을 한다.
- 배포 옵션이 서버리스와 자체 캐시 설계로 나누어진다.
- 서버리스는 AWS가 리소스 증가에 따라 자동으로 확장 축소가 된다. 기본적으로 클러스터 모드이다.

- 자체 캐시 설정에는 간편 생성과 클러스터 캐시가 있는데 클러스터 캐시는 직접 클러스터 모드, 위치, 노드 유형, 샤드 수 등을 상세하게 설정할 수 있다.
- 빠르게 구성하고 관리 포인트를 덜기 위해 필자는 서버리스로 구성했다.
- 설정
- 캐시의 이름과 엔진 버전을 선택한다.

- 기본 설정
- customer account 즉 회사에서 사용하는 계정인 경우 elasticache는 vpc 내에 생성해야한다.
- 서버리스에서는 subnet을 2개 또는 3개 선택해야한다. 필자는 vpc와 subnet이 나누어져 있어 리소스가 가장 널널한 subnet을 선택하였다.

- 보안
- 보안 설정 사용자 지정으로 보안 설정을 하면 사용자 별로 접근 권한을 줄 수 있다.
- 위에서 만든 보안 그룹으로 설정해주자.

- 구성
Role 생성
- lambda 함수에 권한을 부여하기 위해 Role을 생성한다.

- role을 검색을 통해 추가를 해준다. AWSLambdaBasicExecutionRole, AmazonEC2FullAccess, AmazonElastiCacheFullAccess만 있으면 된다.

ECR 생성
- aws console에 elastic container registery를 검색하여 repository를 생성한다.
Lambda 생성
- aws console에 lambda를 입력하고 함수를 생성한다.
- 함수 생성은 위에서 ECR에 배포한 컨테이너 이미지를 선택해준다.
- 실행 역할은 위에서 만든 role을 선택해준다.

- 생성 된 함수에 들어가 일반 구성을 편집해준다.
- 메모리를 1024MB로 증가, 오래 걸리는 작업일 경우 제한 시간을 길게 준다. 필자는 10초를 주었다.

- vpc 편집
- vpc와 서브넷을 valkey와 동일하게 설정한다.
- 보안 그룹은 위에서 만든 lambda-sgrp를 사용한다.

API Gateway
테스트
- API Gateway의 스테이지를 눌러 URL 호출 링크를 확인한다.
- 해당 url에 리소스 test를 붙인다.
- postman에 x-api-key를 헤더에 key로 추가하고 value에 생성한 api gateway의 api key를 넣어 테스트를 해본다.