def get_object(params = {}, options = {}, &block)
      req = build_request(:get_object, params)
      req.send_request(options, &block)
    end
def get_object(params = {}, options = {}, &block)
      req = build_request(:get_object, params)
      req.send_request(options, &block)
    end
Retrieves objects from Amazon S3.

 @option params [String, IO] :response_target
   Where to write response data, file path, or IO object.

 @option params [required, String] :bucket

 @option params [String] :if_match
   Return the object only if its entity tag (ETag) is the same as the one
   specified, otherwise return a 412 (precondition failed).

 @option params [Time,DateTime,Date,Integer,String] :if_modified_since
   Return the object only if it has been modified since the specified
   time, otherwise return a 304 (not modified).

 @option params [String] :if_none_match
   Return the object only if its entity tag (ETag) is different from the
   one specified, otherwise return a 304 (not modified).

 @option params [Time,DateTime,Date,Integer,String] :if_unmodified_since
   Return the object only if it has not been modified since the specified
   time, otherwise return a 412 (precondition failed).

 @option params [required, String] :key

 @option params [String] :range
   Downloads the specified range bytes of an object. For more information
   about the HTTP Range header, go to
   http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.

 @option params [String] :response_cache_control
   Sets the Cache-Control header of the response.

 @option params [String] :response_content_disposition
   Sets the Content-Disposition header of the response

 @option params [String] :response_content_encoding
   Sets the Content-Encoding header of the response.

 @option params [String] :response_content_language
   Sets the Content-Language header of the response.

 @option params [String] :response_content_type
   Sets the Content-Type header of the response.

 @option params [Time,DateTime,Date,Integer,String] :response_expires
   Sets the Expires header of the response.

 @option params [String] :version_id
   VersionId used to reference a specific version of the object.

 @option params [String] :sse_customer_algorithm
   Specifies the algorithm to use to when encrypting the object (e.g.,
   AES256).

 @option params [String] :sse_customer_key
   Specifies the customer-provided encryption key for Amazon S3 to use in
   encrypting data. This value is used to store the object and then it is
   discarded; Amazon does not store the encryption key. The key must be
   appropriate for use with the algorithm specified in the
   x-amz-server-side​-encryption​-customer-algorithm header.

 @option params [String] :sse_customer_key_md5
   Specifies the 128-bit MD5 digest of the encryption key according to
   RFC 1321. Amazon S3 uses this header for a message integrity check to
   ensure the encryption key was transmitted without error.

 @option params [String] :request_payer
   Confirms that the requester knows that she or he will be charged for
   the request. Bucket owners need not specify this parameter in their
   requests. Documentation on downloading objects from requester pays
   buckets can be found at
   http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html

 @option params [Integer] :part_number
   Part number of the object being read. This is a positive integer
   between 1 and 10,000. Effectively performs a 'ranged' GET request
   for the part specified. Useful for downloading just a part of an
   object.

 @return [Types::GetObjectOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:

   * {Types::GetObjectOutput#body #body} => IO
   * {Types::GetObjectOutput#delete_marker #delete_marker} => Boolean
   * {Types::GetObjectOutput#accept_ranges #accept_ranges} => String
   * {Types::GetObjectOutput#expiration #expiration} => String
   * {Types::GetObjectOutput#restore #restore} => String
   * {Types::GetObjectOutput#last_modified #last_modified} => Time
   * {Types::GetObjectOutput#content_length #content_length} => Integer
   * {Types::GetObjectOutput#etag #etag} => String
   * {Types::GetObjectOutput#missing_meta #missing_meta} => Integer
   * {Types::GetObjectOutput#version_id #version_id} => String
   * {Types::GetObjectOutput#cache_control #cache_control} => String
   * {Types::GetObjectOutput#content_disposition #content_disposition} => String
   * {Types::GetObjectOutput#content_encoding #content_encoding} => String
   * {Types::GetObjectOutput#content_language #content_language} => String
   * {Types::GetObjectOutput#content_range #content_range} => String
   * {Types::GetObjectOutput#content_type #content_type} => String
   * {Types::GetObjectOutput#expires #expires} => Time
   * {Types::GetObjectOutput#expires_string #expires_string} => String
   * {Types::GetObjectOutput#website_redirect_location #website_redirect_location} => String
   * {Types::GetObjectOutput#server_side_encryption #server_side_encryption} => String
   * {Types::GetObjectOutput#metadata #metadata} => Hash&lt;String,String&gt;
   * {Types::GetObjectOutput#sse_customer_algorithm #sse_customer_algorithm} => String
   * {Types::GetObjectOutput#sse_customer_key_md5 #sse_customer_key_md5} => String
   * {Types::GetObjectOutput#ssekms_key_id #ssekms_key_id} => String
   * {Types::GetObjectOutput#storage_class #storage_class} => String
   * {Types::GetObjectOutput#request_charged #request_charged} => String
   * {Types::GetObjectOutput#replication_status #replication_status} => String
   * {Types::GetObjectOutput#parts_count #parts_count} => Integer
   * {Types::GetObjectOutput#tag_count #tag_count} => Integer
   * {Types::GetObjectOutput#object_lock_mode #object_lock_mode} => String
   * {Types::GetObjectOutput#object_lock_retain_until_date #object_lock_retain_until_date} => Time
   * {Types::GetObjectOutput#object_lock_legal_hold_status #object_lock_legal_hold_status} => String


 @example Example: To retrieve an object

   # The following example retrieves an object for an S3 bucket.

   resp = client.get_object({
     bucket: "examplebucket",
     key: "HappyFace.jpg",
   })

   resp.to_h outputs the following:
   {
     accept_ranges: "bytes",
     content_length: 3191,
     content_type: "image/jpeg",
     etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
     last_modified: Time.parse("Thu, 15 Dec 2016 01:19:41 GMT"),
     metadata: {
     },
     tag_count: 2,
     version_id: "null",
   }

 @example Example: To retrieve a byte range of an object

   # The following example retrieves an object for an S3 bucket. The request specifies the range header to retrieve a
   # specific byte range.

   resp = client.get_object({
     bucket: "examplebucket",
     key: "SampleFile.txt",
     range: "bytes=0-9",
   })

   resp.to_h outputs the following:
   {
     accept_ranges: "bytes",
     content_length: 10,
     content_range: "bytes 0-9/43",
     content_type: "text/plain",
     etag: "\"0d94420ffd0bc68cd3d152506b97a9cc\"",
     last_modified: Time.parse("Thu, 09 Oct 2014 22:57:28 GMT"),
     metadata: {
     },
     version_id: "null",
   }

 @example Download an object to disk
   # stream object directly to disk
   resp = s3.get_object(
     response_target: '/path/to/file',
     bucket: 'bucket-name',
     key: 'object-key')

   # you can still access other response data
   resp.metadata #=> { ... }
   resp.etag #=> "..."

 @example Download object into memory
   # omit :response_target to download to a StringIO in memory
   resp = s3.get_object(bucket: 'bucket-name', key: 'object-key')

   # call #read or #string on the response body
   resp.body.read
   #=> '...'

 @example Streaming data to a block
   # WARNING: yielding data to a block disables retries of networking errors
   File.open('/path/to/file', 'wb') do |file|
     s3.get_object(bucket: 'bucket-name', key: 'object-key') do |chunk|
       file.write(chunk)
     end
   end

 @example Request syntax with placeholder values

   resp = client.get_object({
     bucket: "BucketName", # required
     if_match: "IfMatch",
     if_modified_since: Time.now,
     if_none_match: "IfNoneMatch",
     if_unmodified_since: Time.now,
     key: "ObjectKey", # required
     range: "Range",
     response_cache_control: "ResponseCacheControl",
     response_content_disposition: "ResponseContentDisposition",
     response_content_encoding: "ResponseContentEncoding",
     response_content_language: "ResponseContentLanguage",
     response_content_type: "ResponseContentType",
     response_expires: Time.now,
     version_id: "ObjectVersionId",
     sse_customer_algorithm: "SSECustomerAlgorithm",
     sse_customer_key: "SSECustomerKey",
     sse_customer_key_md5: "SSECustomerKeyMD5",
     request_payer: "requester", # accepts requester
     part_number: 1,
   })

 @example Response structure

   resp.body #=> IO
   resp.delete_marker #=> Boolean
   resp.accept_ranges #=> String
   resp.expiration #=> String
   resp.restore #=> String
   resp.last_modified #=> Time
   resp.content_length #=> Integer
   resp.etag #=> String
   resp.missing_meta #=> Integer
   resp.version_id #=> String
   resp.cache_control #=> String
   resp.content_disposition #=> String
   resp.content_encoding #=> String
   resp.content_language #=> String
   resp.content_range #=> String
   resp.content_type #=> String
   resp.expires #=> Time
   resp.expires_string #=> String
   resp.website_redirect_location #=> String
   resp.server_side_encryption #=> String, one of "AES256", "aws:kms"
   resp.metadata #=> Hash
   resp.metadata["MetadataKey"] #=> String
   resp.sse_customer_algorithm #=> String
   resp.sse_customer_key_md5 #=> String
   resp.ssekms_key_id #=> String
   resp.storage_class #=> String, one of "STANDARD", "REDUCED_REDUNDANCY", "STANDARD_IA", "ONEZONE_IA", "INTELLIGENT_TIERING", "GLACIER", "DEEP_ARCHIVE"
   resp.request_charged #=> String, one of "requester"
   resp.replication_status #=> String, one of "COMPLETE", "PENDING", "FAILED", "REPLICA"
   resp.parts_count #=> Integer
   resp.tag_count #=> Integer
   resp.object_lock_mode #=> String, one of "GOVERNANCE", "COMPLIANCE"
   resp.object_lock_retain_until_date #=> Time
   resp.object_lock_legal_hold_status #=> String, one of "ON", "OFF"

 @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject AWS API Documentation

 @overload get_object(params = {})
 @param [Hash] params ({})