Ошибка AWS Lambda при доступе к сегменту S3

У меня есть функция Lambda, запускаемая событием put в ведре S3. Когда файл добавляется в корзину, лямбда срабатывает правильно, но выполняет s3.getObject(params, (err, data) => {}) ничего не происходит.

К роли функции Lambda прикреплена политика S3FullAccess.

Я протестировал лямбда локально (используя sam), и все работает отлично, но когда лямбда развернута, ничего не происходит, и я не знаю, как ее отлаживать.

const aws = require('aws-sdk');
const s3 = new aws.S3();
const bucket = event.Records[0].s3.bucket.name;
const key = event.Records[0].s3.object.key;

s3.getObject({Bucket: bucket, Key: key}, function(err, data) {
  if (err) {
    console.error(err);
  }

  console.log(data);
});

Объем моей лямбды:

  1. Чтение CSV-файла из частной корзины S3
  2. Загрузите содержимое файлов CSV в базу данных в VPC

Чтобы позволить лямбда-выражению обращаться к БД, я настроил лямбда-выражение на том же VPC, что и база данных.

Любая идея?


person Bagbyte    schedule 10.01.2018    source источник


Ответы (1)


Проблема заключалась в том, что Lambda находилась в VPC для подключения к БД, но из-за этого не имела доступа к корзине S3. Чтобы решить эту проблему, я создал конечную точку для сегмента S3 и добавил ее в свою личную таблицу маршрутов.

person Bagbyte    schedule 10.01.2018