我确实需要一些指导,根据标题,我已经使用 AWS-cdk v1 创建了一个包含所需 AWS 服务的堆栈(请不要询问是否使用 v2,它必须是 v1)。现在我已经创建了堆栈,我正在尝试使用我的堆栈创建同一环境的“测试/暂存”和“生产”。
现在在 lib/ 中,我已经创建了我的打字稿文件,其中包含所需的所有相应服务以及这些服务的导入,然后是:
export class TestStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
垃圾箱里/我有:
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from '@aws-cdk/core';
import { TestStack } from '../lib/test-stack';
const app = new cdk.App();
我已经尝试了以下方法,这些方法在部署环境中引发了错误,我认为我的代码设置错误。
在库中:
interface MultiStackProps extends cdk.StackProps {
deploymentEnvironment: 'Test' | 'Production';
}
在垃圾箱中:
new TestDevopsStack(app, 'TestStack', {
stackName: 'TestStack',
env: {
region: process.env.CDK_DEFAULT_REGION,
account: process.env.CDK_DEFAULT_ACCOUNT,
},
deploymentEnvironment: 'test',
});
new TestDevopsStack(app, 'ProductionStack', {
stackName: 'ProductionStack',
env: {
region: process.env.CDK_DEFAULT_REGION,
account: process.env.CDK_DEFAULT_ACCOUNT,
},
deploymentEnvironment: 'production',
});
有人可以透露一些信息吗?请注意,我使用的是 aws-cdk v1(具体为 1:47.0)
提前致谢。
我认为您不需要
MultiStackProps
和部署环境那么复杂。 CDK 并不禁止在同一环境中创建两个相同的堆栈,只要名称/资源 ID 不存在冲突即可。
只要做这样的事情就应该有效:
new TestDevopsStack(app, 'TestStack');
new TestDevopsStack(app, 'ProductionStack');
如果上述失败,则不是因为堆栈创建问题,而很可能是由于
TestStack
定义中某处的资源名称冲突。例如,如果您对 S3 存储桶名称进行硬编码,则它将无法创建它的另一个副本。