Wprowadzenie do IoT w chmurze Amazon Web Services

Piotr Grzesik

Agenda

  1. Amazon Web Services
  2. AWS IoT
  3. Komponenty AWS IoT
  4. Przykłady wykorzystania AWS IoT
  5. Live Demo
  6. AWS Lambda
  7. AWS Greengrass
  8. AWS IoT Analytics

Amazon Web Services

 

Amazon Web Services jest platformą oferującą usługi w modelu "Cloud Computing". Została udostępniona w roku 2006, początkowo oferując tylko trzy usługi (Amazon Simple Storage Service, Amazon Simple Queue Service, Amazon Elastic Compute Cloud), natomiast aktualnie oferuje ponad 100 różnych serwisów w kategoriach  jak Compute, Storage, Database, Migration, Network and Content Delivery, Management Tools, Messaging, Security, Identity & Compliance

AWS IoT

 

AWS IoT jest zbiorem usług pozwalającym na zarządzanie dużą ilością (miliony i więcej) urządzeń IoT, kolekcjonowaniem danych generowanych przez te urządzenia, a także analityką przetwarzanych danych. Oferuje również dedykowane biblioteki dla urządzeń IoT, dba o bezpieczeństwo połączenia pomiędzy poszczególnymi urządzeniami oraz chmurą.

AWS IoT

 

Kompontenty AWS IoT

 
  • Registry
  • Device Gateway
  • Device Shadow
  • Message broker
  • Rules engine
  • Jobs Service
  • Security and Identity service
  • AWS IoT Device SDK

AWS IoT Registry - Thing

 

Thing - reprezentacja konkretnego urządzenia lub logicznej jednostki w AWS IoT. Urządzeniem tym może być konkretny sensor lub urządzenie np. inteligentna żarówka. Może to również być aplikacja lub urządzenie które nie łączy się bezpośrednio z AWS IoT, ale jest powiązane z urządzeniami które się łączą z tym serwisem chmurowym. Przykładem może być samochód wyposażony w różnego rodzaju sensory.

AWS IoT Registry

 

Registry - jest to komponent składowy AWS IoT odpowiedzialny za zarządzanie definicjami "Things". Pozwala na definiowanie nowych "Thing", przydziela im unikalne identyfikatory, a także pozwala przechowywać dodatkowe metadane na ich temat takie jak producent, typ urządzenia czy możliwości oferowane przez dane urządzenie. Pozwala również na grupowanie ich za pomocą typów oraz grup (Thing Types, Thing Groups).

Device Gateway

 

Gateway - serwis służący za punkt wejściowy dla urządzeń łączących się z AWS IoT. Oferuje on bezpieczne, oferujące niskie opóźnienia połączenie pomiędzy urządzeniami a chmurą AWS. Serwis ten zarządza wszystkimi połączeniami, wspiera Websockets, MQTT oraz HTTP. Nie wymaga zarządzania i automatycznie skaluje się tak, aby wspierać nawet ponad miliard urządzeń jednocześnie.

Device Shadow

 

Shadow - jest to wirtualny, trwały odpowiednik urządzenia ("Thing") przechowujący dane na temat jego ostatniego stanu. Pozwala również na ustawienie oczekiwanego, przyszłego stanu urządzenia, a także oferuje możliwość odczytu tego stanu przez inne aplikacje, nawet jeżeli urządzenie jest aktualnie wyłączone lub nieosiągalne np. z powodu braku dostępu do sieci. Podczas gdy urządzenie jest podłączone, synchronizuje swoj stan na bieżąco ze swoim "Device Shadow". 

Message broker

 

Broker - serwis w modelu publisher-subscriber pozwalający na bezpieczne odbieranie oraz wysyłanie wiadomości do oraz z urządzeń i aplikacji IoT. Pozwala na komunikację jeden-do-jednego (one-to-one) oraz jeden-do-wielu (one-to-many). Pozwala również na kontrolę dostępu, w taki sposób, że konkretne urządzenia czy też aplikacje będą miały możliwość publikowania bądź odczytywania wiadomości. 

Rules engine

 

Rules engine - jest to silnik reguł, który analizuje wiadomości przychodzące z urządzeń IoT, a następnie wykonuje zdefiniowane akcje. Reguły definiowane są za pomocą języka przypominającego SQL i pozwalają wykonywać akcje nie tylko na bazie treści przesłanej wiadomości, ale również wykonywać dodatkowe zapytania np. do innych serwisów AWS. AWS oferuje predefiniowane akcje, a także możliwość utworzenia dowolnych akcji za pomocą AWS Lambda.

Rules engine - przykładowe akcje

 
  • Zapisanie pliku do S3
  • Wywołanie funkcji Lambda
  • Włączenie alarmu CloudWatch
  • Wysłanie notyfikacji typu "push" poprzez SNS
  • Opublikowanie wiadomości do SQS
  • Zapis do bazy danych DynamoDB
  • Interakcja z innym urządzeniem np. włączenie żarówki

Jobs service

 

