基本はコードから削除します。 不備がなければデプロイ時に削除されます。

ただしデフォルトで削除されないリソースがあります。 これらは削除ポリシー(removalPolicy)が RETAIN などになっているため、実体がアカウントに残ります。 removalPolicy は、スタックを削除したときだけでなく、コードからリソースを削除したときや、更新でリソースが置換されたときにも効きます(CloudFormation の DeletionPolicyUpdateReplacePolicy に対応)。

CDK コードで明示的に removalPolicy: cdk.RemovalPolicy.DESTROY を指定しないと、これらは残り続けます。

リソース デフォルトの removalPolicy 削除時の挙動 削除するには
S3 バケット RETAIN スタックから外れるだけで、バケットとデータが残る DESTROYautoDeleteObjects: true(バケットが空でないと削除に失敗するため)
ECR リポジトリ RETAIN スタックから外れるだけで、リポジトリとイメージが残る DESTROYemptyOnDelete: true(旧 autoDeleteImages
RDS SNAPSHOT DB は削除され、スナップショットが残る スナップショットも不要なら DESTROYdeletionProtection が有効だと削除できない
DynamoDB テーブル RETAIN テーブルとデータがそのまま残る(スナップショットは取られない) DESTROY
CloudWatch LogGroup RETAIN ロググループとログが残る DESTROY

デフォルト値はバージョンやコンストラクトにより異なる場合があるため、API リファレンスで確認してください。

今の構成の場合

VPC・ECS・SecurityGroup はデフォルトで削除されるため、コード削除 → cdk deploy で問題ありません。 ただし、ECS のログドライバーに awsLogs を使っている場合、CDK が作成する LogGroup は RETAIN で残ります。不要なら手動で削除するか、LogGroup を明示的に作って removalPolicy: DESTROY を指定します。