- Newest
- Most votes
- Most comments
By default, CDK will (generally) apply a RemovalPolicy value of RETAIN to stateful resources which could contain data in order to avoid deleting it when destroying the stack.
You can see this in the synthesised template. For example, with this resource declared in CDK:
const table = new ddb.Table(this, "testTable", {
partitionKey: { type: AttributeType.STRING, name: 'id' },
});
the synthesised template will contain the following:
"testTableFD9E8557": {
"Type": "AWS::DynamoDB::Table",
"Properties": {
[snip]
},
"UpdateReplacePolicy": "Retain",
"DeletionPolicy": "Retain",
[snip]
},
The CloudFormation UpdateReplacePolicy and DeletionPolicy attributes being Retain will cause CloudFormation to leave the resource intact when deleting the stack.
To have the resource deleted when the stack is deleted (when you run cdk destroy), specify a RemovalPolicy of DESTROY or SNAPSHOT in your code:
const table = new ddb.Table(this, "testTable", {
partitionKey: { type: AttributeType.STRING, name: 'id' },
removalPolicy: RemovalPolicy.DESTROY,
});
giving this CFN template:
"testTableFD9E8557": {
"Type": "AWS::DynamoDB::Table",
"Properties": {
[snip]
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete",
[snip]
},
The above answer solved it for me, but only once I found the documentation to get the right syntax (now linked). In particular, I used Python:
import aws_cdk as cdk
...
global_table = dynamodb.TableV2(stack, "GlobalTable",
partition_key=dynamodb.Attribute(name="pk", type=dynamodb.AttributeType.STRING),
removal_policy=cdk.RemovalPolicy.DESTROY, # <-- THIS IS THE REMOVAL POLICY
replicas=[dynamodb.ReplicaTableProps(region="us-east-1"), dynamodb.ReplicaTableProps(region="us-east-2")
]
)
Happy building!
answered a year ago
