aws-apigateway-iot - Konstrukte für AWS S-Lösungen

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

aws-apigateway-iot

Two labels: "STABILITY" in gray and "EXPERIMENTAL" in orange.

Alle Klassen befinden sich in aktiver Entwicklung und unterliegen nicht abwärtskompatiblen Änderungen oder Entfernen in jeder zukünftigen Version. Diese unterliegen nicht derSemantische VersionierungModell. Dies bedeutet, dass Sie möglicherweise Ihren Quellcode aktualisieren müssen, wenn Sie auf eine neuere Version dieses Pakets aktualisieren.

Hinweis: Um eine ordnungsgemäße Funktionalität sicherzustellen, müssen die AWS Solutions Constructs Pakete und AWS CDK-Pakete in Ihrem Projekt dieselbe Version aufweisen.

Sprache Paket
Python
aws_solutions_constructs.aws_apigateway_iot
TypeScript
@aws-solutions-constructs/aws-apigateway-iot
Java
software.amazon.awsconstructs.services.apigatewayiot

Overview

Dieses AWS Solutions Construct implementiert eine Amazon API Gateway REST-API, die mit dem AWS IoT Muster verbunden ist.

Dieses Konstrukt erstellt einen skalierbaren HTTPS-Proxy zwischen API Gateway und AWS IoT. Dies ist praktisch, wenn Legacy-Geräte, die das MQTT- oder MQTT/WebSocket-Protokoll nicht unterstützen, mit der AWS IoT Plattform interagieren möchten.

Diese Implementierung ermöglicht die Veröffentlichung von schreibgeschützten Nachrichten zu bestimmten MQTT-Themen und unterstützt außerdem Schattenaktualisierungen von HTTPS-Geräten für zulässige Elemente in der Geräteregistrierung. Es umfasst keine Lambda Funktionen zum Proxygen von Nachrichten und stützt sich stattdessen auf die direkte Integration von API Gateway zu AWS IoT, die sowohl JSON-Nachrichten als auch binäre Nachrichten unterstützt.

Hier ist eine minimale bereitstellbare Musterdefinition in TypeScript:

import { ApiGatewayToIot } from '@aws-solutions-constructs/aws-apigateway-iot'; new ApiGatewayToIot(this, 'ApiGatewayToIotPattern', { iotEndpoint: 'a1234567890123-ats' });

Initializer

new ApiGatewayToIot(scope: Construct, id: string, props: ApiGatewayToIotProps);

Parameter

Muster-Requisiten

Name Typ Beschreibung
IOtendPoint string Die AWS IoT Endpunkt-Subdomain, in die das API Gateway integriert werden soll (z. B. a1234567890123-ats).
ApigatewayCreateApikey? boolean Wenn auf gesetzttruewird ein API-Schlüssel erstellt und einem UsagePlan zugeordnet. Der Benutzer sollte den Header `x-api-key` angeben, während er auf RestApi zugreift. Standardwert auffalse.
ApigatewayExecutionRole? iam.Role Die IAM-Rolle, die von API Gateway für den Zugriff auf AWS IoT verwendet wird. Wenn nicht angegeben, wird eine Standardrolle mit Platzhalterzeichen ('*') auf alle Themen und Dinge erstellt.
ApigatewayProps? api.restApiProps Optionale, vom Benutzer bereitgestellte Requisiten zum Überschreiben der Standard-Requisiten für die API Gateway REST API.
LogGroupProps? logs.LogGroupProps Optionale, vom Benutzer bereitgestellte Requisiten zum Überschreiben der Standardprops für die CloudWatch Logs s-Protokollgruppe

Muster-Eigenschaften

Name Typ Beschreibung
ApiGateways api.RestApi Gibt eine Instanz der API Gateway REST-API zurück, die durch das Muster erstellt wurde.
ApigatewayCloudWatchRole iam.Role Gibt eine Instanz der IAM-Rolle zurück, die durch das Muster erstellt wurde, das die Zugriffsprotokollierung von der API Gateway REST-API zu CloudWatch ermöglicht.
ApigatewayLogGroup logs.LogGroup Gibt eine Instanz der Protokollgruppe zurück, die durch das Muster erstellt wurde, an das API Gateway REST-API-Zugriffsprotokolle gesendet werden.
ApigatewayRolle iam.Role Gibt eine Instanz der IAM-Rolle zurück, die durch das Muster für die API Gateway REST-API erstellt wurde.

Standardeinstellungen

Die vorgefertigte Implementierung dieses Musters ohne Überschreibungen setzt die folgenden Standardwerte:

Amazon API Gateway

  • Bereitstellen eines Edge-optimierten API-Endpunkts

  • Erstellt API-Ressourcen mitPOSTVeröffentlichen von Nachrichten in IoT -Themen

  • Erstellt API-Ressourcen mitPOSTMethode zum Veröffentlichen von NachrichtenThingShadowundNamedShadows

  • Aktivieren von CloudWatch Protokollierung für API Gateway

  • Konfigurieren der IAM-Rolle für API Gateway mit Zugriff auf alle Themen und Dinge

  • Legen Sie den standardmäßigen AuthorizationType für alle API-Methoden auf IAM fest.

  • X-Ray Nachverfolgung aktivieren

  • Erstellt einen UsagePlan und ordnetprodstage

