CDK创建资源(如果不存在)-打字稿

时间:2020-10-29 20:00:46

标签: typescript amazon-web-services amazon-dynamodb aws-cdk cdk

在我的CDK项目中创建了dynamoDB表。很好,供项目中创建的lambda使用。我们需要删除堆栈,这也很好,因为我们将表上的资源保留为true。

现在,当我尝试全新部署时,我们得到表已存在错误,并且堆栈回滚。我需要仅在表不存在时才创建表的代码。

这是表的基本创建,我在此问题的任何地方都找不到任何文档,甚至找不到可以捕获的异常,或者在这里我可以看到抛出异常的类型,因为我们仅在cloudformation中看到日志控制台上的控制台。

 const dynamoTable = new Table(this, "my-table", {
      tableName: StackConfiguration.tableName,
      partitionKey: { name: "id", type: AttributeType.STRING },
    });

1 个答案:

答案 0 :(得分:0)

这不是一个很好的答案,而是一种解决方法,我将其保留在这里,以防可能对某人有用,但是我们可以将表创建内容添加到代码中的try catch中,我只是捕获了一个通用异常而不是如果有人有正确的例外情况可以在这里找到,我会很感兴趣。这意味着堆栈将部署。

 try {
     const dynamoTable = new Table(this, "my-table", {
      tableName: StackConfiguration.tableName,
      partitionKey: { name: "id", type: AttributeType.STRING },
    });
    
      return dynamoReplayTable;
    } catch (e) {
      return;
    }

如果要使用表,则在代码中需要引用ARN而不是表变量名称,否则可以在catch块中从名称中导入一些东西。但是我发现的最佳解决方案是将表放在单独的堆栈中。