iyOmSd/Title: Project

[AUSG 참여] AWS & iOS 얼굴인식을 이용한 음악추천 앱 - AWS Server부분

냄수 2019. 8. 2. 10:44
반응형

 

자세한 사용 가이드참조

https://github.com/namsoo5/ExpressionRekognitionMusicService

 

 

 

 

[준비사항]

● 맥북

● AWS 계정

● VSCode(코드편집기)

● nodejs

● Xcode

 

 

🖥사용 기술 소개

💡AWS

Rekognition : 딥러닝 기반 시각 분석 서비스

우리는 얼굴 분석 기술을 사용할 예정입니다. 자세히 알아보기

IAM : AWS 리소스에 대한 액세스를 안전하게 관리할 수 있게 해주는 서비스

AWS CLI : AWS 서비스를 관리하는 통합 도구

EC2 : AWS 상에서 크기를 조절 가능한 컴퓨팅 파워를 제공하는 웹 서비스

 

💡Front-End : iOS

Alamofire : iOS 네트워킹 라이브러리

SwiftyJSON : JSON 파싱 자동화 라이브러리

Kingfisher : 이미지 다운로드 및 캐싱 라이브러리

YoutubePlayer-in-WKWebView : 유튜브 동영상을 앱 내에서 보여줄 수 있도록 도와주는 라이브러리

 

💡Back-End : Node.js

Express : Web 어플리케이션 프레임워크

Web 응용 프로그램을 위한 기본적인 시스템이 구축되어 있습니다.

 

 

 

 

1. IAM 생성

IAM(Identitiy & Access Management)

AWS 리소스에 대한 액세스를 안전하게 관리할 수 있게 해주는 서비스로 
AWS 사용자 및 그룹을 만들고 관리하며, 권한을 사용해 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있습니다.

이번 실습에서 표정 인식 기술을 사용하기 위해 AWS Rekognition을 사용하게 됩니다.

이러한 AWS 서비스를 사용하려면 액세스 할 때, 자격 증명을 제공해야 합니다.

이를 통해, 사용자가 서비스가 소유한 리소스에 액세스 할 수 있는 권한이 있는지를 확인합니다.

그렇기 때문에, IAM을 생성하는 것입니다!

 

 

 

생성

aws서비스에서 IAM를 검색

텍스트 추가

 

왼쪽메뉴의 사용자버튼을누르고 사용자추가 버튼을 클릭

 

이름을 쓰고

엑세스유형을 프로그래밍 방식 엑세스로 설정

 

다음버튼을 누르고 권한을 추가

기존정책 직접연결을 누르고

아래 3개의 정책을 추가

 

AmazonRekognitionFullAccess – 모음 생성 및 삭제를 포함하여 Amazon Rekognition 리소스에 대한 모든 액세스 권한을 부여합니다.

AmazonRekognitionReadOnlyAccess – Amazon Rekognition 리소스에 대한 읽기 전용 액세스 권한을 부여합니다.

AmazonRekognitionServiceRole – Amazon Rekognition은 Amazon Kinesis Data Streams 및 Amazon SNS 서비스를 자동으로 호출할 수 있습니다

 

 

위와같이 완료된 모습이 보입니다.

 

.csv는 이때밖에 저장을 할수없게 됩니다. 

그러므로  저장해야합니다.

이때이름은 IAM 사용자 이름과 동일한 파일명으로 하는것을 추천합니다.

 

 

 

 

 

 

2. EC2 생성

프리티어로도 충분한 조건을 충족하므로 프리티어로 해도 됩니다.

태그를 생성해주고

nodejs 서버를 사용할 것이므로 3000번 포트를 추가로 열어줍니다.

생성후 키페어를 만들고 pem파일을 저장합니다.

이 pem파일은 나중에 서버에 접속할때 사용하는 파일입니다.

 

 

 

 

 

 

3. AWS CLI 설치하기

 

AWS 명령줄 인터페이스(CLI)는 AWS 서비스를 관리하는 통합 도구입니다.

도구 하나만 다운로드하여 구성하면 여러 AWS 서비스를 명령줄에서 제어하고 스크립트를 통해 자동화할 수 있습니다.

AWS CLI를 사용하여 Rekognition 얼굴 분석 API를 이용할 수 있습니다.

 

 

1단계 : 번들 설치 관리자를 사용하여 AWS CLI 설치

 

연결버튼을누르고

 

 

pem파일있는 폴더에서 위와같이 명령어를 실행해서 서버에 접속할수있습니다.

 

 

 

1. AWS CLI 번들 설치 관리자 다운로드하기

