Невозможно выполнить getobject из aws s3 в aws-lambda - PullRequest
0 голосов
/ 02 апреля 2019

Я новичок в aws-lambda и aws-s3.Я пытаюсь создать один микросервис, используя api-gateway, aws s3 и aws lambda.Я написал лямбда-функцию для извлечения объекта из s3, но она отправляет ноль и не выдает никакой ошибки.Я не уверен, что происходит не так.У меня есть роль установки, я получил доступ к s3 и использовал эту роль для лямбды

const AWS = require('aws-sdk'); 
var s3 = new AWS.S3();
exports.handler = async (event) => {
    var params = {
      "Bucket": "bucketname",
      "Key": "keyname"
        };

    s3.getObject(params, function(err, data){
      if(err) {
          return "error while fetching data";
      } else {
          return data;
      }

    });
};

Что я здесь не так делаю?

1 Ответ

1 голос
/ 03 апреля 2019

Вы должны вернуть данные в правильном формате ответа, необходимом для прокси-шлюза API, и использовать для ответа параметр обратного вызова, поэтому измените свою функцию так:

const AWS = require('aws-sdk'); 
var s3 = new AWS.S3();

exports.handler = async (event, context, callback) => {
    var params = {
        "Bucket": "bucketname",
        "Key": "keyname"
    };

    s3.getObject(params, function(err, data){
        if(err) {
            return callback(new Error("error while fetching data"));
        } else {
            let response = {
                statusCode: 200,
                headers: {
                    "x-custom-header" : "my custom header value"
                },
                body: JSON.stringify(data)
            };
            return callback(null, response);
        }
    });
};

Если вы не используетеИнтеграция Lambda прокси шлюза API, тогда вы можете просто изменить ответ на return callback(null, data);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...