Я установил безсерверную среду на AWS, используя lambdas и api gateway. У меня есть сценарий, который вызывается всякий раз, когда кто-то заполняет информацию в контактной форме. Сам скрипт выглядит так:
const rp = require('request-promise')
const sendEmail = require('./sendEmail')
module.exports.run = async (event, context, callback) => {
const body = JSON.parse(event.body)
const { name, email, budget, message, attachment } = body
if (!name) {
return callback(null, {
statusCode: 400,
body: JSON.stringify({ message: 'Name is required' }),
})
}
if (!email) {
return callback(null, {
statusCode: 400,
body: JSON.stringify({ message: 'Email address is required' }),
})
}
if (!message) {
return callback(null, {
statusCode: 400,
body: JSON.stringify({ message: 'Message is required' }),
})
}
return Promise.all([
sendEmail({
to: 'Example <user@example.com>',
subject: 'Received submission',
data:
'Hello'
}),
sendEmail({
to: `${name} <${email}>`,
subject: 'Subject',
data:
'Example text',
}),
])
.then(() => {
return callback(null, {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': true,
},
body: JSON.stringify({ message: 'Great success' }),
})
})
.catch(err => {
return callback(null, {
statusCode: 500,
body: JSON.stringify({
message: 'Oh no :( Message not delivered',
error: err,
}),
})
})
}
И это мой класс sendEmail
const AWS = require('aws-sdk')
const ses = new AWS.SES()
module.exports = function({ to, subject, data, replyTo }) {
return ses
.sendEmail({
Destination: { ToAddresses: [to] },
Message: {
Body: {
Text: { Charset: 'UTF-8', Data: data },
},
Subject: {
Data: subject,
Charset: 'UTF-8',
},
},
Source: 'Example <user@example.com>',
ReplyToAddresses: [replyTo],
})
.promise()
}
Однако он продолжает зависать из-за тайм-аута, который ограничен пятью минутами на стороне aws , я что-то упускаю, что это занимает больше пяти минут?