As you are using S3, the amount of files should not be an issue. However, consider what happens when you need to lookup a single file manually.. Listing some gazillion files in your browser won't be fun.
So for this case, you should have some kind of "human browseable" tree structure, which final sub directories contain a reasonable amount of files.
I'd recommend either to expand and split the id (assuming it is numeric) or prefix-split the username.
id1 = 123
id1_expanded = 000/000/000/123
id2 = 1000002
id2_expanded = 000/001/000/002
username1 = luccas
username2 = ukautz
In any case, most of the strategies invented for storage structure design try to tackle issues which you simply don't have in S3: amount of files per directory, sharding across storage servers .. stuff like that.
Edit: The long file names you described are often chosen for "security" reasons -> as long as you don't use an algorithm to derive it from username + id or so, any relation between the file and a specific user is concealed (given only the file name). Again: use some kind of sub-directory strategy (for the reason argued above).