[2] Lambda & DocumentDB 연결
지난글에 이어 이번엔 Lambda 에서 DocumentDB 연결 방법을 정리해보려고한다.
[1] Lambda & DocumentDB 연결
API Gateway 에서 받은 데이터를 Lambda에서 처리 후 DocumentDB 에 로그를 저장하는 로직을 구성하게 되었다. 이번 포스팅에서는 Lambda에서 DocumentDB 연결 방법을 작성해볼것이다. DocumentDB 란 DocumentDB 를
yentech.tistory.com
AWS 콘솔에서 Lambda 생성을 시작합니다.
런타임은 python 으로 설정했고 이때 Lambda 생성 시 Lambda에는 DocumentDB 에 액세스할 수 있는 IAM 역할이 필요합니다.
고급 설정 탭을 확장하여 VPC 활성화를 하여 DocumentDB 를 생성한 VPC를 선택하고 DocumentDB 포트가 열려있는 보안그룹을 지정합니다.
DocumentDB 콘솔 화면에서 생성한 클러스터를 선택하면 연결성 및 보안 탭에 연결 정보가 있습니다. 저기서 3번째 방법인 애플리케이션을 사용하여 이 클러스터에 연결 을 사용하겠습니다.
아래 공식문서에서 DocumentDB Connecting 방법을 참고하여 Lambda 함수에 적용하였습니다.
Connecting Programmatically to Amazon DocumentDB - Amazon DocumentDB
Connecting Programmatically to Amazon DocumentDB This section contains code examples that demonstrate how to connect to Amazon DocumentDB (with MongoDB compatibility) using several different languages. The examples are separated into two sections based on
docs.aws.amazon.com
위의 DocumentDB 콘솔 화면에서 복사한 클러스터 연결 정보를 아래 pymongo.MongoClient('여기에 클러스터 연결 정보 붙여넣기') 에 붙여넣어줍니다.
# 연결할 DB 명 지정
db = client.test_database
# 연결할 Collection 명 지정
col = db.test_collection
# 데이터 insert
col.insert_one({'hello':'yen'})
# 위에서 insert한 데이터 select
x = col.find_one({'hello':'yen'})
print(x)
# Close the connection
client.close()
pymongo 패키지 사용을 위해 계층도 추가해줍니다.
이제 테스트를 실행해보면 성공적으로 DocumentDB에 데이터를 넣고 조회해 온 것을 확인할 수 있습니다.
추가로 MongoDB API 를 사용한 쿼리 문법은 아래 공식문서에서 확인할 수 있습니다.
문서 작업 - Amazon DocumentDB
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
이후 Lambda 코드에 DB 연결 정보 특히 비밀번호가 그대로 들어가있는것이 매우 거슬렸기에 람다에서의 변수 암호화 방법을 찾아보았다.
S3에 비밀번호를 저장하고 읽어오거나 secret manager 서비스를 이용하거나 하는 다양한 방법이 있었는데 나는 람다의 환경변수 암호화 방법으로 해보았다.
람다의 구성 탭의 환경변수를 선택하고 편집 버튼을 클릭한다.
환경 변수 추가를 클릭하여 키값에 적당한 변수명을 작성하고 값에 DB 연결정보를 넣었다.
이후 코드를 아래와같이 수정해주면 이전과 똑같이 잘 동작한다