Piotr Grzesik
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 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ą.
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.
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).
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.
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".
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 - 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.
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 - 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".
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ń.
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.
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
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.
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.
@p_grzesik
contact@pgrzesik.com