코드스테이츠_Devops_4기/final project

final) 다이나모 디비를 트리거로 사용하는 람다함수만들기

불여우의 길 2023. 6. 20. 14:41

다이나모 디비에 특정 테이블에 데이터가 들어가면 람다함수가 동작되도록 구현 시작했다.

 

 

 

 

트러블슈팅

1. 다이나모디비의 Stream 권한 설정

다이나모를 통해서 람다가 동작하려면 스트림설정을 해줘야한다.

 

 

 

DynamoDB 스트림에 대해서만 읽기 액세스 권한을 부여하는 IAM 정책(테이블은 부여하지 않음) - Amazon

DynamoDB 스트림에 대해서만 읽기 액세스 권한을 부여하는 IAM 정책(테이블은 부여하지 않음) 테이블에서 DynamoDB Streams를 활성화하면 테이블 항목의 모든 수정에 대한 정보가 캡처됩니다. 자세한 내

docs.aws.amazon.com

 

정책 만들어주었다.

그리고 람다함수를 정책을 추가해서 다시 생성해주었다

람다함수 트리거로 다이나모디비 붙이기 성공

그리고 람다함수의 값을 전달할 수 있는 sns 를 만들었다

 

다이나모 디비에 접근이 가능하도록 권한도 넣어주었다

원래같으면 fullaccess를 넣어주었겠지만..

파이널이니까 리드만 넣어줬다.

 

느슨한 결합을 위한 sqs도 만들어서 sns 구독으로 설정해주었다.

 

데이터를 전송하기 위해서 sns를 대상설정을 해놨엇는데 그럴 필요는 없고 람다 소스 코드에서 보내주면 된다.

 

2. node 18.x 버전으로 만든 람다함수가 aws-sdk를 지원하지 않는 에러

https://github.com/aws/aws-sdk-js-v3/issues/4401

 

Cannot find module for @aws-sdk/util-utf8 on Node v18 Lambda runtime · Issue #4401 · aws/aws-sdk-js-v3

Checkboxes for prior research I've gone through Developer Guide and API reference I've checked AWS Forums and StackOverflow. I've searched for previous similar issues and didn't find any solution. ...

github.com

보니까 노드 18버전은 aws-sdk v3 버전을 지원하는데 현재 람다함수에서 쓰이는 node 18버전은 aws-sdk가 누락되었다고 합니다..

일부 기능을 사용할 수 있는 옵션이 있는 것 같은데

안전하게 aws-sdk v2를 사용할 수 있는 node 14 버전을 선택하여 코딩을 했다.

 

쿼리를 조회해서 결과를 sns를 통해 sqs로 보냈다.

 

데이터를 전송이 되었는지 버려고 큐 모니터링~

잘 보내진것같은디 로그 못보던가..

사용가능한 메시지가 쌓이는걸 보니 잘 이동한것같다,.

 

dlq도 호다닥 만들어주었다.