Background - Adding Metadata
You can only set metadata when the object is being uploaded (Amazon link, see copied text below). If you want to add metadata to an existing object you have to make a copy of the object, deleting the old version.
Each Amazon S3 object has data, a key, and metadata. The object key
(or key name) uniquely identifies the object in a bucket. Object
metadata is a set of name-value pairs. You can set object metadata at
the time you upload it. After you upload the object, you cannot modify
object metadata. The only way to modify object metadata is to make a
copy of the object and set the metadata.
Because setting metadata is part of the PUT request there is no additional charge for this, as they are charged per request rather than by data volume.
AWS supported method for validating uploaded Data
AWS supports MD5 validation of data uploaded to S3, which is described here, as well as in the S3API PUT documentation. In short you:
- Calculate the MD5 locally
- Include the MD5 in the upload request, which AWS checks for you
- You can optionally include the MD5 as metadata in your upload
If the object fails the MD5 checksum the response from S3 includes an error.
Costs for AWS MD5 Validation
The S3 pricing page does not mention any costs for MD5 validation, so the only answer I can give you is "no it's not charged for".