BLOG

[Techblog] AWS IoT Things Graph로 공장 현장에서 게이지 모니터링
작성일: 2021-06-24

많은 기업이 직면하는 일반적인 과제 중 하나는 시각적이며 디지털 형식으로 쉽게 캡처할 수 없는 정보의 출처가 있다는 것입니다. 이러한 데이터 출처는 산업 운영의 전반적인 상태를 이해하는 데 중요할 수 있습니다. 하여 오늘 메가존 테크블로그에서는 공장 현장에서 캡처한 아날로그 게이지의 이미지를 처리하고 분석하는 AWS IoT Things Graph 흐름을 구축해보고, 사용자가 원하는대로 맞춤화하는 방법을 보여드리겠습니다.

 

AWS IoT Things Graph는 IoT 애플리케이션 개발을 단순화하는 오케스트레이션 서비스입니다. 이러한 애플리케이션은 서로 다른 프로토콜, 데이터 형식 및 메시지 구문을 사용하기 때문에 서로 통신 할 수 없는 서로 다른 제조업체의 서로 다른 장치나 웹 서비스를 사용할 수 있습니다.

 

그럼 이제 AWS IoT Things Graph의 다양한 구성 요소를 알아보며 흐름을 구축하고, 이를 엣지와 클라우드에 배포해 보겠습니다.

 

 

솔루션 개요

다음 다이어그램은 클라우드로 흐름을 배포하는 과정 중 첫 단계에 해당하는 솔루션 아키텍처입니다. 곧 이어 두번 째 단계에서는 엣지 디바이스에 흐름을 배포하는 방법을 설명해 드리겠습니다.

 

다음 다이어그램에서 솔루션의 아키텍처를 볼 수 있습니다. 아날로그 게이지의 이미지가 Amazon S3(Simple Storage Service) 버킷에 업로드되면 이벤트가 생성됩니다. 이 이벤트는 AWS IoT Core 주제와 Amazon SQS(Simple Queue Service) 대기열 모두에 메시지를 게시하는 AWS Lambda 함수를 트리거합니다 . AWS IoT Core 주제에서 수신된 모든 메시지는 AWS IoT Things Graph 흐름에 대한 트리거 역할을 하며 새 흐름을 시작합니다. 흐름이 시작되면 일련의 단계를 거쳐 이미지를 처리하고 게이지 판독 값을 반환합니다.

 

 

전제 조건

  • 본 예제에서는 미국 동부 1(버지니아 북부) 리전을 사용합니다. 이 외에도 AWS IoT Things Graph를 사용할 수 있는 리전이면 모두 선택 가능합니다. (AWS 리전 테이블을 통해 서비스 가능 리전을 확인하실 수 있습니다.)
  • 선택한 AWS 리전의 AWS 계정
  • AWS 계정에 부여된 AdministratorAccess 정책(프로덕션의의 경우 필요에 따라 액세스를 제한하는 것이 좋습니다.)
  • AWS IoT Greengrass를 호스팅하며 Amazon EC2 인스턴스를 배포할 수 있는 Amazon VPC 및 퍼블릭 서브넷 .
  • 선택한 AWS 리전에 대한 Amazon EC2 키 페어. 자세한 가이드는 Linux 인스턴스 용 Amazon EC2 사용 설명서의 Amazon EC2 키 페어를 참고해 주시기 바랍니다.
  • 미국 동부 1(버지니아 북부) 리전의 AWS IoT Greengrass 서비스 역할. 자세한 가이드는 ‘Greengrass 서비스 역할 설명  관리하기’ 페이지를 참고해 주시기 바랍니다.

 

 

첫 번째 AWS IoT Things Graph 흐름 구축하기

 

Cloud9 환경을 설정하려면

 

이번 단락에서는 Cloud9를 개발 환경으로 사용하여 Lambda 함수에 필요한 패키지를 구축하고 AWS IoT Things Graph 리소스를 생성합니다.

  1. 다음 저장소 ThingsGraphWorkshop에서 애플리케이션을 다운로드하십시오.
  2. AWS CloudFormation 콘솔을 엽니다. 탐색 창에서 Stacks을 선택한 다음 Create stack을 선택합니다 .
  3. YAML 파일 cloudformation-templates / template-1.yml  업로드하여 새 AWS CloudFormation 스택을 생성하고 다음을 클릭합니다. AWS CloudFormation 스택을 생성하는 방법에 대한 자세한 지침 ‘스택 양식 선택하기’ 가이드에서 찾을 수 있습니다  .
  4. 스택 이름은 things-graph-workshop-stack-1로 나머지는 기본값으로 두고 Next를 선택합니다 .

