Мне нужно программно создать простую лямбду из другой лямбды.
Это возможно с CloudFormation:
MyLambda:
Type: AWS::Lambda::Function
Properties:
FunctionName: my-lambda
Handler: index.handler
Runtime: nodejs8.10
Role: !GetAtt MyRole.Arn
Code:
ZipFile: >
exports.handler = event => console.log('EVENT', event)
Я хочу создать лямбду таким же образом программным способом.
Когда я упаковываю лямбда-код в zip-файл и загружаю zip-код с лямбда-кодом, все работает нормально:
const lambda = new Lambda({apiVersion: '2015-03-31'});
...
await lambda.createFunction({
FunctionName: 'my-lambda',
Handler: 'index.handler',
Runtime: 'nodejs8.10',
Role: role.Role.Arn,
Code: {
ZipFile: fs.readFileSync('my-lambda.zip')
}
}).promise();
Но это много стандартного кода, чтобы записать лямбда-код в файл и затем сжать его.
Если я попытаюсь установить встроенный лямбда-код:
...
Code: {
ZipFile: "exports.handler = event => console.log('EVENT', event)"
}
Я получаю ожидаемую ошибку:
Ошибка: не удалось распаковать загруженный файл. Пожалуйста, проверьте ваш файл, затем попробуйте загрузить снова.
Есть ли способ , как динамически создать встроенную лямбда-функцию из другой лямбды , аналогично описанному выше «хаку» CloudFormation?
РЕДАКТИРОВАТЬ: Сосредоточение вопроса на динамическом создании кода без необходимости сначала сжать его.