CDK destroy不会删除通过CDK创建的 DynamoDB 表

0

【以下的问题经过翻译处理】 大家好,

我在Cloud9环境中使用CDK部署了一个无服务器API https://github.com/fortejas/example-serverless-python-api。当我运行 cdk destroy 时,我注意到 DynamoDB 表没有被删除。

请问这是CDK设计如此吗? 是否有办法删除通过CDK创建的DynamoDB表?

谢谢

profile picture
专家
已提问 8 个月前75 查看次数
1 回答
0

【以下的回答经过翻译处理】 默认情况下,CDK通常为有状态的资源(比如DynamoDB的表)的RemovalPolicy 设置为RETAIN, 来避免在销毁堆栈时将其删除。

您可以在CDK合成模板中看到这一点。例如,使用 CDK 中声明的资源:

const table = new ddb.Table(this, "testTable", {
	partitionKey: { type: AttributeType.STRING, name: 'id' },
});

合成的CloudFormation模板将包含以下内容:

    "testTableFD9E8557": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        [snip]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      [snip]
    },

CloudFormation UpdateReplacePolicy 和 [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation /latest/UserGuide/aws-attribute-deletionpolicy.html) 为“保留”的属性将导致 CloudFormation 在删除堆栈时保持资源完好无损。

要在删除堆栈时(运行 cdk destroy 时)删除资源,请在代码中将RemovalPolicy的值设置为 DESTROYSNAPSHOT

const table = new ddb.Table(this, "testTable", {
	partitionKey: { type: AttributeType.STRING, name: 'id' },
	removalPolicy: RemovalPolicy.DESTROY,
});

以下是以上代码合成的CloudFormation模板, 请参考.

    "testTableFD9E8557": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        [snip]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      [snip]
    },

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则