5. Configure stack options 페이지에서 아래로 스크롤하여 Next 선택합니다.  

6.  Review 페이지에서 아래로 스크롤하여 Create stack를 선택합니다.

7. 스택 상태가 CREATE_COMPLETE로 변경되면 Outputs탭을 선택하고 ArtifactBucketName 값을 기록해 둡니다.

 

이 AWS CloudFormation 템플릿은 개발 환경으로 사용할 Cloud9 환경을 생성합니다. 또한 프로젝트 아티팩트 리포지토리로 사용할 Amazon S3 버킷을 생성합니다.

 

 

Lambda 패키지를 빌드하려면

Lambda 함수를 위해 배포해야 하는 패키지를 빌드하기 위해 Cloud9를 개발 환경으로 사용합니다. Cloud9를 사용하여 기존 코드 베이스를 수정하고 패키지를 빌드 및 배포할 수 있습니다.

  1. AWS 콘솔의 Services 드롭 다운에서 Cloud9를 선택하고 새 탭을 엽니 다. Cloud9 환경에서 이제 things-graph-workshop-C9 라는 새 환경이 표시됩니다.
  2. Open IDE를 선택 하여 개발 환경을 엽니다.

 

3. IDE가 열리면 다음 명령을 실행하십시오.

Bash

git clone https://github.com/aws-samples/aws-iot-things-graph-workshop.git

cd aws-iot-things-graph-workshop

./builds/cloud9Resize.sh

./builds/build.sh <Replace with value of ArtifactBucketName>

 

필요한 모든 리소스를 다운로드하고 Lambda 함수에 필요한 패키지를 빌드하기 위한 이 명령을 실행하는 데는 5-10 분 정도가 소요되며, 이 때 Cloud9 환경의 디스크 크기가 증가합니다.

 

Cloud9 환경을 사용하여 프로젝트를 구축하고 필요한 모든 아티팩트를 제공된 Amazon S3 버킷에 업로드했습니다. zip 파일 things-graph-workshop.zip은 두 번째 AWS CloudFormation 템플릿에서 Lambda 함수를 생성하는 데 사용됩니다.

 

AWS IoT 환경을 설정하려면

  1. AWS CloudFormation 콘솔을 엽니다.
  2. 탐색 창에서 스택 을 선택한 다음 스택 생성을 선택합니다.
  3. YAML 파일 cloudformation-templates/template-2.yml을 업로드하여 새로운 AWS CloudFormation 스택을 생성하고, Next 선택합니다.
    1. 스택 이름을 things-graph-workshop-stack-2 로 입력하십시오 .
    2. 드롭 다운 목록에서 EC2KeyPair를 선택 합니다.
    3. 나머지 필드는 기본값으로두고 Next를 선택합니다.

4. Configure stack options에서 페이지 하단까지 스크롤하여 Next를 선택합니다.

5. Review 페이지에서 아래로 스크롤하여 필요한 리소스 생성을 위해 ‘AWS CloudFormation 권한 부여하기’ 체크 박스에 표시를 합니다.

6. Create Stack을 선택합니다. 여기서 필요한 대부분의 리소스를 설정합니다.

7. 스택의 Resources  탭으로 이동 하여 생성된 모든 리소스를 검토합니다.

 

CloudFormation 스택을 생성하여 다음을 포함한 대부분의 필요 리소스를 생성했습니다.

  • 다양한 AWS 서비스 및 Lambda 기능에 필요한 IAM 역할 및 프로필
  • Lambda 함수
  • Greengrass Groups, Things, 프로필 및 인증서와 같은 다양한 AWS IoT 리소스
  • AWS IoT Greengrass가 설치된 AWS IoT EC2 인스턴스
  • Amazon SQS 및 Amazon SNS와 같은 기타 서비스

 

