그냥 나보고 만들어라고 하면 http 리퀘스트 만으로 어떻게 퉁쳤겠지만... 다른 사람의 서비스 제작을 도와줄 필요가 있었다.
최대한 AWS 의 솔루션을 사용하는게 향후 유지관리에도 좋을 것이고, AWS IoT 를 써보고도 싶었고, 서버->디바이스 요청도 쉽게 보낼 수 있게 되니, 한번 써보고 정리하는 글. 사실 친구놈 보라고 쓰는거다 휘수야 보고 있니
우선 AWS IoT 에 대한 특징 같은건 다른 글에 많으니 다 생략하고 내가 찾는데 시간이 걸렸거나, 관심이 있는 부분만 기술한다.
즉 mqtt 가 뭔지, 주제 구독이 뭔지 이런건 생략.
이번 글의 목표는, 라즈베리파이에서 mqtt 주제를 publish, subscribe 해보고 라즈베리파이에서 publish 된 주제를 통해 aws lambda 함수를 실행시켜서 텔레그램 알림을 받는 것 까지.
----------------------------------------------------------------------------
[목차]
1. IoT 사물 / 인증서 / 정책 생성
2. Python + paho-mqtt 를 사용하여 주제 구독, 게시 및 테스트
3. AWS Lambda에 연결하고 텔레그램 봇 메시지 보내기
----------------------------------------------------------------------------
1. [AWS 콘솔] IoT 사물 / 인증서 / 정책 생성
AWS 에서 IoT 대시보드로 이동한 후 좌측 관리 - 사물 - 사물 등록
지금은 한개만 등록할거니 단일 사물 생성.
관리의 편의성을 위해 유형이나 그룹 등등을 설정할 수 있지만, 지금은 필요없다. 이름만 적당히 생성하고 다음으로 넘어가자.
이 이름은 thing name 이자 client id 로 사용된다.
ioT 디바이스를 인증하고 암호화 통신을 위해 사용하는 인증서를 선택해야한다.
이미 만든 인증서가 있다면 그걸 사용해도 되지만 없을테니 이 창이 뜰텐데, 권장하는 방법을 쓰자! ㅋㅋㅋ
적혀있듯이 퍼블릭 키와 프라이빗 키는 이 창이 지나가면 다시는 받을 수 없다.
혹시나 못 받았다면 인증서를 새로 만들면 되니 부담은 안가져도 되지만, 잘 가지고 있도록 하자.
활성화는 말 그대로 이 인증서를 사용가능하게 할건지 설정하는건데, 조금 있다가 해도 된다.
정책은 아마 만들어진 정책이 없을테니, 0개 선택으로 두고 일단 넘어가면 된다.
IoT 디바이스가 어떠한 작업을 할 수 있는지 그 권한을 설정하는 정책(Policy)를 만들어야 한다.
참고로 이 정책은 개별 디바이스가 아니라 인증서에 연결된다.
즉, 같은 디바이스라도 사용하는 인증서에 따라 정책이 달라진다.
물론 인증서와 디바이스도 AWS 콘솔에서 연결 작업은 해줘야하지만.
IoT 대시보드 좌측 메뉴에서 보안 - 정책을 찾아가자.
이름을 적당히 설정해주고, 권한을 넣어주자.
작업 항목에는
iot:Publish / Subscribe / Connect / Receive / UpdateThingShadow / GetThingShadow / DeleteThingShadow
7개 항목이 있지만 지금은 귀찮으니 와일드카드 * 로 사용.
다른건 이름만 봐도 알겠는데 Connect와 Receive 는 왜 있는지 모르겠다.. 나중에 찾아봐야지
리소스 ARN 은 토픽이나 shadow의 리소스 arn 을 넣으면 된다.
arn:aws:iot:<REGION>:<USER ID>:topic/<TOPIC NAME>
의 형태. 참고로 "토픽 이름"에서 와일드카드는 * 이 아니라 + 다.
일단은 테스트 목적이니 이것도 대충 와일드카드로 만들자
그 다음, 정책을 인증서에 연결해줘야 한다.
디바이스에 정책을 연결하는게 아님을 주의.
인증서 메뉴에서 아까 만든 인증서에 방금 만든 정책을 연결해주자.
아까 생성할때 활성화를 안했다면 여기서 활성화를 해줄 수 있다. 나중되면 까먹을테니 지금 활성화 ㄱㄱ
마지막으로 좌측 하단 설정에 들어가서 엔드포인트 URL 을 확인한다.
'Embedded > 라즈베리파이' 카테고리의 다른 글
[RPi] DID/디지털 액자로 만들기 (0) | 2017.12.31 |
---|---|
AWS IoT + Raspberry Pi + Python 사용해보기 (2/3) (4) | 2017.12.19 |
[RPi] BLE/iBeacon (0) | 2017.12.16 |
[RPi] headless 설정 (0) | 2017.12.16 |
ROS 2개 이상의 기기 연결 (Communication over tcp/ethernet) (0) | 2016.09.15 |