AWS SDK for Ruby
Developer Guide

Uploading an Item with Metadata to an Amazon S3 Bucket

The following example uploads the item (file) C:file.txt with the metadata key-value pair answer and 42 to the bucket my-bucket in the us-west-2 region. Because C:file.txt is the fully qualified name of the file, the name of the item is set to the file name.

require 'aws-sdk-s3' # v2: require 'aws-sdk' s3 = Aws::S3::Resource.new(region: 'us-west-2') file = 'C:\file.txt' bucket = 'my-bucket' # Get just the file name name = File.basename(file) # Create the object to upload obj = s3.bucket(bucket).object(name) # Metadata to add metadata = {"answer" => "42"} # Upload it obj.upload_file(file, metadata: metadata)