Global metadata is something that your S3 doesnot support.
Use "put/copy" to add an exhisting object. This operation allows you to copy an object onto itself, with modified metadata, without actually downloading and re-uploading the object.
Regarding open-source solutions, there might be, but the only possible mechanism they could use would be to perform the same actions -- iterating through the bucket and updating each object's metadata via the API.