AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
connecteur SNS
Le connecteur SNS publie des messages sur une rubrique Amazon SNS. Cela permet aux serveurs Web, aux adresses de messagerie et aux abonnés à d'autres messages de répondre à des événements dans le groupe Greengrass.
Ce connecteur reçoit des informations de message SNS dans une rubrique MQTT, puis envoie le message à une rubrique SNS spécifiée. Vous pouvez éventuellement utiliser des fonctions Lambda personnalisées pour implémenter une logique de filtrage ou de formatage sur les messages avant leur publication sur ce connecteur.
Ce connecteur possède les versions suivantes.
Version |
ARN |
---|---|
4 |
|
3 |
|
2 |
|
1 |
|
Pour obtenir des informations sur les changements apportés aux versions, veuillez consulter le Journal des modifications.
Prérequis
Ce connecteur possède les critères suivants :
Paramètres du connecteur
Ce connecteur fournit les paramètres suivants :
Exemple de création de connecteur (AWS CLI)
La commande CLI suivante crée un ConnectorDefinition
avec une version initiale contenant le connecteur SNS.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MySNSConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/SNS/versions/4", "Parameters": { "DefaultSNSArn": "arn:aws:sns:region
:account-id
:topic-name", "IsolationMode" : "GreengrassContainer" } } ] }'
Dans la AWS IoT Greengrass console, vous pouvez ajouter un connecteur depuis la page Connecteurs du groupe. Pour plus d’informations, consultez Mise en route avec les connecteurs Greengrass (console).
Données d'entrée
Ce connecteur accepte les informations des messages SNS sur un sujet MQTT, puis publie le message tel quel sur le sujet SNS cible. Les messages d'entrée doivent être au format JSON.
- Filtre de rubrique dans l'abonnement
-
sns/message
- Propriétés des messages
-
request
-
Informations sur le message à envoyer à la rubrique SNS.
Nécessaire :
true
Type :
object
qui inclut les propriétés suivantes :message
-
Contenu du message sous forme de chaîne ou au format JSON. Pour obtenir des exemples, consultez Exemple d'entrée.
Pour envoyer le fichier JSON, la propriété
message_structure
doit être définie surjson
et le message doit être un objet JSON encodé en chaîne qui contient une clédefault
.Nécessaire :
true
Type :
string
Modèle valide :
.*
subject
-
Objet du message.
Nécessaire :
false
Type : texte ASCII, 100 caractères maximum. Il doit commencer par une lettre, un nombre ou un signe de ponctuation. Il ne doit pas inclure de sauts de ligne ou de caractères de contrôle.
Modèle valide :
.*
sns_topic_arn
-
ARN de la rubrique SNS vers lequel publier les messages. S'il est spécifié, le connecteur publie dans cette rubrique au lieu de la rubrique par défaut.
Note
Le rôle de groupe doit permettre l'autorisation
sns:Publish
à n'importe quelles rubriques cibles. Pour plus d’informations, consultez Prérequis.Nécessaire :
false
Type :
string
Modèle valide :
arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$
message_structure
-
Structure du message.
Obligatoire :
false
. Cela doit être spécifié pour envoyer un message JSON.Type :
string
Valeurs valides :
json
id
-
ID arbitraire de la demande. Cette propriété est utilisée pour mapper une demande d'entrée à une réponse de sortie. Lorsque spécifiée, la propriété
id
dans l'objet de réponse est définie sur cette valeur. Si vous n'utilisez pas cette fonctionnalité, vous pouvez omettre cette propriété ou spécifier une chaîne vide.Nécessaire :
false
Type :
string
Modèle valide :
.*
- Restrictions
-
La taille du message est délimitée par la taille maximale d'un message SNS de 256 Ko.
- Exemple d'entrée : message de type chaîne
-
Cet exemple envoie un message de type chaîne. Il spécifie la propriété
sns_topic_arn
facultative, qui remplace la rubrique de destination par défaut.{ "request": { "subject": "Message subject", "message": "Message data", "sns_topic_arn": "arn:aws:sns:
region
:account-id
:topic2-name" }, "id": "request123" } - Exemple d'entrée : message JSON
-
Cet exemple envoie un message sous forme d'objet JSON encodé en chaîne incluant la clé
default
.{ "request": { "subject": "Message subject", "message": "{ \"default\": \"Message data\" }", "message_structure": "json" }, "id": "request123" }
Données de sortie
Ce connecteur publie des informations d'état sous forme de données de sortie dans une rubrique MQTT.
- Filtre de rubrique dans l'abonnement
-
sns/message/status
- Exemple de sortie : réussite
-
{ "response": { "sns_message_id": "f80a81bc-f44c-56f2-a0f0-d5af6a727c8a", "status": "success" }, "id": "request123" }
- Exemple de sortie : échec
-
{ "response" : { "error": "InvalidInputException", "error_message": "SNS Topic Arn is invalid", "status": "fail" }, "id": "request123" }
Exemple d'utilisation
Suivez les étapes de haut niveau suivantes pour configurer un exemple de fonction Lambda en Python 3.7 que vous pouvez utiliser pour tester le connecteur.
Note
-
Si vous utilisez d'autres environnements d'exécution Python, vous pouvez créer un lien symbolique entre Python3.x et Python 3.7.
-
Les rubriques Démarrer avec les connecteurs (console) et Démarrer avec les connecteurs (CLI) contiennent des étapes détaillées qui vous montrent comment configurer et déployer un exemple de connecteur Twilio Notifications.
Veillez à répondre aux conditions requises pour le connecteur.
Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d’informations, consultez Gestion du rôle de groupe Greengrass (console) ou Gestion du rôle de groupe Greengrass (interface de ligne de commande).
-
Créez et publiez une fonction Lambda qui envoie des données d'entrée au connecteur.
Enregistrez l'exemple de code en tant que fichier PY. Téléchargez et décompressez le SDK AWS IoT Greengrass principal pour Python. Ensuite, créez un package zip contenant le fichier PY et le dossier
greengrasssdk
au niveau racine. Ce package zip est le package de déploiement vers lequel vous effectuez le téléchargementAWS Lambda.Après avoir créé la fonction Lambda Python 3.7, publiez une version de la fonction et créez un alias.
-
Configurez votre groupe Greengrass.
-
Ajoutez la fonction Lambda par son alias (recommandé). Configurez le cycle de vie Lambda comme étant de longue durée (ou dans
"Pinned": true
la CLI). -
Ajoutez le connecteur et configurez ses paramètres.
-
Ajoutez des abonnements qui permettent au connecteur de recevoir des données d'entrée et d'envoyer des données de sortie sur des filtres de rubrique pris en charge.
Définissez la fonction Lambda comme source, le connecteur comme cible et utilisez un filtre de rubrique d'entrée compatible.
Définissez le connecteur en tant que source, AWS IoT Core en tant que cible et utilisez un filtre de rubrique de sortie pris en charge. Vous utilisez cet abonnement pour afficher les messages d'état dans la AWS IoT console.
-
-
Déployez le groupe.
-
Dans la AWS IoT console, sur la page Test, abonnez-vous à la rubrique des données de sortie pour consulter les messages d'état du connecteur. L'exemple de fonction Lambda a une longue durée de vie et commence à envoyer des messages immédiatement après le déploiement du groupe.
Lorsque vous avez terminé les tests, vous pouvez définir le cycle de vie Lambda à la demande (ou
"Pinned": false
dans la CLI) et déployer le groupe. Cela empêche la fonction d'envoyer des messages.
Exemple
L'exemple suivant de fonction Lambda envoie un message d'entrée au connecteur.
import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'sns/message' def create_request_with_all_fields(): return { "request": { "message": "Message from SNS Connector Test" }, "id" : "req_123" } 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
Licences
Le connecteur SNS inclut les logiciels/licences tiers suivants :
-
AWS SDK for Python (Boto3)
/Licence Apache 2.0 -
botocore
/Licence Apache 2.0 -
dateutil
/Licence PSF -
docutils
/Licence BSD, licence GPL (General Public License) GNU, licence Python Software Foundation, domaine public -
jmespath
/Licence MIT -
s3transfer
/Licence Apache 2.0 -
urllib3
/Licence MIT
Ce connecteur est publié dans le cadre du contrat de licence logicielle Greengrass Core
Journal des modifications
Le tableau suivant décrit les modifications apportées à chaque version du connecteur.
Version |
Modifications |
---|---|
4 |
Ajout du paramètre |
3 |
Mise à niveau de l'environnement d'exécution Lambda vers Python 3.7, ce qui modifie les exigences d'exécution. |
2 |
Correctif pour réduire la journalisation excessive. |
1 |
Première version. |
Un groupe Greengrass ne peut contenir qu'une seule version du connecteur à la fois. Pour de plus amples informations sur la mise à niveau d'une version de connecteur, veuillez consulter Mise à niveau des versions du connecteur.
Consultez aussi
-
Intégrer à des services et protocoles à l'aide de connecteurs Greengrass
-
Publier une action
dans la documentation Boto 3 -
Qu'est-ce qu'Amazon Simple Notification Service ? dans le Guide du développeur Amazon Simple Notification Service