Jobs service - jest to serwis pozwalający na definicję operacji, które powinny zostać wykonane na wybranych urządzeniach. Przykładowo, pozwala zdefiniować "job", który na wszystkich podłączonych urządzeniach wykona operację pobrania oraz aktualizacji "firmware", ponownego uruchomienia urządzenia czy też rotacji certyfikatów.

Security and Identity service

 

Security and Identity service - jest to serwis odpowiedzialny za autentykację i autoryzację urządzeń w ramach AWS IoT, pozwalający na bezpieczną komunikację, dane pomiędzy urządzeniami a chmurą AWS nigdy nie są wymieniane w niezaszyfrowanej formie. Usługa ta wspiera autentykację za pomocą certyfikatów X.509, a także pozwala na definiowanie własnej metody autentykacji za pomocą "custom authorizers". 

Security and Identity service

 

Dodatkowo, serwis ten zajmuje się autoryzacją i pozwala na wykorzystanie zasad (policies) do definicji możliwości poszczególnych urządzeń w zakresie dostępu do usług, np. zezwolić urządzeniu na dostęp do DynamoDB. Tego typu "policies" można nadawać na poziomie pojedyńczych urządzeń.  

AWS IoT Service SDK

 

Jest to zestaw bibliotek pozwalający na interakcję urządzenia lub aplikacji z AWS IoT Core. Pozwala na nawiązanie połączenia, autentykację oraz wysyłanie i odbieranie wiadomości za pomocą HTTP, Websockets lub MQTT. SDK jest aktualnie dostępne jako biblioteki w językach programowania takich jak C, C++, Java, JavaScript, Python. Dodatkowo, dostępne są mobilne SDK dla platform Android oraz iOS, a także SDK dedykowane urządzeniu Arduino Yún.

Przykłady wykorzystania AWS IoT

 
  • Predictive Maintenance - akwizycja oraz analiza danych w siłowniach pozwalająca na wcześniejsze wykrywanie potencjalnych awarii (Ecofit)
  • Home automation - akwizycja danych w inteligentnym domu oraz możliwosć wykonywania akcji za pomocą AWS IoT (również w sposób głosowy dzięki integracji z Amazon Alexa) (LG)
  • Home security - automatyczne wykrywanie zagrożen i alarmowanie użytkowników w sytuacji zagrożenia (LG)

Przykłady wykorzystania AWS IoT

 
  • Edge computing - wykonywanie obliczeń lokalnie, na urządzeniach brzegowych oraz możliwość funkcjonowania nawet przy tymczasowym braku dostępu do sieci internet (Cradlewise)
  • Remote troubleshooting - Wykorzystanie AWS do zdalnej pomocy oraz rozwiązywania problemów z urządzeniem (Zimplistic)
  • Smart agriculture - automatyczne nawadnianie upraw na podstawie danych z sensorów oraz danych pogodowych

AWS Lambda

 

Jest to platforma w modelu serverless computing, udostępniona dla użytkowników w roku 2014. Oferuje ona możliwość wykonywania funkcji w modelu zdarzeniowym, gdzie zdarzeniem może być wywoływany alarm, zapytanie HTTP czy też pojawienie się wiadomości w kolejce. Koszt rozliczany jest na podstawie czasu wykonania a także żużytej pamięci RAM. Wspiera środowiska uruchomieniowe takie jak Java (JVM), .NET Core, Go, Ruby, Python, Node.js a także dowolne inne środowiska dzięki wsparciu dla "custom runtimes", dodanym w roku 2018. Pozwala na łatwą integrację z innymi usługami AWS takimi jak S3, Kinesis, CloudWatch czy API Gateway

AWS Greengrass

 

Jest to usługa pozwalająca na przeniesienie części funkcjonalności z chmury bezpośrednio na urządzenia brzegowe. Dzięki tej usłudze, urządzenia mogą przetwarzać dane lokalnie, uruchamiać funkcje Lambda bez potrzeby komunikowania się z chmurą AWS, uruchamiać kontenery Docker, a także korzystać z modeli machine learning. Dzięki AWS Greengrass, urządzenia znajdujące się blisko siebie mogą dalej się komunikować i funkcjonować nawet bez dostępu do chmury AWS.

AWS Greengrass

 

AWS IoT Analytics

 

Jest to usługa dedykowana przetwarzaniu i analizie dużych ilości danych pochodzących z urządzeń IoT. Pozwala na łatwe wykonywanie zapytań za pomocą wbudowanego silnika SQL, same dane przechowywane są w niezmienionej formie, a także przetworzone i przechowywane w bazie danych zoptymalizowanej pod kątem przechowywania szeregów czasowych. Pozwala również na integrację z serwisami, które pozwolą na przygotowanie oraz wzbogacenie danych otrzymanych z urządzeń IoT, np dodanie danych pogodowych lub nazwy miasta na bazie współrzędnych geograficznych. Pozwala również na bezpośredni dostęp do danych z poziomu Jupyter Notebook.

AWS IoT Analytics

 

Live Demo

 

Q&A + Contact

@p_grzesik

contact@pgrzesik.com

Made with Slides.com