我正在尝试使用代码构建操作在AWS代码管道上部署AWS CDK应用程序。
构建和部署在本地完美工作(因为它会!)但是在CodeBuild上运行时,cdk
命令失败
Cannot find module './index'
Subprocess exited with error 1
这很可能是一些琐碎的事情,但我却在挠头,想弄明白是什么!
项目结构是自动生成的(使用cdk init--Language typecript
)
<>/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
对于构建
阶段是
phases:
build:
commands:
- cd ${CODEBUILD_SRC_DIR}/cdk
- yarn install
- yarn build
artifacts:
base-directory: ${CODEBUILD_SRC_DIR}/cdk
files:
- '**/*'
buildspec。
是(此阶段的输入目录是Deploy
阶段的ymlBuild
阶段的工件,即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
阶段抛出找不到模块”/索引“
cdk ls步骤中的错误。由于上面的构建/部署步骤在本地工作(在干净的签出中),我怀疑这可能与将工件从build
复制到deploy
阶段有关,这是导致问题的原因,但无法确定是什么。对故障排除有什么建议吗?
我有同样的问题,并通过在我的buildspec.yml中传递enable-symlink: yes
来解决它
artifacts:
enable-symlinks: yes
你有cdk中的Lambda代码吗?您是否可以检查所使用的处理程序,以及它是否存在于该路径中,例如。
import * as lambda from '@aws-cdk/aws-lambda';
import * as path from 'path';
const fn = new lambda.Function(this, 'MyFunction', {
runtime: lambda.Runtime.NODEJS_10_X,
handler: 'dist/index.handler', <======= Check index.js file is inside dist directory
code: lambda.Code.fromAsset(path.join(__dirname, 'lambda-handler')),
});
CodeBuild有一个已知的问题,它在创建工件时会断开所有符号链接=
错误找不到模块'/索引“
是因为您的cdk。json
有一个命令用于使用ts node
以及当cdk试图从node modules/运行它时。bin/ts节点
链接已断开。
为了做您想要做的事情,我建议您自己在构建工作中压缩代码。比如:
- 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
我想为我的AWS基础设施和AWS Lambda函数设置一个CI/CD管道。我们的想法是让一切都在代码中,版本控制和自动化。我只想
Your browser does not support the video tag.
基本上,我需要配置CI/CD与比特桶源代码到ECS容器。我想使用CodePipline部署新的ECR映像到ECS。 目前,AWS CodePipline中没有将bitbucket指定为源的选项。然而,我已经设法用webhooks配置了CodeBuild,这样它就可以构建docker文件,并在每次推送发布分支时将其推送到ECR。 我想将ECR配置为CodePipline中的“源”阶段,并将其部署到现
14. 构建代码 Spring Boot并不要求任何特殊的代码布局,然而,存在一些有用的最佳实践。 14.1 使用“default”包 如果一个类没有声明包,则认为这个类位于“默认包”中。通常不鼓励使用“默认包”,应当避免使用它。对于使用了@ComponentScan、@EntityScan或@SpringBootApplication注解的Spring Boot程序,“默认包”可能会导致特殊问题
我正在使用代码管道部署云形成模板。问题是这个Cloud形成模板有一些嵌套堆栈。嵌套堆栈模板需要在S3存储桶中。所以在触发主(父)CF模板之前,我需要将CF嵌套堆栈上传到S3。 我没有找到使用代码管道实现这一点的方法。 有什么建议吗?
我想建立一个coDepipeline,它将从github获取代码(java)构建一个jar文件并将其部署到aws lamda(或将jar存储在特定的S3桶中)。我只想使用AWS平台提供的工具。 如果我只使用Codebuild,我就能够从github代码构建jar并将其存储到S3(https://docs.aws.amazon.com/codebuild/latest/userguide/getti