我正在尝试 AWS CDK 并在尝试执行取决于堆栈完成的代码块时卡住了。
这是我当前的代码:
class Application extends cdk.Construct {
constructor(scope: cdk.Construct, id: string) {
super(scope, id);
const webStack = new WebsiteStack(app, `website-stack-${id}`, { stage: id })
const buildStack = new CodeBuildStack(app, `codebuild-stack-${id}`, { stage:id, bucket: webStack.websiteBucket, distribution: webStack.websiteDistribution });
this.generateBuildParameter(id, webStack, buildStack)
}
generateBuildParameter(id: string, webStack: WebsiteStack, buildStack: CodeBuildStack) {
const buildParam = {
projectName: buildStack.buildProject.projectName,
sourceVersion: id,
environmentVariablesOverride: [
{ name: "STAGE", value: id, type: "PLAINTEXT" },
{ name: "WEBSITE_BUCKET", value: webStack.websiteBucket.bucketName, type: "PLAINTEXT" },
{ name: "CLOUDFRONT_DISTRIBUTION_ID", value: webStack.websiteDistribution.distributionId, "type": "PLAINTEXT" }
],
buildspecOverride: "./buildspec.yml"
}
fse.outputJson(`./cdk.out/build-parameters/build-${id}.json`, buildParam, (err: Error) => {
if (err) {
throw err
};
console.log(`build parameter has been created in "../cdk.out/build-parameters/build-${id}.json"`);
})
}
}
我只是想生成一个依赖于buildStack
. 但是,它似乎并没有等待堆栈完成。
这是我当前的输出:
{
"projectName":"${Token[TOKEN.41]}",
"sourceVersion":"master",
"environmentVariablesOverride":[{"name":"STAGE","value":"master","type":"PLAINTEXT"},{"name":"WEBSITE_BUCKET","value":"${Token[TOKEN.17]}","type":"PLAINTEXT"},{"name":"CLOUDFRONT_DISTRIBUTION_ID","value":"${Token[TOKEN.26]}","type":"PLAINTEXT"}],
"buildspecOverride":"./buildspec.yml"
}
AWS CDK 是否支持 Promise 或某种等待堆栈完成的方式?