BLOG
개요
IOT Analytics에 대한 이전 블로그 게시물에서 AWS IoT Analytics를 사용하여 연결된 장치에서 생성된 대량의 시계열 데이터를 수집, 시각화, 처리, 쿼리 및 저장할 수 있는 방법에 대해 설명했습니다. 이 블로그 게시물에서는 맞춤 애플리케이션을 사용하여 AWS IoT Analytics와 상호 작용하는 방법을 보여줍니다. 특히, 우리는 다음의 사항들을 논의하겠습니다.
시나리오
우리는 AWS IoTT를 사용하여 에너지 효율이 높은 뉴욕시의 한 스마트 건물을 예로 사용하겠습니다. 이 건물에는 센서가 설치된 회의실, 전화 부스 및 사무실이 갖추어져 있습니다. 서로 다른 층 및 객실에 걸친 다양한 센서의 원격 측정 데이터가 회사 회의 일정 데이터에 일정한 간격으로 분석되어 실 사용 여부를 식별합니다. 그렇지 않은 경우, 방의 조명 및 에어컨이 꺼져 있습니다.
아래는 해당 시나리오의 flow 입니다.
- 다양한 센서의 원격 측정 데이터는 건물의 장치 게이트웨이를 통해 클라우드의 AWS IoT Core 주제 (예 : 건물 / 센서)에 게시됩니다.
- AWS IoT Core는 규칙 엔진을 사용하여 데이터를 AWS IoT Analytics의 데이터 저장소로 라우팅합니다.
- 데이터 저장소의 데이터는 AWS IoT Analytics와 통합된 컨테이너화된 애플리케이션으로 분석됩니다. 이 블로그에서는 조명과 에어컨이 켜져있는 방의 수를 결정하는데 이 블로그를 사용합니다.
- 결과 집합은 기업 달력에 대해 유효성을 검사하여 이 기간 동안 예약된 객실이 있는지 또는 조명이나 에어컨을 꺼서 에너지를 절약 할 수 있는지를 결정합니다. 출력은 추가 작업을 위해 랜딩 영역에 저장됩니다.
사전 요구 사항
이 블로그는 독자가 솔루션 섹션으로 이동하기 전에 다음 단계를 완료했다고 가정합니다.
- Ec2 인스턴스에 로그인 할 수 있는 ssh 키 쌍을 만듭니다. ssh 키 쌍은 AWS 콘솔에서 EC2 -> 키 쌍으로 생성하거나 가져올 수 있습니다
- cloudformation 템플릿을 실행하여 이 랩의 환경을 프로비저닝하십시오.
- cloudformation 스택이 성공적으로 생성되면 원격 측정 데이터가 게시되고 있는지 확인하십시오.
- AWS IoT Core 콘솔로 이동하여 왼쪽 창에서 Test를 클릭하십시오.
- 가입 주제 : 워크샵 / 원격 측정
- 주제 구독을 클릭하십시오.
- 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를 확인하십시오. 내용 섹션에는 쿼리 결과 (왼쪽 창)가 있습니다.
분석을 위한 맞춤 컨테이너 만들기
맞춤 애플리케이션 코드로 도커 이미지를 생성하려면 아래 지침을 따르십시오.
- SSH에서 Ec2 인스턴스로 (cloudformation 출력 탭에서 복사 명령) & 도커 디렉토리로 이동 :
[bash]
cd ~/docker-setup
aws s3 cp ./calendar.csv s3://<paste-s3-bucket-name-from-cloudformation-output>
- Docker 이미지 만들기
[bash]
docker build –t container–app–ia .
- Docker repo에서 새로운 이미지를 볼 수 있을 것입니다. 다음을 돌려서 확인하세요:
[bash]
docker image ls | grep container–app–ia
- ECR 에서 새로운 저장소를 생성하세요.
[bash]
aws ecr create–repository —repository–name container–app–ia
단계 7 & 8에서 사용하기 위해 출력에서 repositoryUri를 복사하십시오.
- Docker 환경에 로그인하십시오
[bash]
aws ecr get–login —no–include–email
- 출력을 복사하고 실행하십시오. 결과는 아래와 같은 형태일 것입니다.
[bash]
docker login –u AWS –p <password> https://<your–aws–account–id>.dkr.ecr.amazonaws.com
- ECR 저장소 태그로 만든 이미지를 테그하십시오.
[bash]
docker tag container–app–ia:latest <<paste repositoryUri copied earlier>>:latest
- 이미지를 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 list–dataset–contents —dataset–name 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페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.