[英]S3 trigger failes to update table in DynamoDB
我在 AWS Amplify 中创建了一个 web 应用程序。 web 页面将文件上传到 S3 存储桶。 我创建了一个触发器,它应该在 DynamoDB 中为每个上传的文件创建一条记录。 我的触发代码被调用,我在任何地方都找不到错误,但表格没有更新。
触发代码:
exports.handler = async function (event) {
console.log('Received S3 event:', JSON.stringify(event, null, 2));
// Get the object from the event and show its content type
const eventName = event.Records[0].eventName;
const bucket = event.Records[0].s3.bucket.name; //eslint-disable-line
let key = event.Records[0].s3.object.key.replace('%3A', ':');
const imgSize = event.Records[0].s3.object.size;
console.log(`Bucket: ${bucket}`, `Key: ${key}`);
if (eventName === "ObjectCreated:Put") {
console.log("This is a put event")
addDBActivity(key);
}
};
var AWS = require('aws-sdk');
var ddb = new AWS.DynamoDB();
function addDBActivity(key) {
console.log("in addDBActivity");
// let activityTable = "Activity-***-dev"
let activityTable = "Activity-ctuqkflvhvbjxftdvdo64xnzle-dev"
let name = key.split('/').pop();
let owner = key.split('/')[0];
let format = "tcx";
let type = "cycling";
var params = {
TableName: activityTable,
Item: {
key: { S: key },
name: { S: name },
owner: { S: owner },
format: { S: format },
type: { S: type },
}
};
console.log(params);
ddb.putItem(params).promise()
.then(function(data) {
console.log(data);
})
.catch(function(err) {
console.log(err);
});
console.log("after promise");
}
架构.graphql
type Activity @model @auth(rules: [
{ allow: owner, ownerField: "id" }
]) {
id: ID!
name: String!
owner: String!
key: String!
format: String!
type: String!
}
上传文件后,这是 CloudWatch 中的日志 output:
2021-12-18T13:14:26.093+02:00
2021-12-18T11:14:26.092Z 20cf4afe-3c96-4ee2-94c6-7c12c27c4d66 INFO This is a put event
2021-12-18T11:14:26.092Z 20cf4afe-3c96-4ee2-94c6-7c12c27c4d66 INFO This is a put event
2021-12-18T13:14:26.093+02:00
2021-12-18T11:14:26.093Z 20cf4afe-3c96-4ee2-94c6-7c12c27c4d66 INFO in addDBActivity
2021-12-18T11:14:26.093Z 20cf4afe-3c96-4ee2-94c6-7c12c27c4d66 INFO in addDBActivity
2021-12-18T13:14:26.123+02:00
2021-12-18T11:14:26.123Z 20cf4afe-3c96-4ee2-94c6-7c12c27c4d66 INFO {
TableName: 'Activity-ctuqkflvhvbjxftdvdo64xnzle-dev',
Item: {
key: {
S: 'public/sourb/ramp_test2tcx-a03e6380-e0c3-4966-b4eb-b74375f930bd.tcx'
},
name: { S: 'ramp_test2tcx-a03e6380-e0c3-4966-b4eb-b74375f930bd.tcx' },
owner: { S: 'public' },
format: { S: 'tcx' },
type: { S: 'cycling' }
}
}
2021-12-18T11:14:26.123Z 20cf4afe-3c96-4ee2-94c6-7c12c27c4d66 INFO { TableName: 'Activity-ctuqkflvhvbjxftdvdo64xnzle-dev', Item: { key: { S: 'public/sourb/ramp_test2tcx-a03e6380-e0c3-4966-b4eb-b74375f930bd.tcx' }, name: { S: 'ramp_test2tcx-a03e6380-e0c3-4966-b4eb-b74375f930bd.tcx' }, owner: { S: 'public' }, format: { S: 'tcx' }, type: { S: 'cycling' } } }
2021-12-18T13:14:26.542+02:00
2021-12-18T11:14:26.522Z 20cf4afe-3c96-4ee2-94c6-7c12c27c4d66 INFO after promise
知道可能是什么问题吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.