라트노팜 차크라바티 는 현재 에릭슨에서 근무하는 소프트웨어 개발자입니다. 그는 오랫동안 IoT, 기계 간 기술, 커넥티드 카, 스마트 시티 분야에 집중해 왔습니다. 그는 새로운 기술을 배우고 이를 실무에 적용하는 것을 좋아합니다. 일하지 않을 때는 3살 난 아들과 함께 시간을 보내는 것을 즐깁니다.

멋진 AWS(아마존 웹 서비스)
In 파트 1 그리고 파트 2 시리즈에서는 주로 카우치베이스에 대해 이야기했습니다. 이번 편에서는 AWS, 특히 AWS Reckognition API에 대해 집중적으로 살펴보겠습니다.
S3 버킷 만들기
포토갤러리 앱을 실행하기 위한 전제 조건으로 Amazon Web Services 계정을 사용하여 s3 버킷을 만들어야 합니다. 이 버킷은 클라우드 포메이션 템플릿 시리즈 1부에서 자동으로 생성하는 방법에 대해 설명했지만, 그렇지 않은 경우 언제든지 AWS 콘솔을 사용하여 수동으로 생성할 수 있습니다.
버킷 정책
Couchbase와 S3는 모두 데이터를 저장하기 위해 "버킷"이라는 개념을 사용합니다. 저는 "버킷"이라는 용어를 언급할 때 그것이 Couchbase 버킷인지 S3 버킷인지에 대해 적절한 맥락을 언급하려고 노력할 것입니다. "버킷"의 기본 목적은 Couchbase와 S3 모두에 데이터를 저장하는 것이지만, 둘을 혼동하지 않도록 주의하세요.
여기서는 S3 버킷을 의미합니다.
사용자가 s3 버킷에 이미지를 저장할 수 있도록 하려면 버킷 정책을 만들어야 합니다. 기본적으로 s3 버킷에 대한 액세스는 비공개입니다. 기본 정책을 재정의하기 위해 모든 사용자가 s3에 개체를 저장하고 s3에서 개체를 가져올 수 있도록 허용하는 다음 정책을 만듭니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ "Version": "2012-10-17", "Id": "Policy1493677249191", "Statement": [ { "Sid": "Stmt1493677246291", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::la-image-tagger-chakrar27/*" } ] } |
제 경우 생성된 버킷 이름은 다음과 같습니다. LA-이미지-태거-차크라27.
재인식을 사용한 이미지 분석
2016년 말, AWS는 이미지를 분석하고 이미지에 대한 유용한 정보를 추론할 수 있는 이미지 처리 서비스인 Rekognition을 출시했습니다. 자세한 내용은 AWS Rekognition 설명서를 참조하세요. 여기.
포토 갤러리 앱의 경우, 저는 detectLabels() API를 제공합니다. 신뢰도 점수가 포함된 키-값 쌍의 레이블을 반환합니다. 다음 코드 스니펫이 이를 수행합니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
(function(filename, res) { var rekognition = new aws.Rekognition(); var params = { Image: { S3Object: { Bucket: S3_BUCKET, Name: filename } }, MaxLabels: 5, MinConfidence: 50 }; rekognition.detectLabels(params, function(err, data) { if (err) { console.log("Error in REKO" + err); } else { // successful response data = JSON.stringify(data); } }) } |
위의 코드는 AWS 리코그니션의 탐지 레이블 API를 호출하여 이미지 분석에 기반한 레이블 세트를 반환합니다. 이 경우 최대 레이블 수를 5개로 제한하고 최소 신뢰도를 50%로 제한했습니다.
레이블이 반환되면 JSON을 사용하여 구문 분석하고 다음을 푸시합니다. 태그 배열을 추가합니다. 이 작업이 완료되면 저장() 함수를 호출하여 문서를 카우치베이스 버킷에 저장합니다.
Rekognition은 다음과 같은 멋진 API를 제공합니다. detectFaces() 그리고 비교 얼굴() 완전히 새로운 사용 사례의 스펙트럼을 열어주지만, 지금은 단순하게 detectLabels() API로 시작하세요.
앱 실행
포토갤러리 노드 앱을 실행하려면 S3 액세스 키와 비밀키가 있어야 합니다. 노드의 "dotenv" 모듈을 사용하여 소스 코드에 .env라는 파일에 저장할 수 있습니다. 이렇게 하면 .env 파일을 .gitignore에 추가해야 합니다.:
|
1 2 3 |
node_modules/ *.env |
극도로 자선적인 기분이 아니라면 AWS 액세스 키를 세상에 노출하고 싶지 않을 것입니다. 하지만 저는 이러한 값을 환경 변수로 전달하는 것을 선호합니다. 환경 변수를 사용하여 노드 앱을 실행하는 방법은 다음과 같습니다:
|
1 |
env AWS_ACCESS_KEY=<Your Access Key> AWS_SECRET_KEY=<Your Secret key> S3_BUCKET=<S3-bucket-name> HOST=https://localhost:3000 COUCHBASE_HOST=127.0.0.1:8091 COUCHBASE_BUCKET=photogallery node upload.js |