스택 상태가 CREATE_COMPLETE으로 변경되면 세 번째 AWS CloudFormation 스택을 생성합니다.

  1. AWS CloudFormation 콘솔을 엽니다. 탐색 창에서 Stacks을 선택한 다음 Create stack을 선택합니다. YAML 파일 cloudformation-templates / template-3.yml을 업로드합니다.
  2. 스택 이름을 things-graph-workshop-stack-3으로 입력하십시오. 나머지 필드는 기본값으로 둡니다.

3. Configure stack options 페이지에서 페이지 하단까지 스크롤하여 Next 선택합니다. .

4. Review 페이지에서 아래로 스크롤하여 Create stack을 선택합니다.

 

 

AWS IoT Things Graph 흐름을 설정하려면

 

모델을 생성하려면

 

AWS CloudFormation 스택이 성공적으로 생성되면 Cloud9 환경에서 다음 명령을 실행합니다.

 

Bash

cd aws-iot-things-graph-workshop

./builds/buildThingsGraph.sh

 

Cloud9 에서 buildThingsGraph.sh 스크립트 를 실행하여 필요한 AWS IoT Things Graph 모델을 이미 생성했습니다. 이 모델은 우리가 사용할 다양한 장치와 서비스를 정의합니다.

 

AWS IoT Things Graph는 다양한 디바이스 및 웹 서비스와 통신하고 모델이라는 재사용 가능한 추상화를 사용하여 이들 간의 상호 작용을 조율할 수 있습니다. 모델은 디바이스에서 생성된 지원되는 작업 및 이벤트를 정의합니다. 모델은 또한 이러한 조치를 호출하고 생성된 이벤트를 읽는 방법을 설명합니다.

 

AWS IoT Things Graph 모델에 대한 자세한 설명은 AWS IoT Things Graph Data Model 참고 자료 문서를 참고해 주시기 바랍니다.

 

AWS IoT Things Graph 콘솔 의 Model 섹션 으로 이동하여 생성된 모델을 볼 수 있습니다.

 

 

AWS IoT Greengrass 디바이스를 할당하려면

AWS IoT Things Graph 흐름은 여러 디바이스를 사용하여 흐름을 실행합니다. 이제 AWS CloudFormation 템플릿을 통해 생성된 IoT Things와 AWS IoT Things Graph 디바이스 모델 간의 연결을 생성해야 합니다.

 

  1. AWS IoT Things Graph 콘솔을 엽니다.
  2. 탐색 창에서 Things를 선택합니다. 그런 다음 제시된 항목 목록에서 새로 만든 things-graph-workshop-ec2-gg-core를 선택합니다.
  3. 디바이스와 연결을 선택하고 사물을 TGWorkshopAnalogGauge 디바이스와 연결합니다 .

 

 

흐름을 만들려면

AWS IoT Things Graph 흐름은 디바이스와 서비스가 서로 상호 작용하는 방식을 정의합니다. 흐름은 이러한 상호 작용을 일련의 단계로 나열합니다. 각 단계에는 장치 또는 웹 서비스에 대한 작업과 해당 작업에 대한 관련 입력 및 출력이 포함됩니다. 자세한 내용 흐름의 작동 방식 문서를 참고해 주시기 바랍니다.

 

본 예제에서는 이미지가 Amazon S3 버킷에 업로드 될 때마다 트리거되는 워크 흐름을 구축하고 있습니다. 흐름은 이 이미지를 처리하는 데 필요한 여러 단계를 조정합니다. 이 단계는 API 호출 및/또는 장치 통합의 조합입니다.

 

  1. AWS IoT Things Graph 콘솔을 엽니다.
  2. 탐색 창에서 Flows 를 선택한 다음 Create flow 를 선택합니다.

3. 흐름의 제목을 ThingsGraphWorkshopFlow로 설정하고 Create Flow를 선택합니다.

4. AWS 콘솔에서 Edit definition document 선택합니다.

5. Cloud9 편집기에서 수정된 models-tmp / flows / cloud-flow.graphql 파일의 내용을 복사하여 붙여넣고, 편집기에 붙여넣어 Update를 선택하십시오.

6. 이제 흐름의 그래픽 다이어그램을 볼 수 있습니다.

7. 흐름을 게시 하려면 Publish를 선택합니다 .

 

