N'a pas pu analyser corps de la requête en json: caractère Inattendu (\'-\' (code 45)) AWS Lambda + API + Facteur

J'ai essayé pendant quelques jours pour obtenir un paramètre envoyé à partir de la Passerelle API AWS pour une fonction Lambda et je vais avoir pas de succès.

J'ai décidé de commencer par le début, j'ai donc suivi leur procédure pas à pas (http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started.html#getting-started-new-lambda)

J'ai vérifié cette procédure pas à pas à deux fois et j'ai suivi les étapes à la lettre.

Problème

Quand je test l'API de Facteur ou de Swift, j'obtiens l'erreur:

{"message": "n'a pas Pu analyser corps de la requête en json: caractère Inattendu (\'-\' (code 45)) en valeur numérique: attendu des chiffres (0-9) pour suivre le signe moins, pour une valeur numérique valide\n [Source: [B@c036d15; ligne: 1, colonnes: 3]"}

En facteur, Quand j'ai vue le résultat JSON je viens d'obtenir

Mauvais Chaîne

Fonction Lambda

La fonction est l'exemple de base de la Procédure pas à pas:

console.log('Loading event');

exports.handler = function(event, context) {
  var name = (event.name === undefined ? 'No-Name' : event.name);
  console.log('"Hello":"' + name + '"');
  context.done(null, {"Hello":name}); //SUCCESS with message
};

Lors de l'épreuve à partir de la Console Lambda et avec les données de Test j'obtiens le résultat:

{
    "Hello": "TestUser123"
}

Lorsqu'il est Testé à partir de la Passerelle API de Test, Le résultat est aussi:

 {
    "Hello": "TestUser123"
}

Quelqu'un peut voir pourquoi les deux consoles permettent à ce travail, mais lorsqu'il est testé avec FACTEUR ou utilisé à l'intérieur d'un Swift Script, ça ne fonctionne pas ?

Edit 1

Dans le facteur, j'ai défini le type de contenu pour application/json

Le script retourne la valeur par défaut:

 {
    "Hello": "user"
}

Cependant, Quand je l'ai ajouter dans les paramètres nom et TestUser123 en FACTEUR, c'est quand il renvoie l'erreur.

Mise à jour de 1

Ok, j'ai donc modifié le modèle de mappage à un que j'ai trouvé sur une autre réponse:

{ "name": "$input.params('name')" }

Maintenant, le résultat est:

{
   "Hello": ""
}

Des Idées pourquoi il n'est pas le nom?

  • Aucune Raison pour un downvote et sans commentaires - pas très utile
  • J'ai remarqué que Facteur renvoie "Mauvais chaîne" par défaut (Body > Jolie). Changement pour le Brut de réaction.
InformationsquelleAutor JamesG | 2016-03-24