Ich bin mit aws-sdk für die Veröffentlichung Nachricht zum Thema unter Verwendung der Code:Verzögerung in zum Thema veröffentlicht Nachricht aws-sdk iotData.publish auf aws Lambda
var AWS = require('aws-sdk');
AWS.config.region = 'us-east-1';
AWS.config.credentials = {
accessKeyId: 'myaccesskeyid',
secretAccessKey: 'mysecretaccesskey'
}
function LEDOnIntent() {
this.iotdata = new AWS.IotData({
endpoint: 'XXXXXXXXX.iot.us-east-1.amazonaws.com'
});
}
LEDOnIntent.prototype.publishMessage = function() {
console.log('>publishMessage');
var params = {
topic: 'test_topic',
/* required */
payload: new Buffer('{action : "LED on"}') || 'STRING_VALUE',
qos: 1
};
this.iotdata.publish(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else {
console.log("Message published : " + data); // successful response
}
});
}
Es funktioniert in lokalen Unit-Tests gut, aber Wenn ich diesen Code auf AWS Lambda deployt, dann habe ich sehr ungleiches Verhalten. Für die ersten paar Anfragen wird es keine Nachricht veröffentlichen, dann wird es gut funktionieren, wenn ich es kontinuierlich teste. Wenn ich nach etwas Pause teste, dann hört es wieder auf für erste Anfragen zu arbeiten.
hat überprüfen Lambda-Protokolle in Cloudwatch zu der Zeit es nicht funktioniert? –
Ja. Es rief Lambda auf, verzögerte jedoch die Veröffentlichung der Nachricht. Also, wenn ich Anfrage trete, sehe ich "> publishMessage" im Protokoll aber nicht "Nachricht veröffentlicht: ..." – Nidhish
Es gibt einen Grund für die Verzögerung, wenn Sie nach einer Pause laufen, die ich in der Antwort hinzugefügt habe. Es würde sich lohnen zu prüfen, wie lange es dauert, bis das Lambda-Setup eingerichtet ist. Was Sie tun können, ist die erste Veröffentlichung zu tun, lassen Sie einige Sekunden und versuchen Sie anschließende Anfrage. Nur um zu identifizieren, wie lange die Verzögerung sein würde –