J'utilise la passerelle API demande Proxy. Configurer le Integration Request
à utiliser Use Lambda Proxy integration
qui se traduira par la mise à jour Integration Response
à Proxy integrations cannot be configured to transform responses.
Je puis traiter les réponses au sein de la fonction lambda lui-même. Par exemple, je vais avoir les éléments suivants pour une réponse positive:
context.succeed({
statusCode: 200,
headers: { 'Content-Type': 'Application/json'},
body
});
Et pour un exemple de prévu échouer, je:
context.succeed({
statusCode: 404,
headers: { 'Content-Type': 'Application/json'},
body: JSON.stringify({'Error': error})
});
REMARQUE: Il est important de noter que j'utilise context.succeed
sur la gestion des erreurs et non context.fail
.
J'ai développé localement mon lambda dans Node et utilisé une combinaison de lambda-local
et lambda-tester
pour la fonctionnalité de débogage/test. Par exemple, je courrais la commande suivante pour passer dans le lambda et l'événement:
lambda-local -f ~/Desktop/lambdaNode/myNewAPI.js -e ~/Desktop/lambdaEvents/testEvent.json
Un événement exemple ressemblera à ceci:
{
"queryStringParameters":
{
"param1": "1234567890",
"param2": "0987654321",
}
}
Pour mes tests unitaires, je lambda-tester
ainsi mocha comme suit:
const LambdaTester = require('lambda-tester');
describe('handle my new lambda: ',() => {
it('should do exactly what I expect',() => {
return LambdaTester(myNewAPI.handler)
.event(testEvents.newLambdaEvent)
.expectSucceed((result) => {
expect(result.statusCode).to.equal(200);
});
});
});
test ci-dessus avec npm test
si vous êtes configuré pour que, par ailleurs juste mocha testFile
Pour mon cas d'utilisation, l'authentification est traitée différemment car il s'agit d'une API interne. Pour votre cas, je pense que JWT est la meilleure voie à suivre, même si je suis désolé de ne pouvoir fournir plus d'informations à ce sujet.
Y a-t-il un moyen de développer cela localement? J'ai jeté un oeil à un paquet npm lambda-local mais je n'ai trouvé aucun moyen de tester une requête http sur la fonction lambda. Dans quel environnement avez-vous développé votre script? – Stretch0