sparse-intern-71089
05/24/2020, 7:36 AMfaint-table-42725
05/26/2020, 4:47 AMastonishing-gpu-37274
05/26/2020, 5:53 AMimport * as aws from '@pulumi/aws';
import { QueueEventSubscription, QueueEvent } from '@pulumi/aws/sqs';
import { lambdaRole } from '../../iam_roles/lambda_role';
const region = aws.config.requireRegion();
const queue = new aws.sqs.Queue('emailNotifications', {
visibilityTimeoutSeconds: 240
});
const callback = new aws.lambda.CallbackFunction<QueueEvent, QueueEventSubscription>('emailNotification', {
role: lambdaRole,
codePathOptions: {
extraExcludePackages: ['typescript']
},
callback: (e, _context, callback) => {
const aws = require('aws-sdk');
const ses = new aws.SES({ region });
for (let record of e.Records) {
const { subject, body, from, to } = JSON.parse(record.body);
console.log('Record:', record.body);
const params = {
Destination: {
ToAddresses: to
},
Message: {
Body: {
Text: { Data: body }
},
Subject: { Data: subject }
},
Source: from
};
ses.sendEmail(params, function(err, data) {
callback(err, data);
});
}
}
});
queue.onEvent('onEmailNotification', callback);
export const emailNotificationQueue = queue;
astonishing-gpu-37274
05/26/2020, 5:54 AMfaint-table-42725
05/26/2020, 4:53 PMfaint-table-42725
05/27/2020, 3:03 PMfaint-table-42725
05/27/2020, 3:03 PM