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
Alle Klassen befinden sich in aktiver Entwicklung und unterliegen nicht abwärtskompatiblen Änderungen oder Entfernen in jeder zukünftigen Version. Diese unterliegen nicht derSemantische Versionierung
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 |
---|---|
|
aws_solutions_constructs.aws_apigateway_iot
|
|
@aws-solutions-constructs/aws-apigateway-iot
|
|
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
-
Bereich
Construct
-
id
string
-
propsApiGatewayToIotProps
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 gesetzttrue wird 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 mit
POST
Veröffentlichen von Nachrichten in IoT -Themen -
Erstellt API-Ressourcen mit
POST
Methode zum Veröffentlichen von NachrichtenThingShadow
undNamedShadows
-
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 ordnet
prod
stage
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 seinethingName Unbenannter (klassischer) Schatten verwenden. Die Karosserie muss der Standardschattenstuktur entsprechen, die einestate Knoten und zugeordnetendesired undreported -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 seinethingName und dieshadowName mit dem Typ „Benannter Schatten“. Die Karosserie muss der Standardschattenstuktur entsprechen, die einestate Knoten und zugeordnetendesired undreported -Knoten. Siehe dieAktualisieren von benannten Schatten-Abschnitt für ein Beispiel. |
Architecture
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 auftrue
wä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.md
Datei, die diesem Modul zugeordnet ist (als binäre Daten behandelt), umdevice/foo
-Thema mithilfe derapplication/octet-stream
Content-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.: | |
---|---|
|
@aws -solutions-konstrukte/aws-apigateway-iot |