관심분야/클라우드

#5 DynamoDB, Lambda Trigger 연결 - AWS 음성지원 서비스를 활용한 신문 읽어주는 프로젝트

뱅노 2019. 11. 23. 14:48

저번까지는 Python으로 crawling 프로그램을 만들고 crawling 된 내용을 AWS Lambda에 Insert 시키는 것 까지 하였다. 이번에는 DynamoDB에 데이터가 Insert가 되면은 Lambda에서 Insert 된 데이터를 불러올 수 있도록 Trigger 연결을 하도록 하겠다.

 

 

위의 사진 중 빨간색으로 네모칸 처리한 부분을 진행 할 예정이다.

 

우선 AWS 콘솔창에 로그인을 한다. 그리고 Lambda를 검색 후 해당 섹션에 들어온다. 좌측에 보면은 [함수]라는 메시지가 존재한다. 함수 메뉴를 누르면 우측에 [Create Funtion]라는 버튼이 나온다. [Create Funtion]이라는 버튼을 클릭하게 되면 아래와 같은 화면이 나오게 된다.

나의 경우 [새로작성]을 선택한다. 그리고 함수 이름을 작성하였다. 함수 이름은 "setNewsInfo_test"로 정의하였다. 그리고 Runtime은 Python 3.7로 선택해서 진행하였다. 여기서 중요한 게 역할이다. 역할은 이전 장에서 확인했다. IAM(Identity and Access Management)과 연결되는 내용이다. 일단 기본 Lambda 권한을 가진 새 역할 생성으로 하여서 IAM 역할을 새롭게 하나 만든다. 여기까지 하였으면 하단의 [Create function]을 클릭해 준다.

 

Amazon CloudWatch Logs에 PUT 권한이 있는 역할로 Lambda는 생성이 된다. 여기서 Amazon CloudWach Logs는 애플리케이션의 동작하는 모든 기록관리 서비스이다. AWS에서 Free-Tier로 제공하고 있다. 개발자에게 중요한 Log를 관리해 주는 섹션도 존재한다.

 

다시 Lambda vs DynamoDB Trigger 연결 방법으로 돌아와서 보겠다. 이제 DynamoDB에 트리거 연결을 해야 한다. 좌측에 직관적으로 [트리거 추가]라는 버튼이 존재한다. 과감하게 클릭을 해준다. 선택을 하면은 아래와 같은 트리거 구성 방법에 대해서 나온다. DynamoDB를 검색하면 이전에 내가 생성해 놓은 DynamoDB 테이블도 나오게 된다.

여기서는 많은 걸 설정할 필요는 없다. Trigger 속성 중 필요한 정도는 결정하면 된다. 그리고 하단의 [ADD]버튼을 클릭하게 되면 아래와 같은 경고창이 나온다.

내용은 "너 내가 말한 이런 함수의 접근권한을 가지고 있어야 되!!" 라는 말임

"현재 너의 Lambda에 DynamoDB의 Trigger 연결을 하기 위해서는 GetRecords, GetShardIterator, DescribeString 그리고 ListStreams 함수 접근 권한이 필요해"라는 이야기이다. 도대체 이 Lambda의 역할명이 무엇이지 알고 수정을 한단 말인가!! 걱정하지 말라. 아래로 살짝 내려보면 역할명을 확인할 수 있다.

아래로 조금만 내리면 [실행역할 > 기존 역할]이라는 영역을 확인할 수 있다. 여기서 기존 역할 밑에 [IAM 콘솔에서 역할명]을 새로운 창으로 열어준다. IAM 섹션에 들어오게 되면 이전에 확인했던 IAM 역할 설정 화면이 나온다. 그러면 경고창에 나왔던 필요한 함수를 IAM 역할에 주입시켜주면 된다. 여기까지 IAM 역할을 만들고 다시 Lambda 섹션으로 돌아와서 Trigger를 [Add] 시키면 Lambda에 DynamoDB가 Trigger로 연결이 된다.

 

다음에는 연결된 DynamoDB와 Lambda간에 테스트를 진행하고 Polly로 데이터를 보낼 수 있도록 가공하도록 하겠다.