Explanation
Multipart upload allows large files to be uploaded in segments. Each part is stored individually until the upload is finalized by a "CompleteMultipartUpload" request. If this final request is never issued-due to a timeout, crash, failed job, or misconfiguration-the parts remain stored but are effectively useless: they do not form a valid object and cannot be retrieved. Without a lifecycle policy in place to clean up these incomplete uploads, the orphaned parts persist and continue to incur storage charges indefinitely.
Relevant Billing Model
S3 charges per GB-month for all stored data, including partial object data from incomplete multipart uploads. These parts are billed as standard storage and remain in the bucket unless explicitly removed-either manually or via a lifecycle policy.
Detection
- Identify S3 buckets that are used for large file uploads or automation-driven data ingestion
- Review whether an S3 Lifecycle rule exists to abort incomplete multipart uploads
- Consult with application owners or platform teams to confirm upload workflows and fault tolerance
Remediation
Define an S3 Lifecycle rule to automatically abort incomplete multipart uploads after a specified number of days (e.g., 7 days). This ensures that leftover parts are cleaned up and do not persist indefinitely. Include this rule as a default in all buckets handling large object uploads or automation-driven data pipelines.