【问题标题】:Best way to delete contents from DynamoDB Table (Using Jenkins + CloudFormation)从 DynamoDB 表中删除内容的最佳方法(使用 Jenkins + CloudFormation)
【发布时间】:2017-04-13 19:52:18
【问题描述】:

我有一个创建 DynamoDB 表的 Cloudformation 模板。

在同一个 Jenkins 管道中,我有一个包含多个阶段的管道脚本。对于其中一个阶段,我实际上部署了相同的 CloudFormation 模板。我试图在 Jenkins 中做的是删除 DynamoDB 表的 1 个阶段:

   stage('Delete DynamoDB Table'){
        sh "aws dynamodb delete-table --table-name ThisTable --region us-east-1"
    }

然后我部署 CFT

   stage('Deploy CloudFormation Template'){

然后我将数据上传到 DynamoDB

   stage('Upload Data to Dynamo'){

我的问题是,当我彻底删除 DynamoDB 表时,我的 Deploy CFT 阶段无法运行,因为它不喜欢这样。所以在我到达上传阶段之前,Jenkins 管道实际上失败了。

有谁知道从 DynamoDB 中删除项目的更好方法?有人告诉我,您不能截断 DynamoDB 表,最好的方法是删除该表并重新创建它。

【问题讨论】:

    标签: amazon-web-services jenkins amazon-dynamodb amazon-cloudformation


    【解决方案1】:

    delete-table 不会自动删除表,只会启动删除操作,这将由 AWS 进行。在进行下一步之前,您应该使用 describe-table 检查表是否已删除。

    【讨论】:

      【解决方案2】:

      如果您使用的是 CloudFormation,那么您应该谨慎删除该表,因为其他事情可能取决于它的存在。 我的解决方案是删除该表中的所有行。以下代码将删除表中的所有行:

       public async Task DeleteAllReadModelEntitiesInTable()
      {
          List<ReadModelEntity> readModels;
      
          var conditions = new List<ScanCondition>();
          readModels = await _context.ScanAsync<ReadModelEntity>(conditions).GetRemainingAsync();
      
          var batchWork = _context.CreateBatchWrite<ReadModelEntity>();
          batchWork.AddDeleteItems(readModels);
          await batchWork.ExecuteAsync();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-25
        • 2010-09-21
        • 2016-05-22
        • 2020-08-03
        • 2023-03-26
        • 2019-01-23
        相关资源
        最近更新 更多