Interview mit Constantin Gonzalez von AWS

AWS IoT – ein Internet-of-Things-Baukasten für Entwickler
Kommentare

Die IoT-Plattform von Amazon Web Services, AWS IoT, wurde im Oktober 2015 auf der AWS re:Invent in Las Vegas vorgestellt und ist inzwischen nach erfolgreicher Beta-Phase für Entwickler verfügbar. Wir haben mit Constantin Gonzalez, Principal Solutions Architect für AWS Deutschland, über die Plattform gesprochen, die Dienste wie AWS Lambda, Amazon API Gateway, Amazon DynamoDB, Amazon Kinesis, Amazon S3 und Amazon Redshift unterstützt.

entwickler: Herr Gonzalez, bitte erläutern Sie uns das grundsätzliche Funktionsprinzip von AWS IoT.

Constantin Gonzalez: AWS IoT ist eine verwaltete Cloud-Plattform, mit der verbundene Geräte einfach und sicher mit Cloud-Anwendungen und anderen Geräten zusammenarbeiten können. AWS IoT kann Milliarden von Geräten und Billionen von Nachrichten unterstützen und diese Nachrichten zuverlässig und sicher verarbeiten und zu AWS-Endpunkten und anderen Geräten weiterleiten. Mit AWS IoT bleiben Anwendungen mit allen Ihren Geräten jederzeit verbunden und können mit ihnen kommunizieren, auch dann, wenn sie temporär vom Netzwerk getrennt sind.

Der Service besteht aus den folgenden Komponenten:
Der AWS IoT Device Gateway stellt eine Messaging-Plattform nach dem Publish/Subscribe Modell zur Verfügung. Teilnehmer können Nachrichten an so genannte Topics verschicken, die hierarchisch organisiert sind und Topics abonnieren, um Nachrichten zu erhalten, die für einen abonnierten Topic bestimmt sind. Über die Hierarchie der Topics und so genannten Wildcards können Nachrichten entweder individuell an einzelne Geräte oder Teile von Geräten verschickt werden, oder beliebig viele Geräte, die zum Muster einer Topic-Beschreibung einer Wildcard passen.

Die AWS IoT Rules Engine stellt einen regelbasierten Mechanismus dar, der automatisch Regeln auf Nachrichten anwendet, um diese entweder an beliebige Topics weiterzuleiten oder an Anwendungen oder AWS-Services.

AWS IoT Device Shadows ermöglichen es, Nachrichten mit Geräten auszutauschen, auch wenn sie temporär nicht mit dem Internet verbunden sind.

Was Authentifizierung und Autorisierung betrifft, werden alle Teilnehmer am AWS IoT Dienst über kryptografische Maßnahmen authentifiziert. Die Kommunikation ist jederzeit verschlüsselt und Teilnehmer können über Policies dazu autorisiert werden, bestimmte AWS-Funktionen auszuführen. Dadurch wird die Sicherheit der Kommunikation und der Teilnehmer sichergestellt, auch wenn Geräte verloren gehen oder kompromittiert werden sollten.

Dazu gesellen sich noch die AWS IoT Registry und das AWS IoT SDK. Ersteres ist ein Verzeichnis aller Geräte und erleichtert die Organisation beliebiger Mengen von Geräten, die am IoT Dienst teilnehmen. Das AWS IoT SDK ist ein Software Development Kit für populäre Geräte- und Entwicklungsplattformen und erleichtert die Entwicklung von Anwendungen, die AWS IoT nutzen wollen. Mittlerweile steht auch eine Reihe von Starter-Kits zur Verfügung, die in Zusammenarbeit mit Geräte-Partnern entstanden sind: http://aws.amazon.com/iot/getting-started/#kits

Eine genauere Beschreibung von AWS IoT (auch auf Deutsch) findet man unter: http://aws.amazon.com/de/iot/how-it-works/

Als Beispiel kann man mit dem AWS IoT schnell und einfach eine Anwendung kreieren, bei der mobile Geräte, wie etwa Autos, Telemetrie-Daten an AWS IoT Topics versenden, die von einer Backend-Applikation ausgewertet werden können. Dabei würde die Rules Engine zum Beispiel automatisch Positions-Daten an einen Amazon Kinesis Datenstrom weiterleiten, bei dem Anwendungen die Daten automatisch archivieren, in ein Data Warehouse einspeisen und in eine NoSQL-Datenbank wie Amazon DynamoDB für die Anzeige in einem Echtzeit-Dashboard. Wenn ein Auto einen Unfall hat, kann dieses Ereignis als Nachricht im IoT Service automatisch erkannt werden und darauf basierend können automatisch Nachrichten an umliegende Fahrzeuge verschickt werden, die Fahrer vor einer möglichen Gefahrensituation warnen.

entwickler: Welche Protokolle, Programmiersprachen und Geräte unterstützt AWS IoT?

