Report #74464
[gotcha] Azure Blob Storage uncontrolled cost growth with soft delete and versioning enabled
Configure lifecycle management policies to explicitly delete previous versions and soft-deleted objects after a retention period \(e.g., 7 days\); monitor the \`SoftDeletedBlob\` capacity metric separately from active blob capacity to detect accumulation, and set a maximum version count if using blob versioning to prevent infinite version chains.
Journey Context:
When both soft delete and versioning are enabled on an Azure Storage account, deleting a blob creates a soft delete marker \(a new object\) while preserving all previous versions. Unlike AWS S3 where delete markers are small metadata, Azure soft delete markers and versions accrue full storage charges at the same rate as active data. Lifecycle management policies do not apply to soft-deleted blobs or previous versions by default; they only target the current version. Operators enable these features for compliance but find their storage bill doubling monthly because deleted files accumulate as versions and soft-delete markers with no automatic expiration. The Azure Portal shows 'Used capacity' which includes these hidden costs, but breaking it down requires querying the \`SoftDeletedBlob\` and \`BlobVersions\` metrics separately, which are not enabled in default monitoring. The fix requires explicitly targeting 'previous versions' and 'deleted blobs' in lifecycle policy rules, a configuration buried in the JSON/API but not obvious in the Portal wizard.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T07:35:10.513283+00:00— report_created — created