AWS Lambda “Processus quitté avant de remplir la demande”
Je suis en train d'appeler un DynamoDB client de méthode et d'obtenir un élément de la table DynamoDB. Je suis à l'aide de AWS Lambda. Cependant, je reçois le message:
"Processus quitté avant de remplir la demande."
J'ai augmenté le délai d'attente juste pour être sûr, mais le temps de traitement est inférieur au délai d'attente. Des conseils?
console.log('Loading event');
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = function(event, context) {
dynamodb.listTables(function(err, data) {
});
var params = {
"TableName": "User",
"Key":
{"User Id" : {"S":event.objectId}
},
"AttributesToGet" : ["First Name","Last Name", "Latitude", "Longitude"],
"ConsistentRead" : true
}
dynamodb.getItem(params, function(response,result) {
response.on('data', function(chunk){
console.log(""+chunk);
console.log("test1")
context.done(result);
});
result.on('ready', function(data){
console.log("test2")
console.log("Error:" + data.error);
console.log("ConsumedCapacityUnits:" + data.ConsumedCapacityUnits);
context.done('Error',data);
//...
});
});
};
- Voici quelques dynamo db exemples que j'ai faite si quelqu'un est à la recherche pour certains de code de modèle github.com/deacons2016/DynamoDb-Lambda-Examples
- Je voudrais vous recommandons de faire un essai séparé node.js fichier localement et exécuter votre fonctionnalité. Une fois que vous vérifiez déployer la charge utile.
Vous devez vous connecter pour publier un commentaire.
Le message "Processus quitté avant de remplir la demande" signifie que la fonction Javascript est sorti avant d'appeler
context.done
(oucontext.succeed
, etc.). Habituellement, cela signifie qu'il y a une erreur dans votre code.Je ne suis pas un expert Javascript (à tous) de sorte qu'il peut être plus élégante des façons de trouver l'erreur mais mon approche a été de mettre un tas de
console.log
messages dans mon code, exécutez-le, puis examinez les journaux. Je peux habituellement à zéro sur la ligne incriminée et, si je regarde assez longtemps, je suis habituellement capable de comprendre mon erreur.Je vois que vous avez l'abattage déjà. Ce sont ce que l'on voit dans la sortie?
context.succeed
, passuccess
. (J'ai essayé de modifier la réponse, mais il ne me laisserait pas en raison de mon changement a été trop court.)console.log
, ou en plus, vous pouvez consulter les journaux en cloudwatch, les erreurs sont affichées là, il peut sauver beaucoup de tempsPrendre un coup d'oeil à votre consommation de mémoire (inclus dans la dernière ligne de journal). J'ai eu le même message quand je lui ai donné trop peu de mémoire à ma fonction lambda.
J'ai utilisé
callback
, au lieu decontext
.Les exemples plus récents sur le site web aws utilisation
callback
au lieu decontext
.Pour compléter la demande, soit de la ci-dessous doit être appelée:
Lorsque lambda exécution de la demande,
à défaut d'appeler l'une de ces rappels,
vous verrez d'erreur ci-dessous:
Erreur dans votre code. Supprimer le dernier }); n'utilisez pas de contexte, il est là pour des raisons de compatibilité ascendante, l'utilisation de rappels node.js 4.3 et 6.1 de l'exécution.