Я пишу AWS Lambda, используя среду выполнения NodeJS12.x. Это довольно просто. Он отправляет электронное письмо через почтовую марку. Я знаю, что SES является альтернативой, я решил не go этот маршрут здесь.
const postmark = require("postmark");
const postmarkClient = new postmark.ServerClient(process.env.POSTMARK_TOKEN);
exports.handler = function (event, context, callback) {
postmarkClient.sendEmail({
From: "some@email.address",
To: "different@email.address",
Subject: "My emails subject",
TextBody: "My emails text body"
});
}
Загруженная структура zip выглядит примерно так:
lambda.zip:
- node_modules/
-- postmark/
-- axios/
-- other-modules/
- index.js
- package.json
Когда я загружаю этот zip с моей машины Windows и тестирование лямбды, он выдает мне эту ошибку в моих журналах CloudWatch:
Ошибка: не удается найти модуль './node_modules/postmark'\nRequire stack: \ n - /var/task/index.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js
Круто. Я провел добрый старый день поиска в Google и, между прочим, наткнулся на еще один ответ Переполнение стека , в котором было исправление аналогичной проблемы в системе linux. Octopus предложил мне убедиться, что все файлы являются исполняемыми, и что я владею ими, выполнив следующие команды:
sudo chmod +x *.js -R
sudo chown myself.myself * -R
zip -r lambda.zip .
Поэтому я развернул свою верную подсистему Linux для Windows (потому что у нас это сейчас есть), клонировал мой репозиторий, выполнил команды, развернул этот новый zip-файл, мою AWS лямбда-функцию, и протестировал. Вуаля, почтовый штемпель доставил мне на почту письмо.
Отлично. Windows снова проигрывает Linux. Я на этом поезде. Но я все еще работаю в Windows и мне нужно разрабатывать и развертывать свои функции в этой среде.
У меня два вопроса:
- Что мне нужно изменить, чтобы повторить эти Linux действия на стороне Windows моего аппарата?
- Зачем нужны эти действия?