AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

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

0

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

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

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

谢谢

profile picture
전문가
질문됨 일 년 전102회 조회
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
전문가
답변함 일 년 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인