gpt4 book ai didi

typescript - AWS CDK 在 CodePipeline/CodeBuild 中部署

转载 作者:行者123 更新时间:2023-12-04 10:04:05 25 4
gpt4 key购买 nike

我正在尝试使用 CodeBuild 操作在 AWS CodePipeline 上部署 AWS CDK 应用程序。

构建和部署在本地完美运行(因为它会!)但是在 CodeBuild 上运行时,cdk命令失败

Cannot find module './index'
Subprocess exited with error 1

这很可能是微不足道的事情,但我想弄清楚是什么!

项目结构是自动生成的(带有 cdk init --language typescript )
<>/cdk$ ls
README.md app cdk.context.json cdk.json cdk.out jest.config.js lib node_modules package.json test tsconfig.json yarn.lock
buildspec.yml对于 Build阶段是
phases:
build:
commands:
- cd ${CODEBUILD_SRC_DIR}/cdk
- yarn install
- yarn build
artifacts:
base-directory: ${CODEBUILD_SRC_DIR}/cdk
files:
- '**/*'
buildspec.yml对于 Deploy阶段是(此阶段的输入目录是来自 Build 阶段的工件,即 cdk 目录)
phases:
install:
commands:
- npm install -g aws-cdk
- cdk --version

build:
commands:
- cd ${CODEBUILD_SRC_DIR} # this is cdk directory
- cdk ls
- cdk deploy app
Deploy舞台抛出 Cannot find module './index' cdk ls 的错误步。由于上述构建/部署步骤在本地工作(在干净的结帐中),我怀疑这可能与从 Build 复制工件有关。至 Deploy阶段是导致问题的原因,但无法确定是什么。有什么故障排除建议吗?

最佳答案

CodeBuild 存在一个已知问题,它在创建工件时会破坏所有符号链接(symbolic link) => https://forums.aws.amazon.com/thread.jspa?threadID=245780

错误 Cannot find module './index'是因为你的 cdk.json有命令使用ts-node当 cdk 尝试从 node-modules/.bin/ts-node 运行它时链接已损坏。

为了做你想做的事,我建议你在构建工作中自己压缩代码。就像是:

      - yarn build
- tar -czf /tmp/mycode.tar.gz .
artifacts:
files:
- 'mycode.tar.gz'
discard-paths: true
base-directory: '/tmp'

并解压部署作业:
...
- cd ${CODEBUILD_SRC_DIR} # this is cdk directory
- tar -zxvf mycode.tar.gz
- cdk ls
- cdk deploy app

关于typescript - AWS CDK 在 CodePipeline/CodeBuild 中部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61678086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com