AWS에서 메시지 보내고 받기

Serverless 이미지 인식 시스템 만들기 - 분석 서비스 구축

by Younggi Seo






앞서 구축한 비동기식 서비스(이미지 인식 시스템 분석 서비스) 배포는 크롤러 서비스와 유사한 방식으로 SQS(Simple Queue Service) 큐 메시지에 의해 분석에 사용 가능한 이미지가 트리거 되어 아마존 레코그니션(rekognition) 서비스와 연결한다. 레이블(이름표) 집합에는 이미지로부터 AI(모델)가 인식한 물체를 표현하는 단어와 그에 대한 신뢰도(1~100 가장 신뢰)이며 분석 서비스가 반환된 데이터를 처리하여 워드 클라우드 생성기에 공급할 수 있는 단어 수의 집합(각 이미지들의 공통 스레드)을 만들어 시각적으로 확인이 가능하다.



반면, 동기 서비스의 배포 로직은 프런트 엔드단에서 API를 호출하여, API가 S3로부터 데이터 및 URL을 읽어서 각 S3 버킷과 작업 큐에 크롤링한 값들을 떨군다. 그다음에 API가 SQS에 메시지를 포스팅하여 '비'동기 프로세스를 트리거한다.



2. 동기식 서비스 배포

- UI 서비스와 프런트엔드로 구성됨.

1) UI 서비스의 세 가지 진입점(세 개의 *람다 함수)

url/list: 분석을 위해 제출된 모든 URL을 나열함 → 아래 urlParser 상수(변하지 않는 값)에 URL 파싱을 위한 url 노드 모듈 로딩 및 저장

image/list: 특정 URL에 대해 분석된 모든 이미지 나열함

url/analyze: 분석을 위해 URL을 제출함


*람다(Lamda) : 작은 프로그램을 실행하는 구조(일괄처리)이며, 미리 등록해 두면 언제든 실행 가능. AWS Lamda는 데이터나 요청에 대한 실시간 처리나 백엔드 처리를 자동으로 실행하는 구조임. 전용 서버를 구축하거나 따로 관리하지 않아도 필요한 이벤트가 자동으로 실행됨. 서버에 상주하는 프로그램과는 다르게 프로그램 실행 시에만 요금이 부과됨.


ui-service 디렉터리 내의 handler.js 파일의 구현


위의 handler.js 파일의 내부에서는 AWS SDK를 가지고 서비스에 필요한 객체, S3 및 SQS를 위에 마킹한 과정대로 생성한다.


1) listUrls 람다 함수

HTTP GET 메서드 요청에 따라 API 게이트웨이를 통하여 실행.

1) listUrls 함수의 진입점 2) S3 객체 리스트 3) URL 리스트로 응답



2) listImages 함수

listUrls 람다 함수와 마찬가지로 listImage 함수도 image 리스트로 응답


3) analyzeUrl 함수

1) 큐 URL 생성 2) SQS 메시지 전송


2.1 프런드 엔드 서비스

이제 곧바로 배포를 진행하기 위해 아래와 같이 커스텀 도메인 항목을 만들고 ui-service 배포를 위한 기본 도메인을 사용한다. 또한 기본 도메인에 대한 인증서와 그 인증서의 ARN 환경 변수를 설정한다.




custom.bucket 등 몇 가지 환경변수 에러로 커스텀 도메인 생성 failed



베이스도메인_환경변수 재설정.jpg .bash_profile 환경 변수 설정 재확인 후 베이스 도메인 관련 환경변수에서 DOMAIN_ARN 값을 잘못 넣어서 수정




domain_info..jpg 생성한 도메인에서 아래의 A 타입의 APIgateway에서 가져오는 DNS 레코드가 생성되지 않았다는 것을 확인


도메인등록(A레코드).jpg A type의 DNS 레코드 생성



serverless_버전대체.jpg ui_Url 디렉터리 하위 serverless.yml의 설정값 중 iamRoleStatement가 deprecated(npm 버전 업데이트)되었다는 메시지를 통해서 에디터로 수정


deprecated_edited.jpg 하지만 모든 환경설정을 다시 했지만, 역시 API Gateway에서 사설 도메인 생성이 안됐고, *. worldempirehistory(필자의 도메인)의 인증서를 찾을 수 없음



인증서 발급 후, 해당 인증서 ARN을 도메인 ARN 환경변수로 설정했다.

인증서 발급.jpg



인증서를 생성 후 개인 도메인 가져오는 것까지 성공했으나,

개인도메인생성_성공.jpg



개인도메인생성_확인.jpg chapter 4 실습을 시작하면서 일단 개인 도메인 레코드 A유형이 생성되었다.



작업목록 API배포.jpg serverless 배포까지 완료


매거진의 이전글AWS에서 메시지 보내고 받기