web-dev-qa-db-fra.com

Comment envoyer une réponse binaire avec AWS Lambda avec API Gateway dans Node.js?

J'essaie de configurer une passerelle Lambda et API qui effectuera un s3.getObject () et produira l'image binaire en réponse. Finalement, j'aimerais extraire une image de s3 et la redimensionner à la volée au lieu de la sauvegarder sur s3, mais il me semble impossible d'obtenir même une simple image.

Mon lambda simple ressemble à ceci:

'use strict';

const http = require('http');    

exports.handler = (event, context, callback) => {
    http.get('http://i.stack.imgur.com/PIFN0.jpg', function(res) {
        var body = '';
        res.on('data', function(chunk) {
            // Agregates chunks
            body += chunk;
        });
        res.on('end', function() {
            callback(null, body);
        });
    });    
};

J'ai défini la prise en charge binaire de la passerelle API pour autoriser 'image/jpeg' et j'ai essayé de définir le type de contenu dans les réponses Méthode et Réponse d'intégration.

Réponse de la méthode:  enter image description here

Réponse d'intégration:  enter image description here

7
tkiethanom

J'ai trouvé ma réponse ici: L'API AWS Gateway base64Decode produit un fichier binaire tronqué?

Une commande CLI est nécessaire pour modifier un paramètre qui n’est pas exposé dans la console AWS lorsque vous sélectionnez Fonction Lambda dans l’écran Créer une méthode.

2
tkiethanom

Avez-vous lu ce blog post ?

Suivez ces instructions et assurez-vous que votre client envoie correctement les en-têtes Content-Type et Accept.

0
RyanG