我正在使用CDK来部署代码管道。我的设计是将代码构建项目部署到不同的区域,并在一个区域的单个管道中引用它们。
我将代码构建项目构建为:
export class CodebuildCdkStack extends cdk.Stack {
region: string;
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
}
createCodebuildProject = () => {
return new codebuild.PipelineProject(this, name, ...
});
}
}
const project1 = new CodebuildCdkStack(this, 'project1', {env: {region: 'ap-southeast-1', account}});
const project2 = new CodebuildCdkStack(this, 'project2', {env: {region: 'ap-southeast-2', account}});
actions1 =new actions.CodeBuildAction({
...
project: codebuild.PipelineProject.fromProjectArn(this, `project1`, project1.projectArn),
});
actions2 =new actions.CodeBuildAction({
...
project: codebuild.PipelineProject.fromProjectArn(this, `project2`, project2.projectArn),
});
当我跑步时
cdk deploy
,我收到了以下错误:
The 'account' property must be a concrete value (action: 'project1')
经过一些调试,我发现了
project1.projectArn
不是Arn字符串,而是Token对象。那么,我如何才能以正确的方式引用代码构建项目呢?