• AWS 입문 ② 로그인과 데이터 저장은 실제로 어떻게 연결할까요?

    컨텐츠 이미지
    컨텐츠 이미지
    컨텐츠 이미지
    컨텐츠 이미지

    웹사이트 배포가 끝났다면, 다음은 “사용자가 누른 버튼이 실제로 데이터를 저장하도록” 연결할 차례입니다. 개인 메모 앱을 예로 들어보겠습니다. 아래는 가능한 구성 중 하나이며 모든 앱이 이 조합을 사용할 필요는 없습니다. 1. 각 서비스의 역할 • Amplify Hosting: 웹 화면 배포 • Cognito: 회원가입·로그인 • API Gateway: 앱 요청을 받는 API 주소 • Lambda: 저장·조회 등 서버 코드 실행 • DynamoDB: 메모 데이터 저장 사용자는 Cognito로 로그인하고, 앱은 로그인 토큰을 첨부해 API를 호출합니다. API Gateway가 토큰을 검증하면 Lambda가 요청을 처리하고 DynamoDB에 저장합니다. 2. 데이터 저장 기능 연결하기 ① DynamoDB에 메모 테이블을 만들고 사용자별 데이터를 구분할 키를 설계합니다. ② Lambda에 저장·조회 코드를 작성하고 테이블 이름과 리전을 설정합니다. ③ Lambda 실행 역할에 해당 테이블의 필요한 작업만 허용합니다. AWS 비밀키를 코드에 넣는 대신 역할로 접근합니다. ④ API Gateway에서 HTTP API를 만들고 POST /notes, GET /notes 경로를 Lambda에 연결합니다. 함수 호출 권한과 배포 단계도 확인합니다. ⑤ 앱에 API 기본 주소를 설정하고 저장 버튼에서 POST /notes로 메모를 보내도록 구현합니다. 주소만 입력해도 저장 기능이 생기는 것은 아닙니다. 3. 로그인과 API 권한 연결하기 Cognito에서 사용자 풀과 앱 클라이언트를 구성하고 로그인 완료 후 복귀 주소와 로그아웃 주소를 등록합니다. 브라우저 앱은 비밀키를 보관할 수 없는 공개 클라이언트로 설계하고 Authorization Code + PKCE 방식을 사용합니다. API Gateway에는 Cognito의 발급자·대상 정보를 설정한 JWT 인증기를 연결합니다. 앱은 Authorization 헤더에 Bearer 액세스 토큰을 보내고, API에는 필요한 접근 범위도 설정합니다. 로그인한 사람이라도 모든 메모를 읽어도 되는 것은 아닙니다. Lambda는 검증된 토큰의 사용자 식별자를 기준으로 본인의 데이터만 저장·조회하게 해야 합니다. 앱이 보낸 사용자 ID를 그대로 믿으면 안 됩니다. 4. 연결이 안 될 때 • 401·403 → 토큰 만료·인증기 설정·접근 권한 • 브라우저에서만 실패 → CORS·사전 요청 • 서버 오류 → Lambda 로그·입력값·테이블 이름·리전 CORS에는 필요한 웹 주소·메서드·헤더를 허용하세요. CORS는 사용자 인증을 대신하지 않습니다. 두 계정으로 서로의 메모를 볼 수 없는지, 유효한 토큰 없는 요청이 차단되는지, 새로고침 후에도 저장 내용이 남는지 확인하세요. 공식 참고자료 실행 역할: https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html Cognito: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html 토큰 검증: https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html

  • 💬 댓글이 아직 없습니다.