게시된 AWS IoT Things Graph 흐름을 검토합니다. 흐름은 메시지가 특정 MQTT 주제로 전송 될 때 트리거됩니다. 흐름은 Amazon SQS에서 가장 최근에 게시 된 이미지에 대한 정보를 수집 한 다음 해당 이미지를 처리하고 게이지를 읽습니다.

 

 

클라우드에 흐름을 배포하려면

AWS IoT Things Graph 흐름을 게시한 후에는 클라우드 또는 엣지의 AWS IoT Greengrass 디바이스에 배포하도록 선택할 수 있습니다.

 

  1. AWS IoT Things Graph 콘솔을 엽니다.
  2. 탐색 창에서 Deploy를 선택한 다음 Create flow configuration을 선택합니다.
  3. Describe flow configuration 페이지에서
    1. 드롭 다운에서 Flow를 ThingsGraphWorkshopFlow로 설정합니다.
    2. 이름을 things_graph_workshop_cloud_deployment로 설정하십시오.
    3. 클라우드에서 실행할 흐름을 설정하고 Next를 선택합니다 .

4. 다른 서비스를 호출할 수 있는 역할을 흐름 배포에 할당합니다. 이렇게 하려면 AWS CloudFormation 스택에서 생성한 IAM 역할의 ARN을 찾습니다. ARN은 AWS Cloud Formation 스택의 출력이나 IAM에서 역할을 찾아 볼 수 있습니다.

5. 새 브라우저 탭을 열고 AWS CloudFormation 콘솔을 엽니다.

6. 탐색 창에서 Stacks을 선택한 다음 things-graph-workshop-stack-2를 선택합니다.

7. Outputs탭을 선택하고 ThingGraphRoleArn 키에 대한 값 열을 복사합니다.

8. Things Graph 탭으로 돌아가서 ARN 역할을 지나 아래 이미지와 같이 Flow actions role ARN  필드로 이동합니다.

9. Enable metrics 를 선택하고 Next를 클릭합니다.

 

  1. 드롭 다운 목록에서 새로 생성한 AWS IoT Greengrass 코어를 선택하고 모델에 할당한 후Next를선택합니다.

 

  1. Set up triggers페이지의 값들을 기본값 그대로 두고 Review를 선택합니다.

 

  1. 페이지 하단으로 스크롤하여Create을선택합니다.

 

축하합니다! 이제 AWS IoT Things Graph에서 첫 번째 흐름 구성을 생성했습니다.

 

Flow configuration 페이지에서 새로 생성된 흐름을 선택하고 Deploy를 선택합니다.

 

 

성공적인 배포에 대한 알림이 페이지 상단에 표시되어야 합니다.

 

흐름의 기본 모델 중 하나를 변경할 경우 배포를 취소한 다음 흐름 구성을 배포해야 합니다.

 

 

새 흐름을 테스트하려면

Amazon S3 버킷에 일부 이미지를 업로드하여 새 흐름을 테스트합니다.

  1. AWS IoT Core 콘솔을 엽니다.
  2. 탐색 창에서 테스트 를 선택하고 MQTT 테스트 클라이언트를 선택합니다.
  3. Subscription topic  필드에서 things-graph-workshop/gauge/reading 입력하고 Subscribe to a topic를 선택합니다.

 

4. 새 브라우저 탭을 열고 Amazon S3 콘솔을 엽니다.

5. things-graph-workshop-images-$ {accountNumber}-$ {region} 버킷을 선택하고 이미지를 업로드합니다. images/gauge/temperature 폴더에서 프로젝트 저장소 내부에 있는 여러 게이지의 이미지를 찾을 수 있습니다.

6. Amazon S3 버킷에 이미지를 업로드 한 후 MQTT 주제를 수신하는 AWS IoT Core를 보여주는 브라우저 탭으로 다시 전환합니다. 이미지를 업로드 한 후 약 15초 후에 메시지가 나타납니다.

7. AWS IoT Things Graph 콘솔로 돌아가 Deploy를 선택한 다음 배포된 흐름을 선택하여 최근 배포 된 흐름의 세부 정보를 확인합니다.

8. 가장 최근에 실행된 흐름을 표시 하려면 Flow executions 탭을 선택합니다. 

