_        _______           _______  _          _______ 
( \      (  ____ \|\     /|(  ____ \( \        (  ____ \
| (      | (    \/| )   ( || (    \/| (        | (    \/
| |      | (__    | |   | || (__    | |        | (____  
| |      |  __)   ( (   ) )|  __)   | |        (_____ \ 
| |      | (       \ \_/ / | (      | |              ) )
| (____/\| (____/\  \   /  | (____/\| (____/\  /\____) )
(_______/(_______/   \_/   (_______/(_______/  \______/ 
                                                                                                             

How we can hide an object to be presented in the bucket listing?

When you DELETE an object, all versions remain in the bucket and Amazon S3 inserts a Delete Marker. It becomes the current version of the object.

By default, GET requests retrieve the most recently stored version. Performing a simple GET Object request when the current version is a Delete Marker returns a 404 Not Found error. However, you can GET a noncurrent version of an object by specifying its version ID.

You can permanently delete an object by specifying the version you want to delete. Only the owner of an Amazon S3 bucket can permanently delete a version.

Hint 3
You can list all versions of an object including Delete Marker by list-object-versions command.

{
    "Versions": [
        {
            "ETag": "\"xxx\"",
            "Size": 121,
            "StorageClass": "STANDARD",
            "Key": "treasure_file",
            "VersionId": "xxx",
            "IsLatest": false,
            "LastModified": "2020-03-29T16:29:25.000Z"
        }
    ],
    "DeleteMarkers": [
        {
            "Key": "treasure_file",
            "VersionId": "xxx",
            "IsLatest": true,
            "LastModified": "2020-03-29T16:35:12.000Z"
        }
    ]
}



Need another hint?