Im Folgenden finden Sie eine Beschreibung der verschiedenen Ressourcen und Methoden, die das API Gateway nach der Bereitstellung des Construct zur Verfügung stellt. Siehe dieBeispielefinden Sie weitere Informationen zum einfachen Testen dieser Endpunkte mithilfe voncurl.

Art Ressource Abfrageparameter (e) Rückgabecode (e) Beschreibung
POST /message/<topics> qos 200/403/500 Wenn Sie diesen Endpunkt aufrufen, müssen Sie die Themen weiterleiten, die Sie veröffentlichen möchten (z.B. `/message/device/foo`).
POST /shadow/<thingName> Keine 200/403/500 Diese Route ermöglicht es, das Schattendokument einer Sache zu aktualisieren, da seinethingNameUnbenannter (klassischer) Schatten verwenden. Die Karosserie muss der Standardschattenstuktur entsprechen, die einestateKnoten und zugeordnetendesiredundreported-Knoten. Siehe dieAktualisieren von Geräteschatten-Abschnitt für ein Beispiel.
POST /shadow/<thingName>/<shadowName> Keine 200/403/500 Diese Route ermöglicht es, das benannte Schattendokument einer Sache zu aktualisieren, da seinethingNameund dieshadowNamemit dem Typ „Benannter Schatten“. Die Karosserie muss der Standardschattenstuktur entsprechen, die einestateKnoten und zugeordnetendesiredundreported-Knoten. Siehe dieAktualisieren von benannten Schatten-Abschnitt für ein Beispiel.

Architecture

IoT architecture diagram showing device, API Gateway, IoT Core, and related components.

Examples

Die folgenden Beispiele funktionieren nur beiAPI_KEY, da die IAM-Autorisierung erfordert, dass auch ein SigV4-Token angegeben werden muss, stellen Sie sicher, dass dieapiGatewayCreateApiKey-Eigenschaft Ihrer Construct Requisiten auftruewährend der Bereitstellung des Stacks, sonst funktionieren die folgenden Beispiele nicht.

Veröffentlichen einer Nachricht

Sie können mithilfe voncurl, um eine Nachricht zu verschiedenen MQTT-Themen mithilfe der HTTPS-API zu veröffentlichen. Das folgende Beispiel wird eine Nachricht auf derdevice/foo-Thema.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/message/device/foo -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"Hello": "World"}'

Hinweis: Ersetzen Sie diestage-id,region, undapi-key-Parameter mit Ihren Bereitstellungswerten.

Sie können Themennamen in der URL verketten und die API akzeptiert bis zu 7 Unterthemen, auf denen Sie veröffentlichen können. Im folgenden Beispiel veröffentlicht eine Nachricht zum Themadevice/foo/bar/abc/xyz.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/message/device/foo/bar/abc/xyz -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"Hello": "World"}'

Aktualisieren von Geräteschatten

Um das Schattendokument zu aktualisieren, das einer bestimmten Sache zugeordnet ist, können Sie eine Schattenstatusanforderung mit einem Sachnamen ausstellen. Siehe das folgende Beispiel zum Aktualisieren eines Thing-Shadow.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/shadow/device1 -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"state": {"desired": { "Hello": "World" }}}'

Aktualisieren von benannten Schatten

Um das Schattendokument zu aktualisieren, das mit dem Namen „Schatten“ eines bestimmten Dings verknüpft ist, können Sie eine Schattenstatusanforderung mit einem Ding- und Schattennamen ausgeben. Im folgenden Beispiel erfahren Sie, wie Sie einen benannten Schatten aktualisieren.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/shadow/device1/shadow1 -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"state": {"desired": { "Hello": "World" }}}'

Senden binärer Nutzlasten

Es ist möglich, eine binäre Nutzlast an die Proxy-API bis zum AWS IoT -Service zu senden. Im folgenden Beispiel senden wir den Inhalt desREADME.mdDatei, die diesem Modul zugeordnet ist (als binäre Daten behandelt), umdevice/foo-Thema mithilfe derapplication/octet-streamContent-Typ.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/message/device/foo/bar/baz/qux -H "x-api-key: <api-key>" -H "Content-Type: application/octet-stream" --data-binary @README.md

Hinweis: Führen Sie diesen Befehl aus, während Sie sich im Verzeichnis dieses Projekts befinden. Sie können dann testen, andere Arten von Binärdateien aus Ihrem Dateisystem zu senden.

GitHub

Um den Code für dieses Muster anzuzeigen, erstellen/anzeigen Probleme und Pull-Anforderungen usw.:
Circular icon with a graduation cap symbol representing education or learning.
@aws -solutions-konstrukte/aws-apigateway-iot