Final answer:
The observed TTL for an object in Amazon CloudFront being a day despite being set to 0 seconds could result from CloudFront distribution settings, browser caching, or cache control headers from the object's origin overtaking CloudFront's configured TTL.
Step-by-step explanation:
If the Time-to-Live (TTL) for a certain object in Amazon CloudFront is set to 0 seconds, yet users see that the object's TTL is actually a day, there could be several reasons for this phenomenon. One possibility is that the minimum, maximum, and default TTL settings for CloudFront distributions may override the TTL set for individual objects if they're not appropriate. Another reason may be browser caching, where the user's browser might be caching the object for a longer period than specified by CloudFront. Additionally, if the origin of the object, such as an S3 bucket, has its own cache control headers that specify a longer TTL, those headers might take precedence, causing a longer effective TTL.