У меня проблемы с моей функцией Lambda с Serverless Framework, которая должна передавать данные в DynamoDB.Я не уверен в проблеме, так как не получаю сообщение об ошибке в консоли при запуске: sls invoke local -f scrape -d 'the-last-bookstore-los-angeles
.
saveRatingsToDB.js
const uuid = require('uuid');
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports = (data, businessName) => {
console.log('data saving...');
console.log(data);
const params = {
TableName: process.env.DYNAMODB_TABLE,
Item: {
id: uuid.v1(),
businessName: businessName,
reviewCount: data.reviewCount,
rating: data.rating,
createdAt: JSON.stringify(new Date())
}
};
// I am can log params okay, but nothing with dynamoDb.put is logged to the console
dynamoDb.put(params, error => {
console.log('putting data');
if (error) {
console.log(`Error saving data to DynamoDB: ${JSON.stringify(error)}`);
return Promise.reject(
`Error saving data to DynamoDB: ${JSON.stringify(error)}`
);
} else {
console.log('data saved');
return Promise.resolve(params.Item);
}
});
};
handler.js
'use strict';
const { getPage, parsePage, saveRatingsToDB } = require('./utils');
module.exports.scrape = async (event, context) => {
console.log('Function triggered', event);
const name = event;
const page = await getPage(name);
const data = await parsePage(page);
const db = await saveRatingsToDB(data, name);
return db;
};
serverless.yaml
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: eu-west-2
environment:
DYNAMODB_TABLE: my-table-name
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource: "arn_reference_"
package:
include:
- utils/**
Как уже упоминалось, я не получаю сообщение об ошибке в консоли.Я могу войти и увидеть объект params
из saveRatingsToDB.js
, но ничего внутри действительной функции dynamoDb.put
.
Любая помощь будет оценена.