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]
});
Другие вопросы по тегам