9. 흐름의 자세한 단계별 실행을 표시하려면 가장 최근 ID를 클릭하십시오. 이 보기는 흐름이 실행되는 방식을 이해하고 잠재적인 문제를 디버깅하는 데 유용합니다.

 

 

흐름을 바꾸려면

지금까지 Amazon S3에 업로드\된 게이지 이미지를 처리하는 워크 플로를 생성하여 MQTT 주제에 게시할 메시지를 트리거했습니다. 이제 센서 임계 값을 초과하는 판독 값을 기반으로 Amazon SNS 주제에 경보를 전송하도록 흐름을 수정합니다.

 

  1. AWS IoT Things Graph 콘솔을 열고 탐색 창에서 Flows를 선택합니다.
  2. ThingsGraphWorkshopFlow 흐름 을 선택하고 편집을 선택합니다.

3. 우측의  Library 창에서 Logic 탭을 선택합니다.

 

4. Choice 노드를 흐름 디자이너로 끌어다 놓습니다.

5. Choice 노드를 선택하고 다음과 같이 오른쪽 창에서 세부 정보를 편집합니다.

    1. Choice 제목: 임계 값 확인
    2. 규칙 A:
      1. 제목: 임계 값 초과
      2. 조건: $ {readGaugeResult.gaugeReading> = gaugeType.threshold}
      3. 이벤트
        1. Add event(이벤트 추가)를 선택합니다.
        2. 이름: AboveThreshold

6. 창 하단에서 규칙 추가를 선택하고 다음과 같이 규칙 B 의 세부 정보를 입력합니다.

    1. 규칙 B
      1. 제목: 벨로우 임계 값
      2. 조건: $ {readGaugeResult.gaugeReading <gaugeType.threshold}
      3. 이벤트
        1. 이벤트 추가를 선택합니다.
        2. 이름: BellowThreshold

7. 흐름의 마지막 단계를 새 Choice 노드에 연결합니다.

8. Choice 노드를 Amazon SNS에 연결하려면 오른쪽의 Library 창을 열고 Services 탭을 선택합니다.

9. 새로 생성된 Choice 노드 옆에 두 개의 TGWorkshopSnsService 노드를 끌어서 놓습니다.

10. TGWorkshopSnsService 노드 중 하나를 선택하고 오른쪽 창에서 세부 정보를 업데이트합니다.

11. No action configured(구성된 작업 없음)을 선택하여 서비스에 새 작업을 추가 합니다.

12. Action 드롭다운 메뉴에서 PublishMessage를 선택하고 다음의 정보를 입력합니다.

    • topicArn : $ {sqsResult.snsTopicArn}
    • 주제: 워크샵
    • 메시지 : AboveThreshold

     

13. Choice 노드와  Check Threshold 새로 업데이트된 TGWorkshopSnsService 노드에 연결하고 이벤트 이름을 AboveThreshold로 설정합니다.

14. 다른 TGWorkshopSnsService를 선택하고 오른쪽 창에서 세부 정보를 업데이트합니다.

15. No action configured을 선택하여 서비스에 새 작업을 추가 합니다. Action 드롭 다운 메뉴에서 PublishMessage를 선택하고 다음의 정보를 입력합니다.

    • topicArn : $ {sqsResult.snsTopicArn}
    • 주제: 워크샵
    • 메시지: BellowThreshold

 

  1. Choice 노드와 Check Threshold 새로 업데이트된 TGWorkshopSnsService노드에 연결하고 이벤트 이름을  BellowThreshold로 설정합니다. 최종 흐름은 다음 다이어그램과 같아야합니다.

 17. 흐름을 게시 하려면 Publish 를 선택합니다. 화면 상단에 흐름 수정 성공에 대한 녹색 알림이 표시되어야 합니다.

 

페이지 상단에 표시되는 알림을 주의 깊게 살펴보고 오류가 있는지 확인하십시오. 흐름을 성공적으로 게시하려면 흐름을 수정해야 합니다.

 

 

흐름에 대한 최근 변경 사항을 테스트하려면

