typescript - cdk CI/CD 管道 - 销毁重复堆栈

标签 typescript amazon-web-services continuous-deployment aws-cdk aws-codepipeline

我正在使用 typescript 中的 cdk 设置 CI/CD 管道。我有一个非常模块化的堆栈结构,所以我有一个包含 3 个堆栈的 Stage:LambdasStack、EndpointsStack 和 TablesStack。顾名思义,我的所有 Lambda 表达式都在 LambdasStack 中,等等。

对于管道,我需要以下流程:

  1. build
  2. 为 PreProd 部署堆栈
  3. 集成测试
  4. 销毁 PreProd 堆栈
  5. 生产前人工审批
  6. 为产品部署堆栈

由于 TablesStack 中表的唯一名称,必须在部署 Prod 堆栈之前销毁 PreProd 堆栈。这就是我正在努力解决的问题。我销毁它们的代码是:

const deletePreProdStacks= new ShellStep('Delete deployed Stacks', {
            commands: [
                'npm install',
                'cdk destroy -f --all'
            ]
 }); 

使用 'cdk destroy -f --all' 找不到舞台的堆栈,因此无法删除它们。

我该如何解决这个问题?给表自动生成的名称不是正确的解决方案吗?或者是否有将 PreProdStacks 覆盖为 ProdStacks 的选项?

我只能访问一个 AWS 账户。因为我读到在不同的帐户上有 Testing/PreProd 阶段和 Prod 阶段。

也许有人对我有类似的最佳实践引用?

提前致谢:)

Edit1:标签更新 Edit2:添加了在同一帐户中部署 PreProd 和 Prod 的情况

最佳答案

我找到了一个不错的解决方案,通过在它们的属性中添加阶段名称来为不能重复的资源提供不同的名称,如下所示:

在堆栈中:

const bookingsTable = new dynamodb.Table(this, 'BookingsTable', {
        tableName: `${stageTag}-BookingsTable`,
        partitionKey: {
            name: 'bookingId',
            type: dynamodb.AttributeType.STRING
        },
        billingMode: dynamodb.BillingMode.PAY_PER_REQUEST
    });

在舞台上:

const tables = new TablesStack(this, `TablesStack`, {
        stageTag: this.stageName,
        env: {
            account: account,
            region: region
        }
    });

我在那里创建了 2 个表,一个名为 PreProd-BookingsTable,另一个名为 Prod-BookingsTable

所以我不需要销毁已经部署的堆栈

关于typescript - cdk CI/CD 管道 - 销毁重复堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71478662/

相关文章:

javascript - 在 Chrome Debugger Blackbox 中删除所有不是 *.ts 和 *.map.js 的文件

reactjs - NextJS 中间件功能未在区域中触发

javascript - 如果我不在 React 功能组件中返回 JSX,如何形成错误的 TypeScript 规则/配置

ruby-on-rails - getaddrinfo 名称或服务未知 套接字错误 s3 fog carrierwave Figaro

Azure 持续部署失败,部署命令上出现 nuget 客户端版本错误

go - 如何在golang中建立自己的自定义ci运行者,例如circle ci

node.js - 类静态端 'typeof _Readable' 错误地扩展了基类静态端 'typeof Readable'

amazon-web-services - 以编程方式配置架构和话语

mysql - AWS Ubuntu 14.04 上的无人值守 MySQL 安装

bitbucket - 如何从 BitBucket 启用到内部服务器的持续部署