delete-stack deletes every resource the stack owns, in reverse dependency order, then the stack itself. It returns at once and prints nothing, even for a stack that does not exist, so follow it with a waiter:
aws cloudformation delete-stack --stack-name booknest-catalog
aws cloudformation wait stack-delete-complete --stack-name booknest-catalog
aws cloudformation list-stacks --output text \
--query "StackSummaries[?StackName=='booknest-catalog'].[StackName,StackStatus]"
aws dynamodb list-tables --query TableNames --output jsonbooknest-catalog DELETE_COMPLETE []
The table went with the stack, and the stack remains listed as DELETE_COMPLETE (AWS 24 keeps that record for 90 days). Deletion fails when a resource cannot be removed, for example an S3 24 bucket that still holds objects or an export another stack imports (The Export Deletion Trap); the stack then sits in DELETE_FAILED. Fix the cause and retry, or retry with --retain-resources LogicalId to leave one resource behind, or --deletion-mode FORCE_DELETE_STACK. Resources meant to outlive the stack belong in DeletionPolicy (Deletion Policies).