Cognito 는 회원가입시 이메일 인증, 비밀번호 변경 인증 코드 등 사용자 인증과 관련된 메일 기능을 지원합니다.

처음에 원했던 방향은 람다에서 SES 을 통해 존재하는 템플릿을 통해 메일 전송을 하는 것이 목표.

Cognito -> CustomMessage -> Lambda -> SES

하지만, 이 방식은 다음 이슈 존재.

원하는 방향으로 진행하려면 "Custom Message" 방식이 아닌 "Custom Email Sender" 으로 가야하는데 serverless 도 그렇고 아직 뭔가 지원이 애매한 것으로 보여서 복잡하고 이슈들이 많음.

기본 메일과 커스텀 템플릿에 의한 메일 2개가 중복으로 가능 현상이 존재하고, 템플릿 메일은 code 값이 원하는대로 치환되지 않은 채로 전송되는 이슈가 있었음.

초기 원했던 위 방향은 결과적으로 실패.

그래서 기존 흐름대로 커스텀 메시지를 통해 람다 실행 후 람다 내부에서 원하는 템플릿으로 전송.

템플릿을 람다 내부에 비효율적으로 관리해야하는 이슈 때문에 초기 방향처럼 SES 의 템플릿을 두고 관리하려고 했었음.

그래서 조금 더 효율적으로 하기 위해서 람다 내부에서 S3 접근하여 html 파일 가지고 오는 방식으로 진행.

%% Cognito CustomMessage
graph LR
    subgraph Cognito
        CustomMessage
    end

    Client --> |1.request| Amplify
    Amplify --> |2.request| Cognito
    CustomMessage --> |3.request| Lambda
    Lambda --> |3.get_template| S3
    Lambda --> |4.request| SES
    SES --> |5.send| User
%% __END