Я недавно изменил свои лямбда-функции, чтобы использовать новые функциональные возможности Lambda Layer aws для совместного использования всех папок node_modules.Я создал zip со следующей структурой:
nodejs/node_modules/<libraries, like 'async' and others..>
nodejs/package.json
Я также связал лямбда-функцию со слоем, и это успешно (проверено как в CLI, так и в веб-консоли), см. Вывод ниже ... ново всяком случае, всегда лямбда-функция завершается с ошибкой по требованию:
in lambda: require('async')
output: "errorMessage":"Cannot find module 'async'"
вывод вызова функции обновления:
aws lambda update-function-configuration --function-name MY_LAMBDA --layers arn:aws:lambda:us-west-2:MY_ID:layer:MY_LAYER:4
{
"Layers": [
{
"CodeSize": 21482560,
"Arn": "arn:aws:lambda:us-west-2:MY_ID:layer:MY_LAYER:4"
}
],
"FunctionName": "MY_LAMBDA",
"LastModified": "2018-12-18T23:44:34.062+0000",
"RevisionId": "f55a6ab7-7b0b-494a-840c-87fb8371a117",
"MemorySize": 128,
"Version": "$LATEST",
"Role": "arn:aws:iam::MY_ID:role/service-role/MY_ROLE",
"Timeout": 30,
"Runtime": "nodejs4.3",
"TracingConfig": {
"Mode": "PassThrough"
},
"CodeSha256": "hajYdqb+...=",
"Description": "",
"VpcConfig": { ... lot of stuff here .. },
"CodeSize": 429123,
"FunctionArn": "arn:aws:lambda:MY_ZONE:MY_ID:function:MY_LAMBDA",
"Handler": "MY_HANDLER"
}
примечания: 1. мой слой в версии 4. 2.Я установил слой для всех трех сред node.js для поддержки.3. Я проверил zip-архив, и он имеет все содержимое node_modules, как и ожидалось.
приветствуется любое предложение о том, что еще проверять!