web-dev-qa-db-fra.com

Comment puis-je publier sur une rubrique MQTT dans une fonction Amazon AWS Lambda?

J'aimerais utiliser une commande simple, comme celle que j'utilise dans bash, pour publier quelque chose dans une rubrique sur MQTT dans une fonction AWS Lambda. Dans le sens de: mosquitto_pub -h mon.serveur.com -t "light/set" -m "on"

Contexte: je voudrais allumer et éteindre une lampe avec Alexa. Alexa peut démarrer une fonction Lambda, et à l'intérieur de celle-ci, j'aimerais lancer une publication MQTT, car la lampe peut écouter un sujet MQTT et réagir aux messages qui y figurent. (Peut-être y a-t-il des solutions plus simples, mais nous sommes dans une réseau compliqué (université) qui rend beaucoup d’autres approches plus difficiles)

8
matt_55_55

Si vous utilisez Python, j'ai pu obtenir une fonction AWS Lambda pour publier un message sur AWS IoT en utilisant les éléments suivants dans ma fonction de gestionnaire:

import boto3
import json

client = boto3.client('iot-data', region_name='us-east-1')

# Change topic, qos and payload
response = client.publish(
        topic='$aws/things/pi/shadow/update',
        qos=1,
        payload=json.dumps({"foo":"bar"})
    )

Vous devrez également vous assurer que le rôle (dans la configuration de votre fonction Lambda) est associé à une stratégie autorisant l'accès à la fonction de publication IoT. Sous IAM -> Roles, vous pouvez ajouter une stratégie en ligne à votre fonction Lambda.

{
   "Version": "2016-6-25",
   "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iot:Publish"
        ],
        "Resource": [
            "*"
        ]
    }
   ]
}
15
Roy

AWS SDK dispose de deux classes pour travailler avec IoT: Iot et IotData. IotData.publish est la méthode que vous recherchez. Il semble que l'objet Iot sert à travailler avec des objets et IotData à utiliser MQTT et les ombres. Cela devrait être directement référencé dans la documentation sur MQTT et les ombres, mais ce n'est pas le cas.

Ce service (IotData) est également disponible dans le CLI .

2
dpurrington

Si vous utilisez Node.js, vous devez installer la bibliothèque mqtt. Les étapes suivantes vous aident à télécharger et à installer la bibliothèque mqtt sur AWS Lambda.

  1. Téléchargez et installez Node.js et npm sur votre PC.

  2. Téléchargez la bibliothèque MQTT pour node.js .

  3. Décompressez-le dans le répertoire nodejs sur lequel Node.js a été installé. (Sous Windows 10 x64, le répertoire nodejs est C:\Program Files\nodejs)

  4. Créez un dossier pour stocker les fichiers installés par mqtt. Par exemple, D:\lambda_function.

  5. Exécutez l'invite de commande en tant qu'administrateur, changez de répertoire en répertoire nodejs.

  6. Installez la bibliothèque mqtt sur D:\lambda_function.

    C:\Program Files\nodejs>npm install --prefix "D:\lambda_function” mqtt 
    

Voici un projet similaire .

0
Khanh Ho Sy