// AWS CLI를 사용하기 위해서는 Python 2 버전 2.6.5+ 또는 Python 3 버전 3.3+이 필요합니다. 
$ sudo apt update 
$ sudo apt install python 
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"

 

2. 패키지 압축 풀기

$ sudo apt install unzip $ unzip awscli-bundle.zip

 

3. 설치 프로그램 실행

$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

 

2단계 : AWS CLI 구성하기

아까 저장했던 AWS-Reko-iOS.csv 파일에 있는 Access Key, Secret Access Key를 입력해주세요. 나머지 항목은 아래와 같이 동일하게 입력해주시면 됩니다.

 

$ aws configure AWS Access Key ID [None]: //자신의 Access Key 
AWS Secret Access Key [None]: //자신의 Secret Access Key 
Default region name [None]: ap-northeast-2 
Default output format [None]: json
Default region name : 리전
Default region name은 기본적으로 요청을 전송할 서버가 있는 AWS 리전을 식별합니다. 이 리전은 일반적으로 가장 가까운 리전이지만 어떤 리전이든 될 수 있습니다.
Default output format : 출력 형식
Default output format은 결과의 형식을 지정하는 방법을 지정합니다.

 

아래 명령을 실행하면, [default] 항목에 설정한 Key들이 저장되어 있는 것을 확인하실 수 있습니다.

 

$ cd ~/.aws $ cat credentials

 

 

 

 

 

 

 

4. node.js로 api만들기

1단계 : node express 설치하기

폴더를 생성하고 그 폴더에서 npm init 명령어를 실행합니다

 

왼쪽(에러) 오른쪽(정상)

$ npm install express --save 
$ express $ npm install

위과정시 에러가 날경우 아래의 명령어로 express를 설치합니다.

$ sudo npm install -g express-generator 
$ express $ npm install

 

 

 

2단계 : 추가 node module 설치하기

Recognition API에 필요한 추가 모듈을 설치하도록 하겠습니다.

 

$ npm install fs-extra multer aws-sdk --save

 

fs-extra : fs 모듈은 FileSystem의 약자로 파일 처리와 관련된 모듈입니다.
multer : 파일 업로드를 위해서 사용되는 multipart/form-data를 다루기 위한 node.js 미들웨어입니다. 이미지 업로드를 도와주는 모듈입니다.
aws-sdk : node.js에서 AWS를 사용할 수 있는 모듈입니다. SDK를 사용하면 Amazon S3, Amazon EC2, DynamoDB 및 Amazon SWF를 포함하는 AWS 서비스를 위한 JavaScript 객체가 제공되므로 복잡하게 코드를 작성하지 않아도 됩니다.

 

3단계 : vscode를 이용해서 프로젝트 폴더열기

4단계 : js파일 작성

$ npm start

 

 

http://localhost:3000/ 으로 접속하시면 이렇게 express 페이지가 나타납니다.

 

5단계 : 서버 실행하기

node.js 서버를 작성하고

http://localhost:3000/api/rekognition 으로 접속하면

404 에러가 발생하는 것이 정상입니다

API 형식에 맞지 않게 이미지 파일을 업로드 하지 않아 발생한 정상적인 에러입니다.

단순히 서버가 잘 배포되었는지 확인하기 위한 과정입니다

 

 

 

 

6단계 : 서버 파일 압축하기

//aws-reko-server는 자신이 만든 서버 프로젝트 파일명입니다.
//혹시 다르게 이름을 설정하신 분들은 알맞는 이름으로 바꿔주세요.
//node_moules을 제외하고 압축하겠다는 명령어를 추가했습니다.
$ cd aws-reko-server
$ zip -r ../aws-reko-server ./ -x \*node_modules\*

 

 

 

 

 

5. EC2에 서버 배포하기

1단계 EC2에 프로젝트 압축 파일 업로드하기

$ scp -i [pem 파일 경로] [압축한 파일 이름] ubuntu@[ec2 인스턴스의 퍼블릭 DNS]:~/[ec2에 저장할 경로]

 

 

2단계 EC2 서버접속하기

3단계 : 업로드한 프로젝트 압축 파일 풀기

$ ls    //파일이 업로드 되었는지 확인해보세요.
//unzip이 없다면 설치해주세요.
$ unzip aws-sever-node.zip

 

 

4단계 : EC2에 node.js 및 npm 설치하기

//이 과정에서 에러가 난다면 
$sudo apt-get update를 실행해주세요.
$ sudo apt install nodejs
$ sudo apt install npm 
$ npm -v $ node -v 
// 버전 정보가 확인된다면 설치가 완료된 것입니다.

 

5단계 : 서버 실행하기

$ cd aws-server-node   //경로 이동 
$ npm install 
$ npm start

 

 

 

 

 

반응형