AWS_Cloud

13강 DynamoDB 및 Lamda 실습 노트 (AWS Cloud)

Chansman 2025. 4. 10. 13:06

DynamoDB 실습: 테이블 생성 및 데이터 조회

1. DynamoDB 테이블 생성

  1. DynamoDB 서비스 검색 및 대시보드 접근
    • AWS 콘솔에 로그인 후, "DynamoDB"를 검색하여 해당 서비스를 찾고 클릭합니다.
    • DynamoDB 대시보드로 이동하면 현재 계정에 생성된 테이블들이 나열됩니다.
  2. 테이블 생성
    • 대시보드에서 테이블 메뉴를 클릭하여 테이블 생성 버튼을 클릭합니다.
    • 테이블 이름을 student-score로 설정합니다.
  3. Partition Key 및 Sort Key 설정
    • Partition Key는 학생의 **학번(ID)**을 설정합니다. 데이터 타입은 숫자로 설정합니다.
    • Sort Key는 **과목명(subject)**을 설정하고, 데이터 타입은 문자열로 설정합니다.
    • 이때, **학번(ID)**을 파티션 키로, **과목명(subject)**을 정렬 키로 설정하여 복합 기본키를 사용하게 됩니다.
  4. 기본 설정 및 용량 설정
    • 사용자 지정을 눌러 테이블의 용량을 설정합니다.
    • 테이블 클래스는 기본 스탠다드로 설정하고, 읽기/쓰기 용량을 설정합니다.
      • 읽기 용량은 1에서 10 사이로 설정하고, 쓰기 용량도 1에서 10 사이로 설정합니다.
      • 오토스케일링이 활성화되어 있으면, DynamoDB가 자동으로 용량을 조절해 줍니다.

2. 보조 인덱스 추가

  1. 글로벌 보조 인덱스 (GSI) 추가
    • 글로벌 보조 인덱스는 **과목명(subject)**을 파티션 키로 사용하고, **점수(score)**를 정렬 키로 설정합니다.
    • 프로젝션 속성은 ALL로 설정하여 모든 데이터를 가져올 수 있도록 합니다.
    • subject-score-index라는 이름으로 글로벌 보조 인덱스를 생성합니다.
  2. 테이블 생성 완료
    • 테이블을 생성 후, Partition KeySort Key가 올바르게 설정되었는지 확인합니다.
    • 생성된 테이블의 인덱스 탭에서 글로벌 보조 인덱스가 제대로 생성되었는지 확인합니다.

3. 데이터 입력

  1. 데이터 입력
    • DynamoDB에서 데이터를 수동으로 입력하려면, 작업 메뉴에서 항목 생성(Create Item) 버튼을 클릭합니다.
    • 첫 번째 학생의 데이터를 입력합니다:
      • ID = 1
      • Subject = Math
      • Score = 95
  2. 반복 데이터 입력
    • 다른 학생들의 데이터를 반복적으로 입력합니다. 예를 들어:
      • 학생 2번: ID = 2, Subject = Math, Score = 100
      • 학생 3번: ID = 3, Subject = English, Score = 85
      • 총 9개 항목을 입력하여 학생들의 과목별 점수를 저장합니다.

4. 데이터 조회

  1. 쿼리(Query) 사용
    • 파티션 키(ID)를 기반으로 학생의 모든 과목 점수를 조회합니다.
    • 쿼리 실행을 통해 학번 1인 학생의 모든 과목 점수를 조회할 수 있습니다.
  2. 글로벌 보조 인덱스(GSI)를 활용한 정렬
    • 글로벌 보조 인덱스를 통해 과목별로 학생 점수를 조회합니다.
    • 예시로, 수학(Math) 과목에 대한 점수를 조회할 수 있습니다.
      • subject = 'Math'
      • 해당 과목에 대한 모든 학생들의 점수를 조회합니다.
  3. 스캔(Scan) 사용
    • 스캔은 테이블의 모든 항목을 검색하고 결과를 필터링하는 방식입니다.
    • 예를 들어, ID가 1인 학생만 조회하려면, 스캔필터링을 사용하여 ID가 1인 데이터를 추출할 수 있습니다.
  4. 정렬 및 필터링
    • 쿼리에서 과목별로 점수를 정렬할 수 있습니다.
    • 예를 들어, score >= 90인 학생들만 조회하거나, score 기준으로 내림차순으로 정렬할 수 있습니다.

Lambda 실습: 간단한 서버리스 함수 만들기

1. Lambda 함수 생성

  1. Lambda 콘솔 접근
    • AWS 콘솔에서 Lambda 서비스를 검색하여 Lambda 대시보드로 이동합니다.
    • 대시보드에서 함수 생성을 클릭합니다.
  2. 함수 이름 및 설정
    • 함수 이름을 myFunction으로 설정하고, 기본 코드 템플릿인 Hello World function을 선택합니다.
    • 함수 코드는 기본 제공된 자바스크립트 코드로 설정합니다.
  3. IAM 역할 설정
    • Lambda 함수가 실행되는 역할을 정의할 수 있습니다. 기본적으로 자동으로 생성된 역할을 사용하거나, 새 IAM 역할을 설정하여 권한을 추가할 수 있습니다.

2. 이벤트 트리거 설정

  1. 이벤트 트리거
    • 이벤트란 Lambda 함수에 전달되는 입력 파라미터입니다. 예를 들어, API Gateway에서 전달된 HTTP 요청의 데이터가 이벤트로 들어갈 수 있습니다.
    • 테스트 이벤트를 생성하여 Lambda 함수가 실행될 때 어떤 데이터가 들어갈지 정의합니다.
      • 예시로, {"key1": "value1", "key2": "value2"} 형식의 JSON 객체를 생성합니다.

3. 함수 테스트 및 실행

  1. 테스트 실행
    • 생성된 이벤트를 테스트하여 Lambda 함수가 정상적으로 실행되는지 확인합니다.
    • 함수 실행 후 로그 확인:
      • 함수가 정상적으로 실행되면 로그에 이벤트 데이터가 출력되고, key1에 해당하는 값을 응답으로 반환합니다.
      • 실행 시간 및 메모리 사용량도 로그에 표시됩니다.

4. Lambda 함수의 자동 확장 및 비용 청구

  1. 자동 확장
    • Lambda 함수는 자동으로 스케일링되므로, 트래픽이 많아져도 별도로 설정을 변경하지 않아도 됩니다.
  2. 비용 청구
    • Lambda는 실행 시간에 따라서 비용이 청구됩니다. 예를 들어, 함수가 실행된 시간(밀리초 단위)에 따라 비용이 부과됩니다.
    • 3ms 실행이지만 청구되는 시간은 3ms입니다.

5. Lambda 함수 삭제

  1. 함수 삭제
    • 실습 후, 사용이 끝난 Lambda 함수는 콘솔에서 삭제 버튼을 눌러 삭제할 수 있습니다.

결론

  • DynamoDB에서는 테이블 설계데이터 입력/조회가 중요하며, 데이터 모델링을 잘 해야 성능과 비용 측면에서 최적화할 수 있습니다.
  • Lambda서버리스 환경에서 코드 실행을 자동화하고 비용 효율적이며, 확장성을 자동으로 관리하는 기능을 제공합니다.
  • 이 두 서비스를 조합하여, 자동화된 서버리스 애플리케이션을 구축할 수 있습니다.