Gonzalez: AWS IoT unterstützt das MQTT-Protokoll, das in der IoT-Welt weit verbreitet ist und alternativ das HTTPS-Protokoll. Wir empfehlen, MQTT für Geräte mit eingeschränkten Ressourcen (CPU, Memory, Strom, Netzwerk) zu verwenden und HTTPS für mobile Applikationen und Back-End-Anwendungen. Da es sich bei beiden Protokollen um offene Standards handelt, werden prinzipiell alle Programmiersprachen und Geräte unterstützt, die diese Protokolle verwenden können. Für bestimmte Geräte-Plattformen bieten wir bereits fertige Programmierbibliotheken (SDKs) an, diese findet man hier: http://aws.amazon.com/de/iot/sdk/. Darüber hinaus gibt es für alle AWS Services inklusive IoT und für die meisten populären Programmierplattformen SDKs hier: https://aws.amazon.com/de/tools/

AWS IoT Diagramm

Die Funktionsweise von AWS IoT (© Amazon)

entwickler: Ist auch eine Unterstützung von Custom-Protokollen möglich bzw. vorgesehen?

Gonzalez: AWS bietet eine Menge von Diensten, die verwendet werden können, um eigene Protokolle mit AWS IoT zu integrieren: Der AWS API Gateway erlaubt es, eigene webbasierte Protokolle zu spezifizieren und umzusetzen, die dann über AWS Lambda als Bindeglied AWS IoT ansteuern könnten. Außerdem ist es auf einfache Weise möglich, mit Amazon EC2 oder Amazon Elastic Beanstalk Protokoll-Gateways zu betreiben, die eigene Protokolle für AWS IoT aufbereiten können.

entwickler: Wer genau ist die Zielgruppe von AWS IoT? Eher professionelle Entwickler oder auch interessierte IoT-Bastler?

Gonzalez: AWS IoT wendet sich an alle Entwickler aus allen Branchen, die ihre Geräte mit cloudbasierten Anwendungen verbinden können. Da es sehr einfach zu nutzen ist, wird es von Hobby-Anwendern, Studenten, Startups, kleinen, mittleren und großen Unternehmen gleichermaßen eingesetzt.

entwickler: Sie haben bereits AWS IoT Device Shadows erwähnt. Können Sie die genaue Funktionsweise dieser sogenannten „Schattengeräte“ näher erläutern?

Gonzalez: Mit AWS IoT können Sie eine dauerhafte, virtuelle Version jedes Geräts erstellen („Schattengerät“, oder „Device Shadow“). Darin ist der letzte Status des Geräts enthalten, so dass Anwendungen oder andere Geräte Nachrichten lesen und mit dem Gerät interagieren können. Die Schattengeräte bleiben im letzten gemeldeten Status und gewünschten zukünftigen Status jedes Geräts erhalten, auch wenn das Gerät offline ist. Kunden können den zuletzt gemeldeten Status eines Geräts abrufen oder einen gewünschten zukünftigen Status festlegen. Dies erfolgt entweder über das API oder über die Regelfunktion.

Mit Schattengeräten können AWS-Kunden einfache Anwendungen erstellen, die mit Ihren Geräten interagieren, in dem immer verfügbare APIs bereitgestellt werden. Außerdem können Anwendungen den gewünschten zukünftigen Status eines Geräts festlegen, ohne den aktuellen Status des Geräts zu kennen. AWS IoT vergleicht die Differenz zwischen dem gewünschten und dem zuletzt gemeldeten Status und weist das Gerät an, diese Differenz auszugleichen, sobald es wieder Verbindung mit dem IoT Dienst aufgenommen hat.

Da IoT-Szenarien häufig Fälle aufweisen, in denen Geräte nicht immer online sind (etwa wenn ein Auto in einen Tunnel fährt, oder die Batterie eines Fitness-Tackers gerade leer ist), erleichtern AWS IoT Shadows dem Entwickler, die Interaktion mit Geräten zu programmieren, da sie/er sich dann nicht mit den Details der Synchronisierung von Geräten, die offline waren befassen muss.

Mehr über AWS IoT erfahren Sie auf der Internet of Things Conference in München. Treffen Sie beispielsweise Constantin Gonzalez Kollegen Jan Metzner, Solutions Architect bei AWS Germany:

entwickler: Viele IoT-Plattformen vermischen die Ebenen Gerätekonnektivität (device connectivity), Orchestration und Datenverarbeitung (data processing) miteinander. AWS IoT trennt jedoch die ersten beiden von der dritten. Was verspricht man sich davon?

Gonzalez: Alle AWS-Dienste funktionieren wie ein Baukasten, aus dem Entwickler beliebige Lösungen bauen können. Der AWS IoT-Dienst konzentriert sich darauf, den Zugang und das Management von Geräten zu erleichtern und die Brücke zu allen anderen AWS Diensten zu schlagen. Für die Verarbeitung von Daten, die von AWS-Geräten geliefert werden stehen mit den AWS Big Data und anderen Diensten eine Fülle von Werkzeugen zur Verfügung, um beliebige IoT-Lösungen aufzubauen.

