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



我正试图按照CDK V2的文档组织new CodePipeline。我的项目有许多NodejsFunction实例。而代码构建可以安装根包。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",
],
})
});

一个解我尝试使用this.codePipeline下面的命令部分的代码为每个Lambda函数。虽然这可以用于安装软件包,但我留下了打字错误:

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

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

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

解决方案:

  1. 没有要求将cd进入每个NodejsFunction
  2. 所有NodejsFunction依赖项都应该存储在根包中。json文件
  3. 所有NodejsFunction处理程序都可以存储在代码中的任何地方,并且可以使用entry键值对引用,或者存储在lib文件夹(DOCS)中。

新建文件结构:

-Root
--lib
---lambda-Stack
----index.ts
----lambdaOne.ts
----lambdaTwo.ts
--package.json
--package-lock.json

我添加了depsLockFilePath参考包锁。json文件,但我不确定这是否是必要的。(文档)

最新更新