-
Notifications
You must be signed in to change notification settings - Fork 0
/
cognitoDynamo.js
51 lines (44 loc) · 1.49 KB
/
cognitoDynamo.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const aws = require('aws-sdk');
const ddb = new aws.DynamoDB({ apiVersion: '2012-10-08' });
const s3 = new aws.S3({ apiVersion: '2006-03-01' });
const tableName = process.env.TABLE_NAME;
const region = process.env.REGION;
const bucketName = process.env.BUCKET_NAME;
aws.config.update({ region: region });
exports.handler = async (event, context) => {
let date = new Date();
console.log('table=' + tableName + ' -- region=' + region);
// If the required parameters are present, proceed
if (event.request.userAttributes.sub) {
// -- Write data to DDB
let ddbParams = {
Item: {
id: { S: event.request.userAttributes.sub },
username: { S: event.request.userAttributes.email },
email: { S: event.request.userAttributes.email },
createdAt: { S: date.toISOString() },
},
TableName: tableName,
};
const bucketParams = {
Bucket: bucketName,
Key: `${event.request.userAttributes.sub}/`,
ACL: 'public-read',
};
// Call DynamoDB and S3
try {
await ddb.putItem(ddbParams).promise();
console.log('Success with DDB');
await s3.putObject(bucketParams).promise();
console.log('Success with S3');
} catch (err) {
console.log('Error', err);
}
console.log('Success: Everything executed correctly');
context.done(null, event);
} else {
// Nothing to do, the user's email ID is unknown
console.log('Error: Nothing was written to DDB or SQS');
context.done(null, event);
}
};