entwickler: Auch AWS Lambda ist integriert. Welche Vorteile hat das im Bezug auf IoT-Plattformen?

Gonzalez: Mit AWS Lambda können Kunden Code ausführen, ohne Server bereitstellen und verwalten zu müssen. Sie bezahlen nur für die Rechenzeit, die sie verbrauchen – es entstehen keine Kosten, wenn der Code nicht ausgeführt wird. Mit Lambda können AWS IoT-Entwickler Code für fast jede Anwendungsart oder jeden Back-End-Service ausführen, und zwar ohne Administration. Sie laden ihren Code einfach hoch und Lambda übernimmt alles, was zum Ausführen und Skalieren des Codes für hohe Verfügbarkeit erforderlich ist.

Dies erlaubt IoT-Entwicklern in kurzer Zeit und mit geringem Aufwand selbst komplexe Szenarien hoch skalierbar und hoch verfügbar umzusetzen, ohne sich um die Administration der darunter liegenden Infrastruktur kümmern zu müssen.

Der AWS IoT Dienst ist bereits mit einigen AWS Services wie Amazon S3, Amazon Kinesis oder Amazon DynamoDB über die Rule Engine integriert. Durch die Nutzung von AWS Lambda als Zwischenglied können AWS Kunden Ihre IoT-Anwendungen auf einfache Weise mit allen anderen Services von AWS und mit eigenen Back-Ends integrieren.

entwickler: AWS IoT ist tief mit Amazons eigener Authentifizierungs-Engine IAM integriert und der Dienst unterstützt unseres Wissens auch Cognito. Welche Vorteile bringt Cognito im mobilen Bereich?

Gonzalez: Amazon Cognito ist ein Service, der Identitätsmanagement für mobile Benutzer und Datensynchronisierung für mobile Geräte einfach nutzbar macht. Viele IoT-Anwendungen wie Fitnesstracker oder digitale Haushaltsgeräte verwenden mobile Applikationen als benutzerfreundliche Schnittstelle für die Verwaltung von IoT-Geräten oder die Auswertung von IoT Daten. Amazon Cognito erleichtert dabei das Identitätsmanagement für die mobile Applikation, da es eine Integration mit Identitäts-Anbietern wie Google, Facebook, Amazon oder beliebigen OAuth-Providern sehr einfach macht. Darüber hinaus können Entwickler mit Amazon Cognito Benutzer-Daten wie etwa Benutzer-Einstellungen auf einfache Weise auf mobilen Geräten speichern und diese zwischen verschiedenen Geräten synchronisieren.

Nehmen wir als Beispiel einen Thermostaten, der seine Daten über AWS IoT an eine Cloud-Anwendung schickt und über diesen Dienst Befehle wie beispielsweise Heizungseinstellungen entgegennimmt. Mit Amazon Cognito kann ein Entwickler auf einfache Weise eine mobile App schreiben, die Benutzern eine Login-Möglichkeit mit einem Account ihrer Wahl bereitstellt (Amazon, Google, Facebook, etc.) und die dann über ihre App ihren Thermostaten abfragen bzw. neu einstellen können. Die Cognito-Identität kann dabei auf IoT-Seite benutzt werden, um die Geräte (in diesem Fall die Thermostaten) den Nutzern zuzuordnen. Über Amazon Cognito kann ein Entwickler auch seine User-Daten (zum Beispiel Temperaturkurven, Temperatur-Einstellungen für Räume etc.) zwischen verschiedenen mobilen Geräten (Handy oder Tablet) auch über verschiedene Betriebssysteme hinweg (z.B. iOS oder Android) synchronisieren, so dass er auf allen Geräten die gleiche Benutzererfahrung hat.

entwickler: Anfang 2015 hat Amazon das Unternehmen 2lemetry gekauft. Können Sie uns verraten, in welchen Bereichen 2lemetry Technologie einen wichtigen Beitrag zu AWS IoT geliefert hat?

Gonzalez: Das 2lemetry-Team ist heute Teil des Amazon IoT Teams und leistet dadurch einen wichtigen Beitrag zu AWS IoT.

Constantin GonzalesZur Person: Constantin Gonzalez ist Principal Solutions Architect für AWS in Deutschland. Seit mehr als 25 Jahren beschäftigt er sich bei führenden IT-Unternehmen und in der Forschung mit verschiedensten Technologien. Dazu gehören u.a. CPU- und Systemarchitekturen, Storage, Betriebssysteme, High-Performance-Computing, Webtechnologien und Cloud Computing. Bei Amazon hilft er Kunden dabei, auf leane und agile IT-Prozesse und -Verfahren umzusteigen.

Aufmacherbild: Gil C / Shutterstock.com

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -