튜토리얼: Amazon DocumentDB와 함께 AWS Lambda 사용

튜토리얼: Amazon DocumentDB와 함께 AWS Lambda 사용 (Tutorial: Using AWS Lambda with Amazon DocumentDB)

이 튜토리얼에서는 Amazon DocumentDB(MongoDB 호환) 클러스터를 만들고, 클러스터의 데이터에 액세스하는 Lambda 함수를 만들고, 함수를 테스트하는 방법을 보여줍니다.

출처: AWS Lambda 개발자 안내서

본문

사전 조건

이 튜토리얼을 완료하려면 다음이 있어야 합니다:

  • AWS 계정
  • Lambda 및 Amazon DocumentDB 사용 지식
  • AWS Command Line Interface(AWS CLI) 버전 2. 설치 지침은 AWS CLI 최신 버전 설치 또는 업데이트를 참조하세요.

1단계: Amazon DocumentDB 클러스터 만들기

이 단계에서는 Amazon DocumentDB 클러스터를 만듭니다. Lambda 함수가 데이터베이스에 액세스하려면 함수가 클러스터와 같은 VPC에 있어야 합니다.

DocumentDB 클러스터를 만들려면:

  1. https://console.aws.amazon.com/docdb/ 에서 Amazon DocumentDB 콘솔을 엽니다.
  2. Create cluster(클러스터 생성) 를 선택합니다.
  3. 클러스터의 이름을 입력합니다.
  4. 클러스터를 만들 리전을 선택합니다.
  5. Database authentication(데이터베이스 인증) 아래에서 사용자 이름과 비밀번호를 입력합니다. 나중에 Lambda 함수에서 이 자격 증명을 사용합니다.
  6. 클러스터를 배포할 VPC를 선택합니다.
  7. 나머지 설정은 기본값으로 두고 Create cluster 를 선택합니다.

클러스터가 생성되는 데 몇 분이 걸릴 수 있습니다.

2단계: Lambda 실행 역할 만들기

이 단계에서는 Lambda Managed Instances의 용량 제공자와 VPC 리소스에 액세스할 수 있는 실행 역할을 만듭니다.

실행 역할을 만들려면:

  1. https://console.aws.amazon.com/iam/ 에서 IAM 콘솔의 Roles(역할) 페이지를 엽니다.
  2. Create role 을 선택합니다.
  3. Trusted entity type 에서 AWS service 를 선택합니다.
  4. Use case 에서 Lambda 를 선택합니다.
  5. 다음 정책을 연결합니다:
    • AWSLambdaBasicExecutionRole
    • AWSLambdaVPCAccessExecutionRole
    • AmazonDocDBFullAccess (또는 필요한 권한이 있는 사용자 지정 정책)
  6. Role name 을 입력하고 Create role 을 선택합니다.

3단계: Lambda 함수 만들기

이 단계에서는 Amazon DocumentDB에 연결하는 Lambda 함수를 만듭니다.

함수를 만들려면:

  1. https://console.aws.amazon.com/lambda/ 에서 Lambda 콘솔의 Functions(함수) 페이지를 엽니다.
  2. Create function 을 선택합니다.
  3. Author from scratch 를 선택합니다.
  4. Function name 을 입력합니다.
  5. Runtime 에서 Python 3.x 를 선택합니다.
  6. Permissions 아래에서 Change default execution role 을 확장하고 이전 단계에서 만든 역할을 선택합니다.
  7. Create function 을 선택합니다.

4단계: VPC 구성

Lambda 함수가 DocumentDB 클러스터에 연결할 수 있도록 함수의 VPC 구성을 설정합니다.

VPC를 구성하려면:

  1. Configuration(구성) 탭을 선택합니다.
  2. 왼쪽 메뉴에서 VPC 를 선택합니다.
  3. Edit 을 선택합니다.
  4. Virtual Private Cloud (VPC) 에서 클러스터가 있는 VPC를 선택합니다.
  5. DocumentDB 클러스터가 있는 서브넷을 선택합니다.
  6. 보안 그룹을 선택합니다. DocumentDB 클러스터의 보안 그룹이 Lambda 함수의 보안 그룹으로부터 연결을 허용하는지 확인하세요.
  7. Save 를 선택합니다.

5단계: 함수에 연결 문자열 추가

함수 코드가 데이터베이스에 연결할 수 있도록 환경 변수를 구성합니다.

환경 변수를 추가하려면:

  1. Configuration 탭을 선택합니다.
  2. Environment variables(환경 변수) 를 선택합니다.
  3. Edit 을 선택합니다.
  4. 다음 환경 변수를 추가합니다:
    • DOCDB_URI — DocumentDB 클러스터의 연결 문자열
    • DOCDB_USER — 데이터베이스 사용자 이름
    • DOCDB_PASSWORD — 데이터베이스 비밀번호
  5. Save 를 선택합니다.

6단계: 함수 코드 추가

이 단계에서는 DocumentDB 클러스터에 연결하고 샘플 작업을 수행하는 코드를 추가합니다.

코드를 추가하려면:

  1. Code 탭을 선택합니다.
  2. Code source 창에서 lambda_function.py의 내용을 다음 코드로 교체합니다:
import json
import os
from pymongo import MongoClient

def lambda_handler(event, context):
    uri = os.environ['DOCDB_URI']
    user = os.environ['DOCDB_USER']
    password = os.environ['DOCDB_PASSWORD']
    
    client = MongoClient(uri, username=user, password=password)
    db = client['sample']
    
    # Insert a document
    result = db['sample_collection'].insert_one({"greeting": "Hello, DocumentDB!"})
    print(f"Inserted document with ID: {result.inserted_id}")
    
    # Query the document
    document = db['sample_collection'].find_one({"greeting": "Hello, DocumentDB!"})
    print(f"Found document: {document}")
    
    client.close()
    return {
        'statusCode': 200,
        'body': json.dumps('Successfully connected to DocumentDB')
    }
  1. Deploy 를 선택합니다.

7단계: 함수 테스트

함수를 호출해 DocumentDB 클러스터에 성공적으로 연결되는지 확인합니다.

함수를 테스트하려면:

  1. Test 탭을 선택합니다.
  2. 기본 테스트 이벤트를 사용하거나 새 테스트 이벤트를 만듭니다.
  3. Test 를 선택합니다.
  4. 실행 결과에서 함수가 성공적으로 실행되었는지 확인합니다.

정리

보관하려는 경우가 아니라면 이 튜토리얼에서 만든 리소스를 삭제하세요.

더 알아보기 (Learn more)

  • Amazon DocumentDB(MongoDB 호환)를 Lambda 이벤트 소스로 사용
  • Lambda VPC 연결
  • Lambda 함수에서 Amazon DocumentDB 액세스