AWS CDK NodejsFunction: импортировать модуль, экспортированный как «export ="
Есть ли способ использовать модули (например, острые), экспортированные какexport = someModule
в лямбда-функции, определенной с помощьюNodejsFunction
вaws-cdk-lib
?
Заявление о необходимости (const xxx = require('module')
) не работает с кодом Lambda TypeScript, который входит в комплект CDK.
Оба следующих метода записи импорта привели к ошибке.
import sharp from 'sharp'
import * as sharp from 'sharp'
import sharp = require('sharp')
Something went wrong installing the \"sharp\" module
Cannot find module '../build/Release/sharp-linux-x64.node'
Require stack:
- /var/task/index.js
- /var/runtime/index.mjs
Код CDK определяет функцию Lambda следующим образом.
import { aws_lambda_nodejs as lambda } from 'aws-cdk-lib'
const fn = new lambda.NodejsFunction(scope, 'fn-id', {
entry: 'lib/lambda/my-fn.ts',
functionName: 'fn-name'
})
1 ответ
Если вы представляетеnode_modules
илиexternal modules
для вашей NodejsFunction вам нужно будет указать это в своем стеке CDK.
Посмотрите варианты комплектации , чтобы узнать больше.
Вот пример, который используетexternalModules
,nodeModules
иlayers
для доступа к ресурсам.
this.lambdaFunctionExample= new NodejsFunction(this, `lambdaFunctionExample`, {
runtime: Runtime.NODEJS_18_X,
handler: "handler",
bundling: { minify: false, nodeModules: ["@aws-sdk/client-sfn", "axios", "axios-retry"], externalModules: ["aws-sdk", "crypto-js"] },
layers: [lambdaLayerStack.getSecrets, lambdaLayerStack.generateMagentoAuthorisationHeader]
});