web-dev-qa-db-ja.com

Node.jsのAPIGatewayを使用してAWSLambdaでバイナリレスポンスを送信するにはどうすればよいですか?

S3.getObject()を実行し、バイナリイメージを応答として出力するLambdaとAPIGatewayをセットアップしようとしています。最終的には、画像をs3に保存するのではなく、s3からプルしてその場でサイズを変更したいのですが、単純な画像でも出力できないようです。

私の単純なラムダは次のようになります。

'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);
        });
    });    
};

「image/jpeg」を許可するようにAPIゲートウェイバイナリサポートを設定し、メソッド応答と統合応答でコンテンツタイプを設定しようとしました。

メソッドの応答:enter image description here

統合応答:enter image description here

9
tkiethanom

私はここで私の答えを見つけました: AWS Gateway API base64Decodeは文字化けしたバイナリを生成しますか?

[メソッドの作成]画面で[ラムダ関数]を選択したときにAWSコンソールに表示されない設定を変更するには、CLIコマンドが必要です。

3
tkiethanom

これを読みましたか ブログ投稿

これらの指示に従い、クライアントがContent-TypeヘッダーとAcceptヘッダーを正しく送信していることを確認してください

1
RyanG