AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.
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.
CloudWatch Metrik-Konnektor
Der CloudWatch Metrics Connector veröffentlicht benutzerdefinierte Metriken von Greengrass-Geräten in Amazon CloudWatch. Der Konnektor bietet eine zentrale Infrastruktur für die Veröffentlichung von CloudWatch Metriken, mit der Sie die Greengrass-Kernumgebung überwachen und analysieren und auf lokale Ereignisse reagieren können. Weitere Informationen finden Sie unter Verwenden von Amazon- CloudWatch Metriken im Amazon- CloudWatch Benutzerhandbuch.
Dieser Konnektor empfängt Metrikdaten wie MQTT-Nachrichten. Der Konnektor stapelt Metriken, die sich im selben Namespace befinden, und veröffentlicht sie CloudWatch in regelmäßigen Abständen in .
Dieser Konnektor hat die folgenden Versionen.
Version |
ARN |
---|---|
5 |
|
4 |
|
3 |
|
2 |
|
1 |
|
Informationen über Versionsänderungen finden Sie im Änderungsprotokoll.
Voraussetzungen
Dieser Konnektor hat die folgenden Anforderungen:
Connector-Parameter
Dieser Konnektor stellt die folgenden Parameter bereit:
Beispiel für das Erstellen eines Konnektors (AWS CLI)
Der folgende CLI-Befehl erstellt eine ConnectorDefinition
mit einer Anfangsversion, die den CloudWatch Metrics-Konnektor enthält.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyCloudWatchMetricsConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/CloudWatchMetrics/versions/4", "Parameters": { "PublishInterval" : "600", "PublishRegion" : "us-west-2", "MemorySize" : "16", "MaxMetricsToRetain" : "2500", "IsolationMode" : "GreengrassContainer" } } ] }'
In der AWS IoT Greengrass -Konsole können Sie einen Connector über die Seite Connectors der Gruppe hinzufügen. Weitere Informationen finden Sie unter Erste Schritte mit Greengrass-Konnektoren (Konsole).
Eingabedaten
Dieser Konnektor akzeptiert Metriken zu einem MQTT-Thema und veröffentlicht die Metriken in CloudWatch. Eingabenachrichten müssen im JSON-Format vorliegen.
- Themenfilter im Abonnement
-
cloudwatch/metric/put
- Nachrichten-Eigenschaften
-
request
-
Informationen über die Metrik in dieser Meldung.
Das Anforderungsobjekt enthält die metrischen Daten, die an CloudWatch veröffentlicht werden sollen. Die Metrikwerte müssen den Spezifikationen der
PutMetricData
API entsprechen. Es werden nur die Eigenschaftennamespace
,metricData.metricName
undmetricData.value
benötigt.Erforderlich:
true
Typ:
object
, der die folgenden Eigenschaften enthält:namespace
-
Der benutzerdefinierte Namespace für die Metrikdaten in dieser Anforderung. CloudWatch verwendet Namespaces als Container für Metrikdatenpunkte.
Anmerkung
Sie können keinen Namespace angeben, der mit der reservierten Zeichenfolge beginnt
AWS/
.Erforderlich:
true
Typ:
string
Gültiges Muster:
[^:].*
metricData
-
Die Daten für die Metrik.
Erforderlich:
true
Typ:
object
, der die folgenden Eigenschaften enthält:metricName
-
Name der Metrik.
Erforderlich:
true
Typ:
string
dimensions
-
Die Dimensionen, die der Metrik zugeordnet sind. Dimensionen liefern zusätzliche Informationen über die Metrik und ihre Daten. Eine Metrik kann bis zu 10 Dimensionen definieren.
Dieser Konnektor enthält automatisch eine Dimension mit dem Namen
coreName
, wobei der Wert der Name des Kerns ist.Erforderlich:
false
Typ:
array
von Dimensionsobjekten, die die folgenden Eigenschaften enthalten:name
-
Der Dimensionsname.
Erforderlich:
false
Typ:
string
value
-
Der Dimensionswert.
Erforderlich:
false
Typ:
string
timestamp
-
Die Zeit, zu der die Metrikdaten empfangen wurden, ausgedrückt als Anzahl der Sekunden seit
Jan 1, 1970 00:00:00 UTC
. Wenn dieser Wert weggelassen wird, verwendet der Konnektor den Zeitpunkt an dem er die Nachricht empfangen hat.Erforderlich:
false
Typ:
timestamp
Anmerkung
Wenn Sie zwischen den Versionen 1 und 4 dieses Konnektors verwenden, empfehlen wir Ihnen, den Zeitstempel für jede Metrik separat abzurufen, wenn Sie mehrere Metriken aus einer einzigen Quelle senden. Verwenden Sie keine Variable, um den Zeitstempel zu speichern.
value
-
Der Wert für die Metrik.
Anmerkung
CloudWatch lehnt Werte ab, die zu klein oder zu groß sind. Die Werte müssen im Bereich von
8.515920e-109
bis1.174271e+108
(Base 10) oder2e-360
bis2e360
(Base 2) liegen. Spezielle Werte (z. B.NaN
,+Infinity
,-Infinity
) werden nicht unterstützt.Erforderlich:
true
Typ:
double
unit
-
Die Einheit der Metrik.
Erforderlich:
false
Typ:
string
Zulässige Werte:
Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None
- Einschränkungen
-
Alle von der CloudWatch
PutMetricData
API auferlegten Limits gelten für Metriken bei Verwendung dieses Konnektors. Von besonderer Bedeutung sind die folgenden Grenzwerte:-
40 KB Limit auf API-Nutzlast
-
20 Metriken pro API-Anforderung
-
150 Transaktionen pro Sekunde (TPS) für die
PutMetricData
-API
Weitere Informationen finden Sie unter -CloudWatch Limits im Amazon- CloudWatch Benutzerhandbuch.
-
- Beispieleingabe
-
{ "request": { "namespace": "Greengrass", "metricData": { "metricName": "latency", "dimensions": [ { "name": "hostname", "value": "test_hostname" } ], "timestamp": 1539027324, "value": 123.0, "unit": "Seconds" } } }
Ausgabedaten
Dieser Connector veröffentlicht Statusinformationen als Ausgabedaten im MQTT-Thema.
- Themenfilter im Abonnement
-
cloudwatch/metric/put/status
- Beispielausgabe: Erfolg
-
Die Antwort enthält den Namespace der Metrikdaten und das
RequestId
Feld aus der CloudWatch Antwort.{ "response": { "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE", "namespace": "Greengrass", "status":"success" } }
- Beispielausgabe: Fehler
-
{ "response" : { "namespace": "Greengrass", "error": "InvalidInputException", "error_message":"cw metric is invalid", "status":"fail" } }
Anmerkung
Wenn der Konnektor einen wiederholbaren Fehler erkennt (z. B. Verbindungsfehler), wiederholt er die Veröffentlichung im nächsten Batch.
Verwendungsbeispiel
Führen Sie die folgenden allgemeinen Schritte aus, um eine Python-3.7-Lambda-Beispielfunktion einzurichten, mit der Sie den Konnektor ausprobieren können.
Anmerkung
-
Wenn Sie andere Python-Laufzeiten verwenden, können Sie einen Symlink von Python3.x zu Python 3.7 erstellen.
-
In den Themen Beginnen Sie mit Konnektoren (Konsole) und Erste Schritte mit Konnektoren (CLI) wird ausführlich beschrieben, wie Sie einen Beispielkonnektor für Twilio-Benachrichtigungen konfigurieren und bereitstellen.
-
Stellen Sie sicher, dass Sie die Anforderungen für den Konnektor erfüllen.
Für die Gruppenrollenanforderung müssen Sie die Rolle so konfigurieren, dass die erforderlichen Berechtigungen erteilt werden, und sicherstellen, dass die Rolle der Gruppe hinzugefügt wurde. Weitere Informationen finden Sie unter Verwalten der Greengrass-Gruppenrolle (Konsole) oder Verwalten der Greengrass-Gruppenrolle (CLI).
-
Erstellen und veröffentlichen Sie eine Lambda-Funktion, die Eingabedaten an den Konnektor sendet.
Speichern Sie den Beispielcode als PY-Datei. Laden Sie das AWS IoT Greengrass Core SDK for Python herunter und entpacken Sie es. Erstellen Sie dann ein ZIP-Paket, das die PY-Datei und den Ordner
greengrasssdk
auf Stammebene enthält. Dieses ZIP-Paket ist das Bereitstellungspaket, das Sie in hochladenAWS Lambda.Nachdem Sie die Lambda-Funktion Python 3.7 erstellt haben, veröffentlichen Sie eine Funktionsversion und erstellen Sie einen Alias.
-
Konfigurieren Sie Ihre Greengrass-Gruppe.
-
Fügen Sie die Lambda-Funktion nach ihrem Alias hinzu (empfohlen). Konfigurieren Sie den Lambda-Lebenszyklus als langlebig (oder
"Pinned": true
in der CLI). -
Fügen Sie den Konnektor hinzu und konfigurieren Sie seine Parameter.
-
Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, Eingabedaten zu empfangen und Ausgabedaten zu unterstützten Themenfiltern zu senden.
-
Legen Sie die Lambda-Funktion als Quelle und den Konnektor als Ziel fest und verwenden Sie einen unterstützten Eingabethemafilter.
-
Legen Sie den Konnektor als Quelle und AWS IoT Core als Ziel fest und verwenden Sie einen unterstützten Ausgabethemenfilter. Sie verwenden dieses Abonnement, um Statusmeldungen in der -AWS IoTKonsole anzuzeigen.
-
-
-
Stellen Sie die Gruppe bereit.
-
Abonnieren Sie in der -AWS IoTKonsole auf der Seite Test das Ausgabedatenthema, um Statusmeldungen vom Konnektor anzuzeigen. Die Lambda-Beispielfunktion ist langlebig und beginnt sofort nach der Bereitstellung der Gruppe Nachrichten zu senden.
Wenn Sie mit dem Testen fertig sind, können Sie den Lambda-Lebenszyklus auf On-Demand (oder
"Pinned": false
in der CLI) setzen und die Gruppe bereitstellen. Dadurch wird verhindert, dass die Funktion Nachrichten sendet.
Beispiel
Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Konnektor.
import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'cloudwatch/metric/put' def create_request_with_all_fields(): return { "request": { "namespace": "Greengrass_CW_Connector", "metricData": { "metricName": "Count1", "dimensions": [ { "name": "test", "value": "test" } ], "value": 1, "unit": "Seconds", "timestamp": time.time() } } } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return
Lizenzen
Der CloudWatch Metrics-Konnektor enthält die folgende Software/Lizenzierung von Drittanbietern:
-
AWS SDK for Python (Boto3)
/Apache-Lizenz 2.0 -
botocore
/Apache-Lizenz 2.0 -
dateutil
/PSF-Lizenz -
docutils
/BSD-Lizenz, GNU General Public License (GPL), Python Software Foundation License, Public Domain -
jmespath
/MIT-Lizenz -
s3transfer
/Apache-Lizenz 2.0 -
urllib3
/MIT-Lizenz
Dieser Konnektor wurde gemäß der Greengrass Core Software License Agreement
Änderungsprotokoll
In der folgenden Tabelle werden die Änderungen in jeder Version des Konnektors beschrieben.
Version |
Änderungen |
---|---|
5 |
Korrektur, um Unterstützung für doppelte Zeitstempel in Eingabedaten hinzuzufügen. |
4 |
Der Parameter |
3 |
Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, wodurch sich die Laufzeitanforderung ändert. |
2 |
Beheben, um übermäßige Protokollierung zu reduzieren. |
1 |
Erstversion. |
Eine Greengrass-Gruppe kann jeweils nur eine Version des Connectors enthalten. Weitere Informationen zum Aktualisieren einer Konnektorversion finden Sie unter Aktualisieren von Konnektorversionen.
Weitere Informationen finden Sie auch unter
-
Integrieren von Services und Protokollen mit Greengrass-Konnektoren
-
Verwenden von Amazon- CloudWatch Metriken im Amazon CloudWatch -Benutzerhandbuch
-
PutMetricData in der Amazon CloudWatch -API-Referenz zu