Я новичок в Lambda и ведре S3, так что терпите меня.
Я настроил AWS SES, который отправляет электронные письма в ведро S3, которое прекрасно работает. То, что я пытаюсь сделать сейчас, - это когда событие ObjectCreated
запускается, когда контейнер S3 получает новый объект, и я запускаю функцию Lambda
(node.js) для POST
на URL-адресе на моем сервере, который получает имя файла, которое затем позволит мне загрузить этот конкретный объект и обработать электронную почту.
Вот разбивка
- Пользователь отправляет электронную почту
- Электронная почта создается как объект в контейнере S3
- Лямбда-функция (node.js) запускается из события
ObjectCreated
- Лямбда отправляет
POST
скрипту на моем сервере, отправляя мне имя файла - Мой скрипт загружает объект из корзины S3
- Все готово!
Проблема в том, что POST
никогда не происходит. Любая помощь, чтобы направлять меня?
Чего я пытаюсь избежать, так это создания задания cron, которое каждую минуту проверяет мое ведро, чтобы увидеть, есть ли новые электронные письма (объекты), и обрабатывать их таким образом. То, что я хочу делать каждый раз, когда новый объект входит в корзину, я могу запустить сценарий и отправить имя объекта, чтобы я мог просто взять этот конкретный объект и обработать его немедленно.
SES правило
![enter image description here](https://i.stack.imgur.com/1KeQb.png)
Лямбда
exports.handler = (event, context, callback) => {
var https = require('https');
var data = JSON.stringify({
'fileName': event.Records[0].s3.object.key,
});
var options = {
host: 'example.com',
port: '80',
path: '/path/script/this_script.php',
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Content-Length': data.length
}
};
var req = https.request(options, function(res) {
var msg = '';
res.setEncoding('utf8');
res.on('data', function(chunk) {
msg += chunk;
});
res.on('end', function() {
console.log(JSON.parse(msg));
context.succeed();
});
});
req.write(data);
req.end();
};
Также независимо от того, что я делаю при тестировании Лямбда я всегда получаю эту ошибку
{
"errorType": "TypeError",
"errorMessage": "Cannot read property '0' of undefined",
"trace": [
"TypeError: Cannot read property '0' of undefined",
" at Runtime.exports.handler (/var/task/index.js:5:34)",
" at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
]
}