Name of object in the bucket can contain /-s
You can store and retrieve objects with keys like "dir/subdir/file.txt"
You can also list only objects from bucket which keys start with "dir/subdir/"
I think you could support this easily and nicely in your wrapper.
I also suggest using exceptions (or at least E_USER_ERROR instead if you keep compatibility with php4). Currently used trigger_error (E_USER_NOTICE) is too weak, and returning false does not always work (i.e. with file_put_contents).
Now it is hard to do something depending on whether uploading file to amazon (using file_put_contents) succeeded or not. Plus lack of exceptions causes users of your class to write much code to check for failure.
Of course you might allow to select method of reporting errors via configuration option (for example some global constant or class static field).
It would also be nice to allow user to select default level of security for files written using standard flags like 'w' and 'wb', and to allow user to specify via confiugration additional headers for put files (like Expires and such).
Anyway, great job. You class is fantastic. It's hard to imagine better application for custom stream wrappers.