SAM Lambda S3이벤트 트리거, MongoDB 접근코드

상태: Done 생성일: 2023년 1월 10일 오후 2:18 유형: 코드

SAM 이벤트 처리 예시

  • nodejs 16 으로 세팅함

  • bucket 버킷에 test 이미지 파일을 올려놓음

AWS의 SDK를 사용

  • AWS 서비스용 javascript API 를 제공한다.

AWS SDK for JavaScript란 무엇인가요?

const AWS = require('aws-sdk');
const s3 = new AWS.S3(); // https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations_Amazon_Simple_Storage_Service.html

MongoDB 라이브러리 사용

  • MongoClient 라이브러리를 사용해 mongodb 에 연결할수있다.

  • 데이터를 검색하는 경우 ObjectId를 사용하기 위해선 라이브러리를 추가로 설치해야한다

const MongoClient = require('mongodb').MongoClient;
const ObjectId = require('mongodb').ObjectId;
  • mongoose 가 많이 사용되는 라이브러리 같은데 스키마를 사용할 수 있다는게 장점이라고 한다. 여기선 필요없으니 mongodb로 사용해도 충분한것같다.

app.js

lambdaHandler

  • event에는 객체의 경로에 대한 정보가 포함되어있다.

    • key가 객체의 경로고 문자열을 split 으로 쪼개서 필요한 폴더의 이름을 추출해 mongodbConnect 함수로 넘겨주었다.

  • s3.getObject 는 키값으로 버킷에서 해당 객체를 조회한다.

mongodbConnect

  • MongoDB를 연결하고 필요한 update처리를 한다

template.yaml

  • CloudFormation 방식으로, 스택이라는 리소스를 생성하며 aws 로 배포가능하게 해줌

  • 템플릿은 자신에게 맞게 잘 작성해주어야함 아래는 그냥 예시임

event.json

  • 로컬 테스트용도로 사용함

  • 위와 같이 코드를 작성후 람다를 실행하였을때 content type 을 가져오는걸 확인할 수 있었음

참고

Amazon S3 이벤트 처리

자습서: Amazon S3 트리거를 사용하여 Lambda 함수 호출

Last updated