BLOG

AWS IoT Analytics 사용하여서 IoT 애플리케이션을 컨테이너화 하세요!
작성일: 2018-11-14

개요

IOT Analytics에 대한 이전 블로그 게시물에서 AWS IoT Analytics를 사용하여 연결된 장치에서 생성된 대량의 시계열 데이터를 수집, 시각화, 처리, 쿼리 및 저장할 수 있는 방법에 대해 설명했습니다. 이 블로그 게시물에서는 맞춤 애플리케이션을 사용하여 AWS IoT Analytics와 상호 작용하는 방법을 보여줍니다. 특히, 우리는 다음의 사항들을 논의하겠습니다.

 

  • 사용자 정의 코드를 AWS IOT Analytics에 도커 이미지로 가져 오는 방법
  • 도커 기반 응용 프로그램이 일정에 따라 일괄 처리 데이터를 처리 할 수 있는 방법

 

시나리오

우리는 AWS IoTT를 사용하여 에너지 효율이 높은 뉴욕시의 한 스마트 건물을 예로 사용하겠습니다. 이 건물에는 센서가 설치된 회의실, 전화 부스 및 사무실이 갖추어져 있습니다. 서로 다른 층 및 객실에 걸친 다양한 센서의 원격 측정 데이터가 회사 회의 일정 데이터에 일정한 간격으로 분석되어 실 사용 여부를 식별합니다. 그렇지 않은 경우, 방의 조명 및 에어컨이 꺼져 있습니다.

 

아래는 해당 시나리오의 flow 입니다.

 

  1. 다양한 센서의 원격 측정 데이터는 건물의 장치 게이트웨이를 통해 클라우드의 AWS IoT Core 주제 (예 : 건물 / 센서)에 게시됩니다.
  2. AWS IoT Core는 규칙 엔진을 사용하여 데이터를 AWS IoT Analytics의 데이터 저장소로 라우팅합니다.
  3. 데이터 저장소의 데이터는 AWS IoT Analytics와 통합된 컨테이너화된 애플리케이션으로 분석됩니다. 이 블로그에서는 조명과 에어컨이 켜져있는 방의 수를 결정하는데 이 블로그를 사용합니다.
  4. 결과 집합은 기업 달력에 대해 유효성을 검사하여 이 기간 동안 예약된 객실이 있는지 또는 조명이나 에어컨을 꺼서 에너지를 절약 할 수 있는지를 결정합니다. 출력은 추가 작업을 위해 랜딩 영역에 저장됩니다.

 

 

 

사전 요구 사항

이 블로그는 독자가 솔루션 섹션으로 이동하기 전에 다음 단계를 완료했다고 가정합니다.

 

  • Ec2 인스턴스에 로그인 할 수 있는 ssh 키 쌍을 만듭니다. ssh 키 쌍은 AWS 콘솔에서 EC2 -> 키 쌍으로 생성하거나 가져올 수 있습니다
  • cloudformation 템플릿을 실행하여 이 랩의 환경을 프로비저닝하십시오.
  • cloudformation 스택이 성공적으로 생성되면 원격 측정 데이터가 게시되고 있는지 확인하십시오.
    • AWS IoT  Core 콘솔로 이동하여 왼쪽 창에서 Test를 클릭하십시오.
      • 가입 주제 : 워크샵 / 원격 측정
      • 주제 구독을 클릭하십시오.

 

해결책

SQL 데이터셋 작성

SQL 데이터셋은 SQL 데이터베이스의 구체화된 보기와 유사합니다. 위 섹션에서 생성된 원격 측정 데이터를 저장할 SQL 데이터셋을 아래에서 작성합니다.

 

AWS IoT Analytics 콘솔 홈페이지의 왼쪽 탐색 창에서 분석을 선택합니다.

 

  • 데이터셋 → 작성을 클릭하십시오.
  • SQL 데이터셋 선택 → SQL 작성
  • SQL 데이터셋에 대한 ID를 선택하고 데이터 스토어를 선택하십시오.
    • ID → mydataset, 데이터 저장소 원본 → mydatastore, 다음을 클릭합니다.
  • 아래 SQL을 쿼리 창에 붙여넣고 다음을 클릭하십시오.

 

