2020년 12월 2일 기록

IoT Core로 메시지 수신 시 Step Functions 호출

출처 : https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-lambda-rule.html

IoT MQTT 통신 방식은 잘 모르지만 어쨌든 라즈베리파이에서 AWS로 메시지가 수신되었을 때 Step Functions가 호출되도록 구성해보았다.

IoT Core 사물 생성

이미지 11

먼저 정책을 만들어줘야 한다.

보안 - 정책 - 정책 생성

이미지 12

정책 이름과 필요한 작업을 입력해준다.

리소스 ARN은 일단 *로 해준다. 사물을 생성해야 ARN이 나오기 때문에 나중에 바꿔줄 예정!

허용 선택해주고 정책을 생성한다.

이미지 6

사물을 생성해보자.

관리 - 사물 - 단일 사물 생성 클릭

이미지 7

이름만 적어주고 다음 클릭한다.

이미지 8

이미지 10

인증서를 모두 다운로드해주고 루트 CA도 다운로드한 후, 활성화를 해준다. 정책 연결!

그럼 사물이 생성된다.

Step Functions 호출하는 규칙 생성하기

이미지 13

동작 - 규칙 - 규칙 생성 클릭

이미지 14

규칙 쿼리는 다음과 같이 설정한다.

SELECT * FROM 'kf99/topic' WHERE temperature > 30

kf99/topic은 IoT 디바이스가 주제를 게시하는 곳이고 WHERE 절은 규칙 이벤트? 가 발생하는 조건이다. 이번 프로젝트에서는 온도 데이터를 받기 때문에, 온도가 30도 이상인 경우에만 감지하도록 조건절을 추가해 보았다.

이미지 15

작업 추가를 클릭한다.

이미지 16

나오는 항목 중 Step Functions 상태 시스템 실행 시작을 선택한다.

이미지 17

생성해놓은 Step Functions 상태 머신을 선택한다.

실행 이름 접두사는 뭔지 모르겠어서 일단 저렇게 해 놓았다.

역할은 새 역할을 생성해도 되고, 이미 만들어놓은 게 있다면 선택하면 된다.

작업 추가 클릭

이미지 18

다음은 오류 작업의 작업 추가를 선택한다.

이미지 19

에러가 났을 때 메시지로 수신되도록 메시지를 AWS IoT 주제에 재게시를 선택한다.

이미지 21

에러메시지를 게시할 주제를 정해주고, 마찬가지로 역할을 생성하거나 이미 있다면 역할을 선택해준다.

서비스 품질은 IoT 팀원 분과 상의해야 할 것 같다.

이미지 23

테스트를 위해서 테스트 탭으로 이동한다.

에러 메시지를 구독하기 위해 구독 주제에 kf99/error를 입력했다.

주제 구독 클릭

이미지 24

주제를 게시하는 부분에는 kf99/topic을 입력했다.

주제 게시를 클릭하면, 메시지가 수신될 때 Step Functions가 호출될 것이다.

테스트를 위해서는 라즈베리파이를 연결해야 해서 오늘은 여기까지!