AWS-cdk TypeScript,需要从我创建的堆栈中创建同一环境的两个副本

问题描述 投票:0回答:1

我确实需要一些指导,根据标题,我已经使用 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)

提前致谢。

typescript aws-cdk bin lib aws-cdk-typescript
1个回答
0
投票

我认为您不需要

MultiStackProps
和部署环境那么复杂。 CDK 并不禁止在同一环境中创建两个相同的堆栈,只要名称/资源 ID 不存在冲突即可。

只要做这样的事情就应该有效:

new TestDevopsStack(app, 'TestStack');

new TestDevopsStack(app, 'ProductionStack');

如果上述失败,则不是因为堆栈创建问题,而很可能是由于

TestStack
定义中某处的资源名称冲突。例如,如果您对 S3 存储桶名称进行硬编码,则它将无法创建它的另一个副本。

© www.soinside.com 2019 - 2024. All rights reserved.