Я пытаюсь написать лямбда-функцию, которая запускается всякий раз, когда новое изображение записывается в корзину S3.Триггер уже настроен с использованием правильного сегмента S3, так что я знаю, что это не проблема.
Сама лямбда-функция имеет роли s3: GetObject и DynamodB. * (Которые должны быть полными правами доступа для записи DynamoDB).
Цель здесь - просто записать в таблицу, что я 'Вы уже создали с именем 'art' и вставили значение первичного ключа (imageTitle), которое я пытаюсь получить в var imageName
.Затем я хочу назначить этому ключу атрибут, который является URL-адресом этого изображения, которое я храню в var url
.
Это просто простое упражнение, которое я пытаюсь выполнить, чтобыможет перейти к более сложной записи в БД.Но на данный момент я ничего не записываю в таблицу art
, хотя я добавляю новые объекты в корзину S3, которая запускает триггер.Возможно ли, что лямбда-функция не развернута?Я написал это прямо во встроенном редакторе Lambda Console и сохранил.
Вот код:
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'us-east-1'});
const s3 = new AWS.S3();
exports.handler = async (event, context, callback) => {
//var sourceBucket = event.Records[0].s3.bucket.name;
var sourceKey = event.Records[0].s3.object.key;
var imageName = sourceKey.stringify;
//generate imageURL
var url = "https://s3.amazonaws.com/myapp-20181030214040-deployment/public/" + imageName;
var params = {
TableName : 'art',
Item: {
imageTitle: imageName,
imageURL: url
}
};
docClient.put(params, function(err, data) {
if (err) console.log(err);
else console.log(data);
});
};