Amazon DynamoDB (1)

kauze98·2025년 5월 20일

AWS 실습

목록 보기
12/16

1. 개요

DynamoDB를 활용한 임무 문서 생성기 구축을 목표로 합니다.
DynamoDB 테이블을 생성하고 데이터를 추가하며, 데이터 접근을 제어할 IAM 역할과 정책 구조로 실습하려고 하며, 이후 Lambda 함수와 API Gateway를 통해 DynamoDB와 연동하는 API를 만들고, 완성된 애플리케이션을 웹에 게시하려고 합니다.

Amazon DynamoDB

  • 완전관리형 NoSQL 데이터베이스 서비스로, 빠르고 유연한 데이터 저장 및 검색을 지원합니다. 테이블, 항목, 속성, 기본 키, 보조 인덱스 등 주요 개념을 바탕으로 대규모 트래픽과 다양한 쿼리 패턴을 처리할 수 있습니다.

IAM(Identity and Access Management)

  • DynamoDB 리소스에 대한 안전한 접근을 위해 역할과 정책을 설정합니다. 최소 권한 원칙에 따라 필요한 권한만 부여하는 것이 권장됩니다.

AWS Lambda

  • 서버 관리 없이 코드를 실행할 수 있는 이벤트 기반 컴퓨팅 서비스입니다. 코드를 업로드하면 Lambda가 자동으로 서버를 프로비저닝하고, 필요할 때만 실행하여 비용 효율적으로 확장할 수 있습니다. Node.js, Java, Python 등 다양한 언어를 지원하며, S3, DynamoDB, API Gateway 등 다양한 AWS 서비스와 연동해 트리거를 설정할 수 있습니다.
    Lambda는 이벤트 발생(예: 파일 업로드, HTTP 요청)에 따라 자동으로 코드를 실행하며, 초당 수천 건까지 자동 확장되어 대규모 트래픽도 처리할 수 있습니다. 이를 통해 별도의 인프라 관리 없이 AWS 환경에서 손쉽게 백엔드 기능을 구현할 수 있습니다.

 

이번 실습은 DynamoDB와 IAM 그리고 AWS Lambda 기본 개념을 바탕으로, 실전에서 활용할 수 있는 AWS 데이터베이스 설계 및 보안 관리를 숙지하는데 목적으로 진행하겠습니다.


 

2. DynamoDB 테이블 생성 및 트리를 통해 항목 추가

우선 정보를 저장할 DynamoDB 테이블(SuperMission)을 생성해, 이후 데이터 저장 및 조회의 기반을 마련합니다.

파티션 키(Primary Key)는 String 타입로 설정을 해서 테이블을 생성하면, 데이터를 고유하게 저장할 수 있는 구조가 완성됩니다.

이후, 생성한 테이블에 실제 임무 데이터를 입력해, DynamoDB의 데이터 저장 구조와 방식을 알 수 있습니다.

이 과정을 통해 DynamoDB에 데이터를 저장하는 기본적인 방법을 알 수 있었습니다.

 


3. JSON을 통해 DynamoDB 항목 추가

핵심 포인트

  • 각 항목은 독립적인 JSON 객체로 입력해야 하며, 테이블의 기본 키(예: SuperHero)가 반드시 포함되어야 합니다.

  • 콘솔에서는 한 번에 하나의 항목만 추가할 수 있습니다. 여러 항목을 한 번에 추가하려면 AWS CLI, SDK, 또는 별도의 스크립트를 사용해야 합니다.

  • JSON 편집기는 DynamoDB 항목의 구조를 명확하게 정의하고, 빠르게 여러 속성을 입력할 수 있는 방법입니다.

  • 이 과정을 통해 AWS 콘솔에서 DynamoDB에 데이터를 입력하는 실습을 완료할 수 있습니다.


4. IAM 정책 및 역할 검토 요약

DynamoDB 데이터 접근을 제어하는 IAM 역할과 정책을 확인합니다. 다음 실습에서 Lambda 함수 등 AWS 서비스가 안전하게 DynamoDB와 상호작용할 수 있도록, 미리 생성된 두 가지 IAM 역할의 정책 구조를 이해하는 것이 목표입니다.

1. SuperDynamoDBScanRole & SuperDynamoDBScanPolicy

  • 역할: SuperDynamoDBScanRole

  • 정책: SuperDynamoDBScanPolicy

  • 정책 내용 요약:

    • DynamoDB의 Scan, BatchWriteItem 작업과 S3의 GetObject, PutObject 작업을 허용
    • 모든 리소스(*)에 대해 적용
  • 예시 정책:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "dynamodb:Scan",
        "s3:GetObject",
        "s3:PutObject",
        "dynamodb:BatchWriteItem"
      ],
      "Resource": ["*"],
      "Effect": "Allow"
    }
  ]
}
  • 의미: 이 역할을 부여받은 엔터티는 DynamoDB 테이블 전체를 스캔하고, 여러 항목을 일괄로 쓰거나, S3에서 객체를 읽고 쓸 수 있습니다.

 

2. SuperDynamoDBQueryRole & SuperDynamoDBQueryPolicy

  • 역할: SuperDynamoDBQueryRole

  • 정책: SuperDynamoDBQueryPolicy

  • 정책 내용 요약:

    • DynamoDB의 Query 작업만 허용
    • 쿼리 시 접근 가능한 속성을 SuperHero, MissionStatus, Villain1, Villain2, Villain3로 제한
    • 모든 리소스(*)에 대해 적용

예시 정책:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Condition": {
        "ForAllValues:StringEquals": {
          "dynamodb:Attributes": [
            "SuperHero",
            "MissionStatus",
            "Villain1",
            "Villain2",
            "Villain3"
          ]
        }
      },
      "Action": ["dynamodb:Query"],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
  • 의미: 이 역할을 부여받은 엔터티는 지정된 속성(열)에 대해서만 쿼리할 수 있습니다. 이를 통해 DynamoDB의 열 수준(속성 수준) 보안이 구현됩니다.

 

핵심 포인트

  • 역할과 정책을 통해 AWS 리소스 접근 권한을 최소화하고, 필요한 작업만 허용하는 보안 원칙을 실습합니다.

  • SuperDynamoDBScanRole은 전체 테이블 스캔 및 일괄 쓰기 등 광범위한 권한이 필요할 때 사용합니다.

  • SuperDynamoDBQueryRole은 특정 속성만 쿼리하도록 제한해, 데이터 노출을 최소화합니다.

  • Lambda 등 AWS 서비스가 이 역할을 사용해 안전하게 DynamoDB에 접근할 수 있습니다.

DynamoDB 테이블 생성, 데이터 입력, 그리고 안전한 데이터 접근을 위한 IAM 역할 및 정책 검토까지, 다음 단계 실습을 위한 인프라 준비가 완료되었습니다.

profile

0개의 댓글