AWS CDK 代码管道开发 - 如何安装 NodejsFunction Package.json 依赖项?

问题描述 投票:0回答:2

我正在尝试根据 CDK V2 的

文档组织 
new CodePipeline。我的项目有很多 NodejsFunction
 的实例。虽然 Code Build 可以安装根 package.json 依赖项,但我正在努力寻找一个有组织的解决方案来为每个 Lambda 函数安装每个 package.json。

文件夹结构示例:

-Root --src ---lambdaHandlers ----lambdaOne -----index.ts -----package.json -----package-lock.json ----lambdaTwo -----index.ts -----package.json -----package-lock.json
我需要代码构建进入每个文件夹并安装 

NodejsFunction

 依赖项,以删除以下代码构建错误消息:
error TS2307: Cannot find module '@aws-sdk/client-sfn' or its corresponding type declarations

注意: 一切正常,并使用 cdk deploy --all 进行部署。

代码管道CDK:

this.codePipeline = new CodePipeline(this, `${environment}-${appName}-`, { pipelineName: `${environment}-${appName}-`, selfMutation: true, crossAccountKeys: false, role: this.codePipelineRole, dockerEnabledForSynth: true, synth: new ShellStep("Deployment", { input: CodePipelineSource.codeCommit(this.codeRepository, environment, { codeBuildCloneOutput: true }), installCommands: ["npm i -g npm@latest", "npm install -g typescript"], commands: [ "npm ci", "npm run build", "cdk synth", ], }) });

我尝试的一个解决方案是对每个 Lambda 函数使用下面this.codePipeline

的命令部分中的代码。虽然这适用于安装软件包,但我留下了打字稿错误:

"cd src/lambda-handlers/api-gateway-entry-points/entryPointMagentoCredits", "npm ci"

收到错误: intoMagentoQueueConsumer/node_modules/axios/index.d.ts(6,18): error TS1005: ']' expected.

 
完全错误

typescript aws-cdk aws-codepipeline aws-codebuild
2个回答
2
投票

解决方案:

    没有绝对要求去
  1. cd
    进入每个
    NodejsFunction
    文件夹并在构建命令中安装依赖项。
  2. 所有
  3. NodejsFunction
    依赖项应存储在根package.json文件中
  4. 所有
  5. NodejsFunction
     处理程序都可以存储在代码中的任何位置,并使用 
    entry
     键值对引用,或存储在 lib 文件夹 (
    DOCS) 中。

新文件结构:

-Root --lib ---lambda-Stack ----index.ts ----lambdaOne.ts ----lambdaTwo.ts --package.json --package-lock.json
我参考package-lock.json文件添加了

depsLockFilePath

,但我不确定这是否有必要。 (
文档)


0
投票
NodejsFunction 构造不需要 lambda 的 package.json。它可以从根 package.json 组装包和代码部分本身。在我看来,这使得它如此强大。

© www.soinside.com 2019 - 2024. All rights reserved.