변경 사항을 적용하려면 기존 flow configuration(흐름 구성)을 다시 배포해야 합니다. 이렇게 하려면 다음 단계를 수행하십시오.

 

  1. AWS IoT Things Graph 콘솔을 열고 탐색 창에서 Deploy를 선택합니다.
  2. 그런 다음 흐름을 선택하고 Undeploy를 선택하고 배포 해제를 확인한 다음 Submit을 선택합니다. 페이지를 새로 고치고 흐름을 다시 배포합니다.
  3. 흐름과 함께 Amazon SNS 알림을 보내려면 먼저 Amazon SNS 주제를 구독해야 합니다. Amazon SNS 콘솔을 열고 탐색 창에서 구독을 선택합니다.
  4. 그런 다음 Create subscription 선택합니다. Create subscription  페이지에서 다음 정보를 입력합니다.
    • 주제 Arn: 목록에서 올바른 주제를 선택합니다. 형식은 arn : aws : sns : RegionName : AccountNumber : things-graph-workshop-topic이됩니다.
    • 프로토콜: SMS
    • 엔드포인트: 국가 번호를 포함한 휴대폰 번호
  5. Create subscription(구독 생성)을 선택합니다 .

 

 

AWS IoT Greengrass에 흐름을 배포하려면

이번 단락에서는 Amazon EC2 인스턴스에서 호스팅되는 AWS IoT Greengrass의 엣지에 AWS IoT Things Graph 흐름을 배포해 보겠습니다.

 

아키텍처

다음 다이어그램은 엣지에 흐름을 배포하는 방법을 설명하는 두 번째 솔루션에 대한 아키텍처를 보여줍니다.

 

 

시작하기

첫번째 솔루션에서 이 두번째 솔루션에 필요한 모든 리소스를 만들었습니다. 먼저 이러한 리소스 중 일부를 검토하겠습니다.

 

  1. AWS IoT Greengrass 콘솔을 열고 탐색 창에서 클래식(V1)을 선택한 다음 그룹을 선택합니다.
  2. 이 워크샵의 일부로 생성된 두 개의 새로운 Greengrass 그룹이 표시됩니다. ec2-gg로 끝나는 것을 선택하십시오.

3. 이 AWS IoT Greengrass 그룹에 대한 배포 기록이 비어 있고 이전에 디바이스에 배포되지 않은 것을 볼 수 있습니다.

4. 왼쪽 메뉴에서 Subscriptions을 선택합니다. 이 AWS IoT Greengrass 그룹에 대해 기본적으로 생성된 구독이 없습니다. AWS IoT Things Graph는이 워크숍에 필요한 모든 구독을 생성합니다.

5. 동일한 왼쪽 메뉴에서 이 AWS IoT Greengrass 그룹과 연결된 Lambda 함수 및 디바이스도 볼 수 있습니다.

흐름 만들기

  1. AWS IoT Things Graph 콘솔을 열고 탐색 창에서 Flows를 선택 합니다. 그런 다음 Create flow(흐름 생성)을 선택합니다.
  2. Things Graph > Flows으로 이동하여 흐름을 만든 다음 Create flow를 선택합니다.
  3. 흐름 제목 을 ThingsGraphWorkshopEC2Flow로 설정하고 Create flow을 선택합니다.
  4. AWS 콘솔에서 Edit definition document를 선택합니다.
  5. Cloud9 편집기에서 수정 된 models-tmp / flows / ec2-flow.graphql 파일의 내용을 복사하여 붙여넣고 편집기에 붙여넣어 업데이트를 선택하십시오. 

6. 이제 흐름의 그래픽 다이어그램을 볼 수 있습니다.

7. Publish를 선택합니다.

 

게시된 AWS IoT Things Graph 흐름을 검토합니다. 흐름은 30 초마다 트리거되며 최근 Amazon SQS에 게시된 메시지가 있는지 확인합니다. 그런 다음 흐름은 해당 이미지를 처리하고 게이지를 읽습니다.

 

 

AWS IoT Greengrass에 흐름을 배포하려면

