튜토리얼: Amazon DocumentDB와 함께 AWS Lambda 사용
튜토리얼: Amazon DocumentDB와 함께 AWS Lambda 사용 (Tutorial: Using AWS Lambda with Amazon DocumentDB)
이 튜토리얼에서는 Amazon DocumentDB(MongoDB 호환) 클러스터를 만들고, 클러스터의 데이터에 액세스하는 Lambda 함수를 만들고, 함수를 테스트하는 방법을 보여줍니다.
본문
사전 조건
이 튜토리얼을 완료하려면 다음이 있어야 합니다:
- AWS 계정
- Lambda 및 Amazon DocumentDB 사용 지식
- AWS Command Line Interface(AWS CLI) 버전 2. 설치 지침은 AWS CLI 최신 버전 설치 또는 업데이트를 참조하세요.
1단계: Amazon DocumentDB 클러스터 만들기
이 단계에서는 Amazon DocumentDB 클러스터를 만듭니다. Lambda 함수가 데이터베이스에 액세스하려면 함수가 클러스터와 같은 VPC에 있어야 합니다.
DocumentDB 클러스터를 만들려면:
- https://console.aws.amazon.com/docdb/ 에서 Amazon DocumentDB 콘솔을 엽니다.
- Create cluster(클러스터 생성) 를 선택합니다.
- 클러스터의 이름을 입력합니다.
- 클러스터를 만들 리전을 선택합니다.
- Database authentication(데이터베이스 인증) 아래에서 사용자 이름과 비밀번호를 입력합니다. 나중에 Lambda 함수에서 이 자격 증명을 사용합니다.
- 클러스터를 배포할 VPC를 선택합니다.
- 나머지 설정은 기본값으로 두고 Create cluster 를 선택합니다.
클러스터가 생성되는 데 몇 분이 걸릴 수 있습니다.
2단계: Lambda 실행 역할 만들기
이 단계에서는 Lambda Managed Instances의 용량 제공자와 VPC 리소스에 액세스할 수 있는 실행 역할을 만듭니다.
실행 역할을 만들려면:
- https://console.aws.amazon.com/iam/ 에서 IAM 콘솔의 Roles(역할) 페이지를 엽니다.
- Create role 을 선택합니다.
- Trusted entity type 에서 AWS service 를 선택합니다.
- Use case 에서 Lambda 를 선택합니다.
- 다음 정책을 연결합니다:
AWSLambdaBasicExecutionRoleAWSLambdaVPCAccessExecutionRoleAmazonDocDBFullAccess(또는 필요한 권한이 있는 사용자 지정 정책)
- Role name 을 입력하고 Create role 을 선택합니다.
3단계: Lambda 함수 만들기
이 단계에서는 Amazon DocumentDB에 연결하는 Lambda 함수를 만듭니다.
함수를 만들려면:
- https://console.aws.amazon.com/lambda/ 에서 Lambda 콘솔의 Functions(함수) 페이지를 엽니다.
- Create function 을 선택합니다.
- Author from scratch 를 선택합니다.
- Function name 을 입력합니다.
- Runtime 에서 Python 3.x 를 선택합니다.
- Permissions 아래에서 Change default execution role 을 확장하고 이전 단계에서 만든 역할을 선택합니다.
- Create function 을 선택합니다.
4단계: VPC 구성
Lambda 함수가 DocumentDB 클러스터에 연결할 수 있도록 함수의 VPC 구성을 설정합니다.
VPC를 구성하려면:
- Configuration(구성) 탭을 선택합니다.
- 왼쪽 메뉴에서 VPC 를 선택합니다.
- Edit 을 선택합니다.
- Virtual Private Cloud (VPC) 에서 클러스터가 있는 VPC를 선택합니다.
- DocumentDB 클러스터가 있는 서브넷을 선택합니다.
- 보안 그룹을 선택합니다. DocumentDB 클러스터의 보안 그룹이 Lambda 함수의 보안 그룹으로부터 연결을 허용하는지 확인하세요.
- Save 를 선택합니다.
5단계: 함수에 연결 문자열 추가
함수 코드가 데이터베이스에 연결할 수 있도록 환경 변수를 구성합니다.
환경 변수를 추가하려면:
- Configuration 탭을 선택합니다.
- Environment variables(환경 변수) 를 선택합니다.
- Edit 을 선택합니다.
- 다음 환경 변수를 추가합니다:
DOCDB_URI— DocumentDB 클러스터의 연결 문자열DOCDB_USER— 데이터베이스 사용자 이름DOCDB_PASSWORD— 데이터베이스 비밀번호
- Save 를 선택합니다.
6단계: 함수 코드 추가
이 단계에서는 DocumentDB 클러스터에 연결하고 샘플 작업을 수행하는 코드를 추가합니다.
코드를 추가하려면:
- Code 탭을 선택합니다.
- 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')
}
- Deploy 를 선택합니다.
7단계: 함수 테스트
함수를 호출해 DocumentDB 클러스터에 성공적으로 연결되는지 확인합니다.
함수를 테스트하려면:
- Test 탭을 선택합니다.
- 기본 테스트 이벤트를 사용하거나 새 테스트 이벤트를 만듭니다.
- Test 를 선택합니다.
- 실행 결과에서 함수가 성공적으로 실행되었는지 확인합니다.
정리
보관하려는 경우가 아니라면 이 튜토리얼에서 만든 리소스를 삭제하세요.
더 알아보기 (Learn more)
- Amazon DocumentDB(MongoDB 호환)를 Lambda 이벤트 소스로 사용
- Lambda VPC 연결
- Lambda 함수에서 Amazon DocumentDB 액세스