AWS IoT Device SDK
AWS IoT Device SDK (ang. AWS IoT Device Software Development Kit) to zbiór bibliotek i narzędzi umożliwiających programistom tworzenie aplikacji działających na urządzeniach brzegowych (ang. edge devices) i łączących je z usługą Amazon Web Services (IoT) AWS IoT Core. SDK zapewnia uproszczony dostęp do funkcji komunikacyjnych, zarządzania tożsamością, bezpieczeństwa oraz wymiany danych w chmurze.
Historia
Projekt SDK został ogłoszony w 2015 roku, wraz z premierą AWS IoT Core. Pierwsza wersja udostępniona została jako otwarte oprogramowanie na licencji Apache License 2.0. Z biegiem lat wprowadzono wsparcie dla kolejnych języków programowania i rozszerzono zestaw funkcjonalności, aby sprostać rosnącym wymaganiom ekosystemu IoT.
Architektura i główne komponenty
SDK składa się z kilku warstw:
- Warstwa transportowa – obsługuje protokoły MQTT, HTTPS oraz WebSocket. Dzięki temu urządzenia mogą wymieniać wiadomości w trybie publikacji/subskrypcji lub w tradycyjnych zapytaniach HTTP.
- Warstwa bezpieczeństwa – implementuje uwierzytelnianie i szyfrowanie przy użyciu TLS 1.2/1.3 oraz certyfikatów X.509. SDK automatycznie obsługuje rotację kluczy i wymianę certyfikatów.
- Warstwa zarządzania połączeniami – zapewnia automatyczne ponowne łączenie, keep‑alive oraz buforowanie wiadomości w trybie offline.
- Warstwa API aplikacji – udostępnia wysokopoziomowe interfejsy do publikowania danych (
publish), subskrybowania tematów (subscribe), aktualizacji cieni urządzenia (Device Shadow) oraz wywołań zdalnych (AWS Lambda).
Obsługiwane języki programowania
W ramach projektu udostępniono SDK w następujących językach:
- C – najniższy poziom, przeznaczony do urządzeń o ograniczonych zasobach.
- C++ – rozszerza wersję C o obiektowe API.
- Java – popularny w środowiskach przemysłowych i Androidzie.
- Python – idealny do prototypowania i aplikacji na Raspberry Pi.
- JavaScript (Node.js) – wykorzystywany w rozwiązaniach brzegowych opartych na Node.js.
- Arduino – dedykowany zestaw bibliotek dla platformy Arduino.
Podstawowe funkcje
SDK umożliwia realizację następujących zadań:
- Tworzenie i utrzymywanie bezpiecznych połączeń MQTT oraz HTTPS z AWS IoT Core.
- Publikowanie i subskrybowanie wiadomości w tematach
topic. - Wykorzystywanie Device Shadow do przechowywania stanu urządzenia w chmurze.
- Wywoływanie funkcji AWS Lambda oraz obsługa odpowiedzi.
- Obsługa OTA (Over‑The‑Air) – zdalnej aktualizacji oprogramowania.
- Integracja z usługą Rules Engine w celu przetwarzania danych w czasie rzeczywistym.
Bezpieczeństwo
Bezpieczeństwo jest jednym z filarów SDK. Najważniejsze mechanizmy to:
- Uwierzytelnianie przy użyciu certyfikatów X.509 albo IAM (Amazon Identity and Access Management) przy pomocy tokenów Cognito.
- Szyfrowanie kanału komunikacyjnego protokołem TLS.
- Weryfikacja integralności wiadomości przy pomocy podpisów cyfrowych.
- Wbudowane wsparcie dla polityk dostępu definiowanych w AWS IoT Policies.
Licencjonowanie i dostępność
SDK jest dostępny na licencji Apache License 2.0, co pozwala na darmowe użycie, modyfikację oraz dystrybucję w projektach komercyjnych i otwarto‑źródłowych. Repozytoria kodu źródłowego znajdują się w GitHubie w ramach organizacji aws‑developers.
Przykład użycia (Python)
import awsiot
from awsiot import mqtt_connection_builder
# Konfiguracja połączenia
mqtt_connection = mqtt_connection_builder.mtls_from_path(
endpoint="your-endpoint.iot.region.amazonaws.com",
cert_filepath="certs/device.pem.crt",
pri_key_filepath="certs/private.pem.key",
client_id="myDevice001",
clean_session=False,
keep_alive_secs=60)
# Nawiązanie połączenia
mqtt_connection.connect().result()
print("Połączono z AWS IoT Core")
# Subskrypcja tematu
def on_message(topic, payload, **kwargs):
print(f"Otrzymano wiadomość na {topic}: {payload}")
mqtt_connection.subscribe(
topic="my/topic",
qos=awsiot.mqtt.QoS.AT_LEAST_ONCE,
callback=on_message)
# Publikacja wiadomości
mqtt_connection.publish(
topic="my/topic",
payload="Hello, AWS IoT!",
qos=awsiot.mqtt.QoS.AT_LEAST_ONCE)
# Zakończenie połączenia po 10 sekundach
import time
time.sleep(10)
mqtt_connection.disconnect().result()
Powiązane technologie
W ekosystemie AWS SDK współpracuje z wieloma usługami:
- AWS IoT Greengrass – rozszerzenie możliwości przetwarzania danych na urządzeniach brzegowych.
- Amazon Kinesis – strumieniowe przetwarzanie danych z urządzeń.
- Amazon S3 – trwałe przechowywanie plików generowanych przez urządzenia.
- Amazon DynamoDB – baza danych NoSQL do przechowywania stanu urządzeń.
Zobacz także
AWS IoT Core, Device Shadow, Rules Engine, IAM, TLS, MQTT, OTA.