흐름을 게시한 후에는 클라우드 또는 엣지의 AWS IoT Greengrass 디바이스에 배포하도록 선택할 수 있습니다. 이 섹션에서는 Amazon EC2 인스턴스에서 호스팅되는 AWS IoT Greengrass에 흐름을 배포합니다.

 

  1. AWS IoT Things Graph 콘솔을 열고 탐색 창에서 Deploy를 선택합니다.
  2. 먼저이 워크숍에서 만든 기존 흐름 구성을 배포 해제해야 합니다. Deployed in target 상태인 흐름을 선택하고 Undeploy를 선택합니다. 이는 배포된 흐름이 테스트 중에 서로 영향을 미치지 않도록 하기 위한 것입니다.
  3. 그런 다음 Create flow configuratio를 선택하여 새 배포를 만듭니다 .
  4. Flow configurations 페이지에서
    • 드롭 다운 메뉴에서 Flow를 ThingsGraphWorkshopEC2Flow로 설정합니다.
    • 이름을 things_graph_workshop_ec2_deployment로 설정합니다.
    • Greengrass에서 실행되도록 흐름을 설정하고 Next를 선택합니다.

 

다음으로 AWS IoT Things Graph 아티팩트를 저장하는 데 사용할 Amazon S3 버킷과이 흐름이 배포될 AWS IoT Greengrass 그룹의 이름을 묻는 메시지가 표시됩니다.

 

AWS CloudFormation 스택의 출력에서 ​​또는 IAM에서 역할을 찾아 Amazon S3 버킷 이름을 찾습니다.

 

  1. AWS CloudFormation 콘솔을 엽니다. 탐색 창에서 스택을 선택합니다.
  2. things-graph-workshop-stack-1 선택하고 Outputs(출력) 탭을 선택한 다음, 키 ArtifactBucketName 이름의 값 열을 복사합니다. 앞서 AWS IoT Greengrass 콘솔에서 기록한 “ec2-gg”로 끝나는 AWS IoT Greengrass 그룹의 이름을 사용하고 Next(다음)을 선택합니다.

3. Set up triggers 페이지 값을 기본값으로 그대로 두고 Review 선택합니다.  

4. 페이지 맨 아래로 스크롤하여 Create(생성)을 선택합니다. 이제 AWS IoT Things Graph에서 AWS IoT Greengrass 흐름 구성을 생성했습니다

5. AWS IoT Greengrass에 흐름을 배포하기 전에 Deployed in target 상태인 기존 흐름을 배포 해제해야 합니다.

6. 그런 다음 흐름 구성 페이지에서 새로 생성된 흐름을 선택하고 배포를 선택합니다. 성공적인 배포에 대한 알림이 페이지 상단에 표시되어야 합니다.

 

 

Amazon EC2 인스턴스에 흐름을 배포하려면

  1. AWS IoT Greengrass 콘솔을 열고 탐색 창에서 Groups을 선택 합니다. ec2-gg로 끝나는 그룹을 선택하십시오. 페이지 오른쪽 상단의  Action 메뉴에서 Deploy를 선택하여 Greengrass 그룹을 인스턴스에 배포합니다.

2. 계속하기 전에 배포 상태가 Successfully completed 인지 확인합니다. 배포가 실패 상태인 경우 계속하기 전에 기본 문제를 해결해야 합니다.

이제 AWS IoT Things Graph 흐름이 Amazon EC2 인스턴스에서 실행 중이며 흐름 테스트를 시작할 수 있습니다.

 

 

흐름을 테스트하려면

Amazon S3 버킷에 일부 이미지를 업로드하여 새 흐름을 테스트할 수 있습니다.

  1. AWS IoT Core 콘솔을 엽니다. 탐색 창에서 Test를 선택 합니다.
  2. Subscription topic 필드에서 things-graph-workshop/gauge/reading 를 입력하고 Subscribe topic을 선택합니다.

3. 새 브라우저 탭을 열고 Amazon S3 콘솔을 엽니다.

4. things-graph-workshop-images-$ {accountNumber}-$ {region}버킷을 선택하고 이미지를 업로드합니다.  images/gauge/temperature 폴더에서 프로젝트 리포지토리 내에 여러 게이지의 이미지를 찾을 수 있습니다. 

 

5. Amazon S3 버킷에 이미지를 업로드한 후 브라우저 탭으로 돌아가서 MQTT 주제를 수신하는 AWS IoT Core를 표시합니다. 이미지를 업로드한 후 약 60초 후에 메시지가 나타납니다.

 

 

Amazon EC2 인스턴스를 디버깅하려면 (선택 사항)