SELECT floor_id,room_id,day,time FROM mydatastore where light = 1 and hvac = 1

 

  • 델타 선택 창을 없음 (기본값)으로 유지하고 다음을 클릭하십시오.
  • 15 분마다 실행되도록 데이터셋 예약
    • Minute of hour – 0을 선택하고 Next를 클릭하십시오.
  • 데이터셋 (무기한) 및 데이터셋 작성의 기본 보유 기간을 선택하십시오.

 

쿼리 데이터

방금 작성한 데이터셋을 클릭하십시오.

 

  • 데이터셋 페이지의 오른쪽 상단에서 작업을 선택한 다음 지금 실행을 선택하십시오.
  • 데이터셋이 결과를 표시하는 데 몇 분이 걸릴 수 있습니다. 왼쪽 위 모서리에 있는 데이터셋의 이름으로 SUCCEEDED를 확인하십시오. 내용 섹션에는 쿼리 결과 (왼쪽 창)가 있습니다.

 

분석을 위한 맞춤 컨테이너 만들기

맞춤 애플리케이션 코드로 도커 이미지를 생성하려면 아래 지침을 따르십시오.

 

  1. SSH에서 Ec2 인스턴스로 (cloudformation 출력 탭에서 복사 명령) & 도커 디렉토리로 이동 :

[bash]

cd ~/docker-setup

aws s3 cp ./calendar.csv s3://<paste-s3-bucket-name-from-cloudformation-output>

  1. Docker 이미지 만들기

[bash]

docker build t containerappia .

  1. Docker repo에서 새로운 이미지를 볼 수 있을 것입니다. 다음을 돌려서 확인하세요:

[bash]

docker image ls | grep containerappia

  1. ECR 에서 새로운 저장소를 생성하세요.

[bash]

aws ecr createrepository repositoryname containerappia

단계 7 & 8에서 사용하기 위해 출력에서 repositoryUri를 복사하십시오.

  1. Docker 환경에 로그인하십시오

[bash]

aws ecr getlogin noincludeemail

  1. 출력을 복사하고 실행하십시오. 결과는 아래와 같은 형태일 것입니다.

[bash]

docker login u AWS p <password> https://<yourawsaccountid>.dkr.ecr.amazonaws.com

  1. ECR 저장소 태그로 만든 이미지를 테그하십시오.

[bash]

docker tag containerappia:latest <<paste repositoryUri copied earlier>>:latest

  1. 이미지를 ECR 로 보내십시오.

[bash]

docker push <<paste repositoryUri copied earlier>>

 

컨테이너 데이터셋 만들기

컨테이너 데이터셋을 사용하면 분석 도구를 자동으로 실행하고 결과를 생성 할 수 있습니다. SQL 데이터셋을 입력으로 사용하고 Docker 컨테이너에 분석 도구와 필요한 라이브러리 파일, 입력 및 출력 변수 및 선택적 일정 트리거를 제공합니다. 입력 및 출력 변수는 실행 가능 이미지에 데이터를 가져올 위치를 알려주고 결과를 저장합니다.

 

AWS IoT Analytics 콘솔 홈페이지의 왼쪽 탐색 창에서 분석을 선택합니다.

 

  • 데이터셋 → 생성을 클릭하십시오.
  • 컨테이너 데이터셋 선택 → 컨테이너 작성
  • 컨테이너 데이터셋 → container_dataset에 대한 고유 ID를 선택하고 다음을 클릭하십시오.
  • 옵션 → 기존 데이터셋의 쿼리 링크 → 링크를 선택하십시오.
  • 분석할 트리거를 선택하십시오 → mydataset 선택 → 일정이 자동으로 채워지면 다음을 클릭하십시오.
  • ECR 저장소에서 선택 → 저장소 컨테이너 -app-ia 선택 (아래 스크린 샷에 따라)
  • 이미지 선택 → 최신 태그로 이미지 선택

 

 

  • 입력 변수를 구성하십시오 (아래 참조) → 다음을 클릭하십시오 :

 

Name Type Value
datasetv Content version mydataset
resulturi Output file output.csv
inputDataS3BucketName String <<paste s3 bucket name from cloudformation output>>
inputDataS3Key String calendar.csv
  • 역할 선택 → IAM 역할 선택 → 검색 및 iotAContainerRole 선택
  • 컨테이너 용량 구성 :
    • 컴퓨팅 리소스 : 4 개의 vCPU 및 16 개의 GiB 메모리
    • 볼륨 크기 (GB) : 1
  • 결과 보유 유지 → 기본 (무기한) 유지 및 데이터셋 작성을 클릭하십시오.

 

컨테이너 데이터셋 쿼리 및 유효성 검사

AWS IoT Analytics 콘솔 홈페이지의 왼쪽 탐색 창에서 분석을 선택합니다.

 

  • 데이터셋 → container_dataset을 선택하십시오.
  • 데이터셋 페이지의 오른쪽 상단에서 작업을 선택한 다음 지금 실행을 선택하십시오.
  • 데이터셋이 결과를 표시하는 데 몇 분이 걸릴 수 있습니다. 왼쪽 위 모서리에 있는 데이터셋의 이름으로 SUCCEEDED를 확인하십시오. 콘텐츠 탭 (왼쪽 창) 또는 S3 버킷에 출력 파일이 있는지 확인하고 다운로드하십시오.

다운로드한 출력 데이터는 아래와 유사해야 합니다.

 

 

 

따라서 스마트 빌딩에서 빈 객실에 조명과 에어컨을 끌 수 있는 것처럼 원격 측정 데이터를 수집하고, 사용자 지정 도커 코드를 사용하여 데이터를 보완하여 룸의 가용성에 대한 통찰력을 얻고, 처리된 데이터를 랜딩 존에 저장함으로써 추가 작업을 수행할 수 있는 워크플로우를 완성할 수 있습니다.

 

Clean-up

이 블로그의 일부로 작성된 리소스를 정리하려면 아래 지침을 따르십시오.

 

  • SSH에서 EC2 인스턴스로 및 청소 디렉토리로 이동하십시오.cd ~/clean-up./clean-up.shEnter name of the device > smart-buildingEnter device type > sensorsEnter S3 bucket > <<paste your s3 bucket name>>
  • AWS Console -> Cloudformation 선택 -> 이전에 생성된 스택 선택 및 삭제로 이동합니다.
  • AWS Console -> ECS 선택 -> 저장소 선택 (왼쪽 창) -> ECR 저장소 “container-app-ia” 삭제로 이동합니다.

 

문제 해결

 

  • SQL 데이터셋 실행이 실패하면 다음을 실행하여 해당 버전의 오류를 확인하십시오.
    • SSH를 EC2 인스턴스에 연결하고 아래를 실행합니다.

[bash]

aws iotanalytics listdatasetcontents datasetname mydataset

  • 컨테이너 데이터셋 실행이 실패하면 문제 해결을 위해
    • Cloudwatch -> 로그 그룹 → / aws / sagemaker / TrainingJobs에서 로그를 확인할 수 있습니다.
  • 다른 이슈가 있으면 여기를 참고하십시오.-링크

 

결론

AWS IoT Analytics를 사용하면 컨테이너의 사용자 정의 코드를 사용하여 일정 데이터를 가지고 센서 데이터를 분석, 처리 및 강화할 수 있었습니다. 이제 Amazon S3에 분석 데이터 / 시각화 / 장치 섀도우 업데이트를 수행 할 수 있는 출력 데이터 파일이 있습니다. 일반적인 패턴은 파일이 Amazon S3에 업로드 되면 AWS Lambda 함수를 트리거하는 것입니다. AWS Lambda 함수는 파일을 분석하여 여유 공간을 파악하고 AWS IoT Core에 등록 된 각 장치의 장치 그림자를 업데이트하여 건물의 해당 객실에 대한 조명 및 에어컨을 끌 수 있습니다. 이 게시물의 정보가 도움이 되셨기를 바랍니다.

 

원문 URL: https://aws.amazon.com/ko/blogs/iot/containerize-your-iot-application-with-aws-iot-analytics/

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.