AWS IoT Greengrass를 호스팅하는 Amazon EC2 인스턴스에서 AWS IoT Things Graph 흐름이 작동하는 방식을 더 자세히 이해하려면 AWS IoT Things Graph 흐름을 실행하는 Amazon EC2 인스턴스로 ssh하고 AWS IoT Things Graph 실행 관련 로그 파일을 자세히 살펴 봐야 합니다.

Bash

ssh -i {PrivateKeyFile} ubuntu@{EC2PublicIP}

 

  1. 필수 구성 요소 단계 중 하나로 생성된 개인 키 파일의 경로로 {PrivateKeyFile}을(를) 바꾸십시오.

 

2. {EC2PublicIP}를 Amazon EC2 인스턴스의 퍼블릭 IP로 바꿉니다. Amazon EC2 인스턴스의 퍼블릭 IP는 things-graph-workshop-stack-2의 Outputs탭 에 있는 AWS CloudFormation 콘솔에서 EC2PublicIP 값으로 찾을 수 있습니다.

 

 

ThingsGraph.log 파일에는 흐름별로 수행된 단계의 요약이 포함되어 있습니다.

Bash

tail -f /Greengrass/ggc/var/log/user/{Region}/ThingsGraph/ThingsGraph.log

 

r redo.log 파일에는 흐름 실행에 대한 자세한 단계별 로그가 포함되어 있습니다.

Bash

tail -f /thingsgraph/engine/recovery/redo.log_{Date}

 

 

정리하기

실습을 마치고 나면 향후 비용이 발생하지 않도록 환경을 정리해야 합니다.

  1. things-graph-workshop 접두사 가있는 모든 Amazon S3 버킷을 비우면 CloudFormation 템플릿이 이를 삭제할 수 있습니다.
  2. AWS IoT Greengrass 콘솔을 열고 탐색 창에서 Groups을 선택 합니다.
  3. 그런 다음 이전에 배포한 각 Greengrass 그룹에 대해 해당 그룹을 선택한 다음 드롭 다운 메뉴에서 Reset Deployment(배포 재설정)을 선택 합니다. 이렇게하면 AWS CloudFormation에서 Greengrass 그룹을 삭제할 수 있습니다.

5. AWS CloudFormation 콘솔을 열고 탐색 페이지에서 Stacks를 선택합니다. 그런 다음 이전 단계에서 생성한 AWS CloudFormation 스택을 생성한 역순으로 삭제합니다.

    • things-graph-workshop-stack-3 삭제
    • things-graph-workshop-stack-2 삭제
    • things-graph-workshop-stack-1 삭제
    • 이러한 스택은 서로 종속되어 있으므로 위의 삭제 순서를 따르는 것이 중요합니다.

6. 이 워크숍의 목적으로 생성 된 AWS IoT Things를 삭제합니다.

7. AWS IoT 콘솔을 열고 관리 메뉴에서 Things 페이지로 이동한 다음 이름이 things-graph-workshop으로 시작하는 모든 IoT 사물을 검색하고 선택합니다.

8. 작업 드롭 다운 메뉴에서 삭제를 선택 하여 모든 IoT 사물을 정리합니다.

 

 

글을 마치며…

이렇게 오늘은 AWS IoT Thing Graph를 사용하여 산업 환경에서 아날로그 게이지를 모니터링하는 방법을 다루어 봤습니다. AWS IoT Things Graph를 사용하여 클라우드와 엣지 모두에서 복잡한 IoT 흐름을 오케스트레이션하는 방법과 그 흐름의 일부로 다양한 센서, 서비스 및 기능을 오케스트레이션하는 방법을 설명하고, 이 솔루션과 관련된 다양한 서비스에 필요한 다양한 구성 요소를 만들기 위한 단계별 가이드를 제공해 드렸습니다. 이 게시물이 AWS IoT Things Graph를 시작하는 데 도움이 되셨기를 바라며, AWS IoT Things Graph에 더 알고 싶은시다면  Getting started – AWS IoT Things Graph 페이지를 방문해 주시기 바랍니다.

원문URL: https://aws.amazon.com/ko/blogs/iot/monitoring-your-gauges-on-the-factory-floor-with-aws-iot-things-graph/

 

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