Class: Aws::S3::ObjectSummary

Inherits:
Object
  • Object
show all
Extended by:
Deprecations
Defined in:
lib/aws-sdk-s3/object_summary.rb,
lib/aws-sdk-s3/customizations/object_summary.rb

Defined Under Namespace

Classes: Collection

Read-Only Attributes collapse

Actions collapse

Associations collapse

Instance Method Summary collapse

Constructor Details

#initialize(bucket_name, key, options = {}) ⇒ ObjectSummary #initialize(options = {}) ⇒ ObjectSummary

Returns a new instance of ObjectSummary.

Overloads:

  • #initialize(bucket_name, key, options = {}) ⇒ ObjectSummary

    Parameters:

    • bucket_name (String)
    • key (String)

    Options Hash (options):

  • #initialize(options = {}) ⇒ ObjectSummary

    Options Hash (options):

    • :bucket_name (required, String)
    • :key (required, String)
    • :client (Client)


24
25
26
27
28
29
30
31
# File 'lib/aws-sdk-s3/object_summary.rb', line 24

def initialize(*args)
  options = Hash === args.last ? args.pop.dup : {}
  @bucket_name = extract_bucket_name(args, options)
  @key = extract_key(args, options)
  @data = options.delete(:data)
  @client = options.delete(:client) || Client.new(options)
  @waiter_block_warned = false
end

Instance Method Details

#aclObjectAcl

Returns:



2413
2414
2415
2416
2417
2418
2419
# File 'lib/aws-sdk-s3/object_summary.rb', line 2413

def acl
  ObjectAcl.new(
    bucket_name: @bucket_name,
    object_key: @key,
    client: @client
  )
end

#bucketBucket

Returns:



2422
2423
2424
2425
2426
2427
# File 'lib/aws-sdk-s3/object_summary.rb', line 2422

def bucket
  Bucket.new(
    name: @bucket_name,
    client: @client
  )
end

#bucket_nameString

Returns:

  • (String)


36
37
38
# File 'lib/aws-sdk-s3/object_summary.rb', line 36

def bucket_name
  @bucket_name
end

#checksum_algorithmArray<String>

The algorithm that was used to create a checksum of the object.

Returns:

  • (Array<String>)


83
84
85
# File 'lib/aws-sdk-s3/object_summary.rb', line 83

def checksum_algorithm
  data[:checksum_algorithm]
end

#clientClient

Returns:



138
139
140
# File 'lib/aws-sdk-s3/object_summary.rb', line 138

def client
  @client
end

#copy_from(source, options = {}) ⇒ Types::CopyObjectOutput

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Returns:

See Also:



980
981
982
983
984
985
986
987
988
989
# File 'lib/aws-sdk-s3/object_summary.rb', line 980

def copy_from(options = {})
  options = options.merge(
    bucket: @bucket_name,
    key: @key
  )
  resp = Aws::Plugins::UserAgent.feature('resource') do
    @client.copy_object(options)
  end
  resp.data
end

#copy_to(target, options = {}) ⇒ Object

Parameters:

  • target (S3::Object, String, Hash)

    Where to copy the object data to. ‘target` must be one of the following:

    • Aws::S3::Object

    • Hash - with ‘:bucket` and `:key`

    • String - formatted like ‘“target-bucket-name/target-key”`

See Also:



24
25
26
# File 'lib/aws-sdk-s3/customizations/object_summary.rb', line 24

def copy_to(target, options = {})
  object.copy_to(target, options)
end

#dataTypes::Object

Returns the data for this Aws::S3::ObjectSummary.

Returns:

Raises:

  • (NotImplementedError)

    Raises when #data_loaded? is ‘false`.



153
154
155
156
# File 'lib/aws-sdk-s3/object_summary.rb', line 153

def data
  load unless @data
  @data
end

#data_loaded?Boolean

Returns ‘true` if this resource is loaded. Accessing attributes or #data on an unloaded resource will trigger a call to #load.

Returns:

  • (Boolean)

    Returns ‘true` if this resource is loaded. Accessing attributes or #data on an unloaded resource will trigger a call to #load.



161
162
163
# File 'lib/aws-sdk-s3/object_summary.rb', line 161

def data_loaded?
  !!@data
end

#delete(options = {}) ⇒ Types::DeleteObjectOutput

Examples:

Request syntax with placeholder values


object_summary.delete({
  mfa: "MFA",
  version_id: "ObjectVersionId",
  request_payer: "requester", # accepts requester
  bypass_governance_retention: false,
  expected_bucket_owner: "AccountId",
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :mfa (String)

    The concatenation of the authentication device’s serial number, a space, and the value that is displayed on your authentication device. Required to permanently delete a versioned object if versioning is configured with MFA delete enabled.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :version_id (String)

    Version ID used to reference a specific version of the object.

    <note markdown=“1”> For directory buckets in this API operation, only the ‘null` value of the version ID is supported.

    </note>
    
  • :request_payer (String)

    Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see [Downloading Objects in Requester Pays Buckets] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html

  • :bypass_governance_retention (Boolean)

    Indicates whether S3 Object Lock should bypass Governance-mode restrictions to process this operation. To use this header, you must have the ‘s3:BypassGovernanceRetention` permission.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :expected_bucket_owner (String)

    The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code ‘403 Forbidden` (access denied).

Returns:



1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
# File 'lib/aws-sdk-s3/object_summary.rb', line 1046

def delete(options = {})
  options = options.merge(
    bucket: @bucket_name,
    key: @key
  )
  resp = Aws::Plugins::UserAgent.feature('resource') do
    @client.delete_object(options)
  end
  resp.data
end

#download_file(destination, options = {}) ⇒ Boolean

Returns ‘true` when the file is downloaded without any errors.

Parameters:

  • destination (String)

    Where to download the file to.

  • options (Hash) (defaults to: {})

    Additional options for Client#get_object and #Client#head_object may be provided.

Returns:

  • (Boolean)

    Returns ‘true` when the file is downloaded without any errors.

See Also:



79
80
81
# File 'lib/aws-sdk-s3/customizations/object_summary.rb', line 79

def download_file(destination, options = {})
  object.download_file(destination, options)
end

#etagString

The entity tag is a hash of the object. The ETag reflects changes only to the contents of an object, not its metadata. The ETag may or may not be an MD5 digest of the object data. Whether or not it is depends on how the object was created and how it is encrypted as described below:

  • Objects created by the PUT Object, POST Object, or Copy operation, or through the Amazon Web Services Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that are an MD5 digest of their object data.

  • Objects created by the PUT Object, POST Object, or Copy operation, or through the Amazon Web Services Management Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5 digest of their object data.

  • If an object is created by either the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest, regardless of the method of encryption. If an object is larger than 16 MB, the Amazon Web Services Management Console will upload or copy that object as a Multipart Upload, and therefore the ETag will not be an MD5 digest.

<note markdown=“1”> **Directory buckets** - MD5 is not supported by directory buckets.

</note>

Returns:

  • (String)


77
78
79
# File 'lib/aws-sdk-s3/object_summary.rb', line 77

def etag
  data[:etag]
end

#exists?(options = {}) ⇒ Boolean

Returns ‘true` if the ObjectSummary exists.

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Returns:

  • (Boolean)

    Returns ‘true` if the ObjectSummary exists.



168
169
170
171
172
173
174
175
176
177
# File 'lib/aws-sdk-s3/object_summary.rb', line 168

def exists?(options = {})
  begin
    wait_until_exists(options.merge(max_attempts: 1))
    true
  rescue Aws::Waiters::Errors::UnexpectedError => e
    raise e.error
  rescue Aws::Waiters::Errors::WaiterFailed
    false
  end
end

#get(options = {}, &block) ⇒ Types::GetObjectOutput

Examples:

Request syntax with placeholder values


object_summary.get({
  if_match: "IfMatch",
  if_modified_since: Time.now,
  if_none_match: "IfNoneMatch",
  if_unmodified_since: Time.now,
  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,
  expected_bucket_owner: "AccountId",
  checksum_mode: "ENABLED", # accepts ENABLED
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :if_match (String)

    Return the object only if its entity tag (ETag) is the same as the one specified in this header; otherwise, return a ‘412 Precondition Failed` error.

    If both of the ‘If-Match` and `If-Unmodified-Since` headers are present in the request as follows: `If-Match` condition evaluates to `true`, and; `If-Unmodified-Since` condition evaluates to `false`; then, S3 returns `200 OK` and the data requested.

    For more information about conditional requests, see [RFC 7232].

    [1]: tools.ietf.org/html/rfc7232

  • :if_modified_since (Time, DateTime, Date, Integer, String)

    Return the object only if it has been modified since the specified time; otherwise, return a ‘304 Not Modified` error.

    If both of the ‘If-None-Match` and `If-Modified-Since` headers are present in the request as follows:` If-None-Match` condition evaluates to `false`, and; `If-Modified-Since` condition evaluates to `true`; then, S3 returns `304 Not Modified` status code.

    For more information about conditional requests, see [RFC 7232].

    [1]: tools.ietf.org/html/rfc7232

  • :if_none_match (String)

    Return the object only if its entity tag (ETag) is different from the one specified in this header; otherwise, return a ‘304 Not Modified` error.

    If both of the ‘If-None-Match` and `If-Modified-Since` headers are present in the request as follows:` If-None-Match` condition evaluates to `false`, and; `If-Modified-Since` condition evaluates to `true`; then, S3 returns `304 Not Modified` HTTP status code.

    For more information about conditional requests, see [RFC 7232].

    [1]: tools.ietf.org/html/rfc7232

  • :if_unmodified_since (Time, DateTime, Date, Integer, String)

    Return the object only if it has not been modified since the specified time; otherwise, return a ‘412 Precondition Failed` error.

    If both of the ‘If-Match` and `If-Unmodified-Since` headers are present in the request as follows: `If-Match` condition evaluates to `true`, and; `If-Unmodified-Since` condition evaluates to `false`; then, S3 returns `200 OK` and the data requested.

    For more information about conditional requests, see [RFC 7232].

    [1]: tools.ietf.org/html/rfc7232

  • :range (String)

    Downloads the specified byte range of an object. For more information about the HTTP Range header, see [www.rfc-editor.org/rfc/rfc9110.html#name-range][1].

    <note markdown=“1”> Amazon S3 doesn’t support retrieving multiple ranges of data per ‘GET` request.

    </note>
    

    [1]: www.rfc-editor.org/rfc/rfc9110.html#name-range

  • :response_cache_control (String)

    Sets the ‘Cache-Control` header of the response.

  • :response_content_disposition (String)

    Sets the ‘Content-Disposition` header of the response.

  • :response_content_encoding (String)

    Sets the ‘Content-Encoding` header of the response.

  • :response_content_language (String)

    Sets the ‘Content-Language` header of the response.

  • :response_content_type (String)

    Sets the ‘Content-Type` header of the response.

  • :response_expires (Time, DateTime, Date, Integer, String)

    Sets the ‘Expires` header of the response.

  • :version_id (String)

    Version ID used to reference a specific version of the object.

    By default, the ‘GetObject` operation returns the current version of an object. To return a different version, use the `versionId` subresource.

    <note markdown=“1”> * If you include a ‘versionId` in your request header, you must have

    the `s3:GetObjectVersion` permission to access a specific version of
    an object. The `s3:GetObject` permission is not required in this
    scenario.
    
    • If you request the current version of an object without a specific ‘versionId` in the request header, only the `s3:GetObject` permission is required. The `s3:GetObjectVersion` permission is not required in this scenario.

    • **Directory buckets** - S3 Versioning isn’t enabled and supported for directory buckets. For this API operation, only the ‘null` value of the version ID is supported by directory buckets. You can only specify `null` to the `versionId` query parameter in the request.

    </note>
    

    For more information about versioning, see [PutBucketVersioning].

    [1]: docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html

  • :sse_customer_algorithm (String)

    Specifies the algorithm to use when decrypting the object (for example, ‘AES256`).

    If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:

    • ‘x-amz-server-side-encryption-customer-algorithm`

    • ‘x-amz-server-side-encryption-customer-key`

    • ‘x-amz-server-side-encryption-customer-key-MD5`

    For more information about SSE-C, see [Server-Side Encryption (Using Customer-Provided Encryption Keys)] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html

  • :sse_customer_key (String)

    Specifies the customer-provided encryption key that you originally provided for Amazon S3 to encrypt the data before storing it. This value is used to decrypt the object when recovering it and must match the one used when storing the data. The key must be appropriate for use with the algorithm specified in the ‘x-amz-server-side-encryption-customer-algorithm` header.

    If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:

    • ‘x-amz-server-side-encryption-customer-algorithm`

    • ‘x-amz-server-side-encryption-customer-key`

    • ‘x-amz-server-side-encryption-customer-key-MD5`

    For more information about SSE-C, see [Server-Side Encryption (Using Customer-Provided Encryption Keys)] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html

  • :sse_customer_key_md5 (String)

    Specifies the 128-bit MD5 digest of the customer-provided encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.

    If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:

    • ‘x-amz-server-side-encryption-customer-algorithm`

    • ‘x-amz-server-side-encryption-customer-key`

    • ‘x-amz-server-side-encryption-customer-key-MD5`

    For more information about SSE-C, see [Server-Side Encryption (Using Customer-Provided Encryption Keys)] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html

  • :request_payer (String)

    Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see [Downloading Objects in Requester Pays Buckets] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html

  • :part_number (Integer)

    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.

  • :expected_bucket_owner (String)

    The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code ‘403 Forbidden` (access denied).

  • :checksum_mode (String)

    To retrieve the checksum, this mode must be enabled.

Returns:



1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
# File 'lib/aws-sdk-s3/object_summary.rb', line 1302

def get(options = {}, &block)
  options = options.merge(
    bucket: @bucket_name,
    key: @key
  )
  resp = Aws::Plugins::UserAgent.feature('resource') do
    @client.get_object(options, &block)
  end
  resp.data
end

#identifiersObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Deprecated.


2462
2463
2464
2465
2466
2467
# File 'lib/aws-sdk-s3/object_summary.rb', line 2462

def identifiers
  {
    bucket_name: @bucket_name,
    key: @key
  }
end

#initiate_multipart_upload(options = {}) ⇒ MultipartUpload

Examples:

Request syntax with placeholder values


multipartupload = object_summary.initiate_multipart_upload({
  acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
  cache_control: "CacheControl",
  content_disposition: "ContentDisposition",
  content_encoding: "ContentEncoding",
  content_language: "ContentLanguage",
  content_type: "ContentType",
  expires: Time.now,
  grant_full_control: "GrantFullControl",
  grant_read: "GrantRead",
  grant_read_acp: "GrantReadACP",
  grant_write_acp: "GrantWriteACP",
  metadata: {
    "MetadataKey" => "MetadataValue",
  },
  server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
  storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
  website_redirect_location: "WebsiteRedirectLocation",
  sse_customer_algorithm: "SSECustomerAlgorithm",
  sse_customer_key: "SSECustomerKey",
  sse_customer_key_md5: "SSECustomerKeyMD5",
  ssekms_key_id: "SSEKMSKeyId",
  ssekms_encryption_context: "SSEKMSEncryptionContext",
  bucket_key_enabled: false,
  request_payer: "requester", # accepts requester
  tagging: "TaggingHeader",
  object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
  object_lock_retain_until_date: Time.now,
  object_lock_legal_hold_status: "ON", # accepts ON, OFF
  expected_bucket_owner: "AccountId",
  checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :acl (String)

    The canned ACL to apply to the object. Amazon S3 supports a set of predefined ACLs, known as *canned ACLs*. Each canned ACL has a predefined set of grantees and permissions. For more information, see

    Canned ACL][1

    in the *Amazon S3 User Guide*.

    By default, all objects are private. Only the owner has full access control. When uploading an object, you can grant access permissions to individual Amazon Web Services accounts or to predefined groups defined by Amazon S3. These permissions are then added to the access control list (ACL) on the new object. For more information, see [Using ACLs]. One way to grant the permissions using the request headers is to specify a canned ACL with the ‘x-amz-acl` request header.

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL [2]: docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html

  • :cache_control (String)

    Specifies caching behavior along the request/reply chain.

  • :content_disposition (String)

    Specifies presentational information for the object.

  • :content_encoding (String)

    Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.

    <note markdown=“1”> For directory buckets, only the ‘aws-chunked` value is supported in this header field.

    </note>
    
  • :content_language (String)

    The language that the content is in.

  • :content_type (String)

    A standard MIME type describing the format of the object data.

  • :expires (Time, DateTime, Date, Integer, String)

    The date and time at which the object is no longer cacheable.

  • :grant_full_control (String)

    Specify access permissions explicitly to give the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.

    By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see [Access Control List (ACL) Overview] in the *Amazon S3 User Guide*.

    You specify each grantee as a type=value pair, where the type is one of the following:

    • ‘id` – if the value specified is the canonical user ID of an Amazon Web Services account

    • ‘uri` – if you are granting permissions to a predefined group

    • ‘emailAddress` – if the value specified is the email address of an Amazon Web Services account

      <note markdown=“1”> Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

      * US East (N. Virginia)
      
      • US West (N. California)

      • US West (Oregon)

      • Asia Pacific (Singapore)

      • Asia Pacific (Sydney)

      • Asia Pacific (Tokyo)

      • Europe (Ireland)

      • South America (São Paulo)

      For a list of all the Amazon S3 supported Regions and endpoints, see
      
      Regions and Endpoints][2

      in the Amazon Web Services General

      Reference.

      </note>
      

    For example, the following ‘x-amz-grant-read` header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:

    ‘x-amz-grant-read: id=“11112222333”, id=“444455556666” `

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html [2]: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

  • :grant_read (String)

    Specify access permissions explicitly to allow grantee to read the object data and its metadata.

    By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see [Access Control List (ACL) Overview] in the *Amazon S3 User Guide*.

    You specify each grantee as a type=value pair, where the type is one of the following:

    • ‘id` – if the value specified is the canonical user ID of an Amazon Web Services account

    • ‘uri` – if you are granting permissions to a predefined group

    • ‘emailAddress` – if the value specified is the email address of an Amazon Web Services account

      <note markdown=“1”> Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

      * US East (N. Virginia)
      
      • US West (N. California)

      • US West (Oregon)

      • Asia Pacific (Singapore)

      • Asia Pacific (Sydney)

      • Asia Pacific (Tokyo)

      • Europe (Ireland)

      • South America (São Paulo)

      For a list of all the Amazon S3 supported Regions and endpoints, see
      
      Regions and Endpoints][2

      in the Amazon Web Services General

      Reference.

      </note>
      

    For example, the following ‘x-amz-grant-read` header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:

    ‘x-amz-grant-read: id=“11112222333”, id=“444455556666” `

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html [2]: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

  • :grant_read_acp (String)

    Specify access permissions explicitly to allows grantee to read the object ACL.

    By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see [Access Control List (ACL) Overview] in the *Amazon S3 User Guide*.

    You specify each grantee as a type=value pair, where the type is one of the following:

    • ‘id` – if the value specified is the canonical user ID of an Amazon Web Services account

    • ‘uri` – if you are granting permissions to a predefined group

    • ‘emailAddress` – if the value specified is the email address of an Amazon Web Services account

      <note markdown=“1”> Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

      * US East (N. Virginia)
      
      • US West (N. California)

      • US West (Oregon)

      • Asia Pacific (Singapore)

      • Asia Pacific (Sydney)

      • Asia Pacific (Tokyo)

      • Europe (Ireland)

      • South America (São Paulo)

      For a list of all the Amazon S3 supported Regions and endpoints, see
      
      Regions and Endpoints][2

      in the Amazon Web Services General

      Reference.

      </note>
      

    For example, the following ‘x-amz-grant-read` header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:

    ‘x-amz-grant-read: id=“11112222333”, id=“444455556666” `

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html [2]: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

  • :grant_write_acp (String)

    Specify access permissions explicitly to allows grantee to allow grantee to write the ACL for the applicable object.

    By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see [Access Control List (ACL) Overview] in the *Amazon S3 User Guide*.

    You specify each grantee as a type=value pair, where the type is one of the following:

    • ‘id` – if the value specified is the canonical user ID of an Amazon Web Services account

    • ‘uri` – if you are granting permissions to a predefined group

    • ‘emailAddress` – if the value specified is the email address of an Amazon Web Services account

      <note markdown=“1”> Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

      * US East (N. Virginia)
      
      • US West (N. California)

      • US West (Oregon)

      • Asia Pacific (Singapore)

      • Asia Pacific (Sydney)

      • Asia Pacific (Tokyo)

      • Europe (Ireland)

      • South America (São Paulo)

      For a list of all the Amazon S3 supported Regions and endpoints, see
      
      Regions and Endpoints][2

      in the Amazon Web Services General

      Reference.

      </note>
      

    For example, the following ‘x-amz-grant-read` header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:

    ‘x-amz-grant-read: id=“11112222333”, id=“444455556666” `

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html [2]: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

  • :metadata (Hash<String,String>)

    A map of metadata to store with the object in S3.

  • :server_side_encryption (String)

    The server-side encryption algorithm used when you store this object in Amazon S3 (for example, ‘AES256`, `aws:kms`).

    <note markdown=“1”> For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (‘AES256`) is supported.

    </note>
    
  • :storage_class (String)

    By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. The STANDARD storage class provides high durability and high availability. Depending on performance needs, you can specify a different Storage Class. For more information, see [Storage Classes] in the *Amazon S3 User Guide*.

    <note markdown=“1”> * For directory buckets, only the S3 Express One Zone storage class is

    supported to store newly created objects.
    
    • Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html

  • :website_redirect_location (String)

    If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :sse_customer_algorithm (String)

    Specifies the algorithm to use when encrypting the object (for example, AES256).

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :sse_customer_key (String)

    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 S3 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.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :sse_customer_key_md5 (String)

    Specifies the 128-bit MD5 digest of the customer-provided encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :ssekms_key_id (String)

    Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric encryption customer managed key to use for object encryption.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :ssekms_encryption_context (String)

    Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :bucket_key_enabled (Boolean)

    Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). Setting this header to ‘true` causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.

    Specifying this header with an object action doesn’t affect bucket-level settings for S3 Bucket Key.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :request_payer (String)

    Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see [Downloading Objects in Requester Pays Buckets] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html

  • :tagging (String)

    The tag-set for the object. The tag-set must be encoded as URL Query parameters.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :object_lock_mode (String)

    Specifies the Object Lock mode that you want to apply to the uploaded object.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :object_lock_retain_until_date (Time, DateTime, Date, Integer, String)

    Specifies the date and time when you want the Object Lock to expire.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :object_lock_legal_hold_status (String)

    Specifies whether you want to apply a legal hold to the uploaded object.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :expected_bucket_owner (String)

    The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code ‘403 Forbidden` (access denied).

  • :checksum_algorithm (String)

    Indicates the algorithm that you want Amazon S3 to use to create the checksum for the object. For more information, see [Checking object integrity] in the *Amazon S3 User Guide*.

    [1]: docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html

Returns:



1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
# File 'lib/aws-sdk-s3/object_summary.rb', line 1787

def initiate_multipart_upload(options = {})
  options = options.merge(
    bucket: @bucket_name,
    key: @key
  )
  resp = Aws::Plugins::UserAgent.feature('resource') do
    @client.create_multipart_upload(options)
  end
  MultipartUpload.new(
    bucket_name: @bucket_name,
    object_key: @key,
    id: resp.data.upload_id,
    client: @client
  )
end

#keyString

Returns:

  • (String)


41
42
43
# File 'lib/aws-sdk-s3/object_summary.rb', line 41

def key
  @key
end

#last_modifiedTime

Creation date of the object.

Returns:

  • (Time)


47
48
49
# File 'lib/aws-sdk-s3/object_summary.rb', line 47

def last_modified
  data[:last_modified]
end

#loadObject Also known as: reload

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Raises:

  • (NotImplementedError)


144
145
146
147
# File 'lib/aws-sdk-s3/object_summary.rb', line 144

def load
  msg = "#load is not implemented, data only available via enumeration"
  raise NotImplementedError, msg
end

#move_to(target, options = {}) ⇒ void

This method returns an undefined value.

Parameters:

  • target (S3::Object, String, Hash)

    Where to copy the object data to. ‘target` must be one of the following:

    • Aws::S3::Object

    • Hash - with ‘:bucket` and `:key`

    • String - formatted like ‘“target-bucket-name/target-key”`

See Also:



32
33
34
# File 'lib/aws-sdk-s3/customizations/object_summary.rb', line 32

def move_to(target, options = {})
  object.move_to(target, options)
end

#multipart_upload(id) ⇒ MultipartUpload

Parameters:

  • id (String)

Returns:



2431
2432
2433
2434
2435
2436
2437
2438
# File 'lib/aws-sdk-s3/object_summary.rb', line 2431

def multipart_upload(id)
  MultipartUpload.new(
    bucket_name: @bucket_name,
    object_key: @key,
    id: id,
    client: @client
  )
end

#objectObject

Returns:



2441
2442
2443
2444
2445
2446
2447
# File 'lib/aws-sdk-s3/object_summary.rb', line 2441

def object
  Object.new(
    bucket_name: @bucket_name,
    key: @key,
    client: @client
  )
end

#ownerTypes::Owner

The owner of the object

<note markdown=“1”> **Directory buckets** - The bucket owner is returned as the object owner.

</note>

Returns:



111
112
113
# File 'lib/aws-sdk-s3/object_summary.rb', line 111

def owner
  data[:owner]
end

#presigned_post(options = {}) ⇒ PresignedPost

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Returns:

See Also:



40
41
42
# File 'lib/aws-sdk-s3/customizations/object_summary.rb', line 40

def presigned_post(options = {})
  object.presigned_post(options)
end

#presigned_url(http_method, params = {}) ⇒ String

Parameters:

Returns:

  • (String)

See Also:



48
49
50
# File 'lib/aws-sdk-s3/customizations/object_summary.rb', line 48

def presigned_url(http_method, params = {})
  object.presigned_url(http_method, params)
end

#public_url(options = {}) ⇒ String

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Returns:

  • (String)

See Also:



56
57
58
# File 'lib/aws-sdk-s3/customizations/object_summary.rb', line 56

def public_url(options = {})
  object.public_url(options)
end

#put(options = {}) ⇒ Types::PutObjectOutput

Examples:

Request syntax with placeholder values


object_summary.put({
  acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
  body: source_file,
  cache_control: "CacheControl",
  content_disposition: "ContentDisposition",
  content_encoding: "ContentEncoding",
  content_language: "ContentLanguage",
  content_length: 1,
  content_md5: "ContentMD5",
  content_type: "ContentType",
  checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
  checksum_crc32: "ChecksumCRC32",
  checksum_crc32c: "ChecksumCRC32C",
  checksum_sha1: "ChecksumSHA1",
  checksum_sha256: "ChecksumSHA256",
  expires: Time.now,
  grant_full_control: "GrantFullControl",
  grant_read: "GrantRead",
  grant_read_acp: "GrantReadACP",
  grant_write_acp: "GrantWriteACP",
  metadata: {
    "MetadataKey" => "MetadataValue",
  },
  server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
  storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
  website_redirect_location: "WebsiteRedirectLocation",
  sse_customer_algorithm: "SSECustomerAlgorithm",
  sse_customer_key: "SSECustomerKey",
  sse_customer_key_md5: "SSECustomerKeyMD5",
  ssekms_key_id: "SSEKMSKeyId",
  ssekms_encryption_context: "SSEKMSEncryptionContext",
  bucket_key_enabled: false,
  request_payer: "requester", # accepts requester
  tagging: "TaggingHeader",
  object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
  object_lock_retain_until_date: Time.now,
  object_lock_legal_hold_status: "ON", # accepts ON, OFF
  expected_bucket_owner: "AccountId",
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :acl (String)

    The canned ACL to apply to the object. For more information, see

    Canned ACL][1

    in the *Amazon S3 User Guide*.

    When adding a new object, you can use headers to grant ACL-based permissions to individual Amazon Web Services accounts or to predefined groups defined by Amazon S3. These permissions are then added to the ACL on the object. By default, all objects are private. Only the owner has full access control. For more information, see

    Access Control List (ACL) Overview][2

    and [Managing ACLs Using the

    REST API] in the *Amazon S3 User Guide*.

    If the bucket that you’re uploading objects to uses the bucket owner enforced setting for S3 Object Ownership, ACLs are disabled and no longer affect permissions. Buckets that use this setting only accept PUT requests that don’t specify an ACL or PUT requests that specify bucket owner full control ACLs, such as the ‘bucket-owner-full-control` canned ACL or an equivalent form of this ACL expressed in the XML format. PUT requests that contain other ACLs (for example, custom grants to certain Amazon Web Services accounts) fail and return a `400` error with the error code `AccessControlListNotSupported`. For more information, see [ Controlling ownership of objects and disabling ACLs] in the *Amazon S3 User Guide*.

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL [2]: docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html [3]: docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html [4]: docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html

  • :body (String, StringIO, File)

    Object data.

  • :cache_control (String)

    Can be used to specify caching behavior along the request/reply chain. For more information, see [www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9][1].

    [1]: www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

  • :content_disposition (String)

    Specifies presentational information for the object. For more information, see [www.rfc-editor.org/rfc/rfc6266#section-4][1].

    [1]: www.rfc-editor.org/rfc/rfc6266#section-4

  • :content_encoding (String)

    Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. For more information, see [www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding][1].

    [1]: www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding

  • :content_language (String)

    The language the content is in.

  • :content_length (Integer)

    Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. For more information, see [www.rfc-editor.org/rfc/rfc9110.html#name-content-length][1].

    [1]: www.rfc-editor.org/rfc/rfc9110.html#name-content-length

  • :content_md5 (String)

    The base64-encoded 128-bit MD5 digest of the message (without the headers) according to RFC 1864. This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, we recommend using the Content-MD5 mechanism as an end-to-end integrity check. For more information about REST request authentication, see [REST Authentication].

    <note markdown=“1”> The ‘Content-MD5` header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information about Amazon S3 Object Lock, see [Amazon S3 Object Lock Overview] in the *Amazon S3 User Guide*.

    </note>
    

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html [2]: docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html

  • :content_type (String)

    A standard MIME type describing the format of the contents. For more information, see [www.rfc-editor.org/rfc/rfc9110.html#name-content-type][1].

    [1]: www.rfc-editor.org/rfc/rfc9110.html#name-content-type

  • :checksum_algorithm (String)

    Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don’t use the SDK. When you send this header, there must be a corresponding ‘x-amz-checksum-algorithm ` or `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request with the HTTP status code `400 Bad Request`.

    For the ‘x-amz-checksum-algorithm ` header, replace ` algorithm ` with the supported algorithm from the following list:

    • CRC32

    • CRC32C

    • SHA1

    • SHA256

    For more information, see [Checking object integrity] in the *Amazon S3 User Guide*.

    If the individual checksum value you provide through ‘x-amz-checksum-algorithm ` doesn’t match the checksum algorithm you set through ‘x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any provided `ChecksumAlgorithm` parameter and uses the checksum algorithm that matches the provided value in `x-amz-checksum-algorithm `.

    <note markdown=“1”> For directory buckets, when you use Amazon Web Services SDKs, ‘CRC32` is the default checksum algorithm that’s used for performance.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html

  • :checksum_crc32 (String)

    This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the base64-encoded, 32-bit CRC32 checksum of the object. For more information, see [Checking object integrity] in the *Amazon S3 User Guide*.

    [1]: docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html

  • :checksum_crc32c (String)

    This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the base64-encoded, 32-bit CRC32C checksum of the object. For more information, see [Checking object integrity] in the *Amazon S3 User Guide*.

    [1]: docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html

  • :checksum_sha1 (String)

    This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the base64-encoded, 160-bit SHA-1 digest of the object. For more information, see [Checking object integrity] in the *Amazon S3 User Guide*.

    [1]: docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html

  • :checksum_sha256 (String)

    This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the base64-encoded, 256-bit SHA-256 digest of the object. For more information, see [Checking object integrity] in the *Amazon S3 User Guide*.

    [1]: docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html

  • :expires (Time, DateTime, Date, Integer, String)

    The date and time at which the object is no longer cacheable. For more information, see [www.rfc-editor.org/rfc/rfc7234#section-5.3][1].

    [1]: www.rfc-editor.org/rfc/rfc7234#section-5.3

  • :grant_full_control (String)

    Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    
  • :grant_read (String)

    Allows grantee to read the object data and its metadata.

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    
  • :grant_read_acp (String)

    Allows grantee to read the object ACL.

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    
  • :grant_write_acp (String)

    Allows grantee to write the ACL for the applicable object.

    <note markdown=“1”> * This functionality is not supported for directory buckets.

    • This functionality is not supported for Amazon S3 on Outposts.

    </note>
    
  • :metadata (Hash<String,String>)

    A map of metadata to store with the object in S3.

  • :server_side_encryption (String)

    The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, ‘AES256`, `aws:kms`, `aws:kms:dsse`).

    General purpose buckets - You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see [Using Server-Side Encryption] in the *Amazon S3 User Guide*.

    Directory buckets - For directory buckets, only the server-side encryption with Amazon S3 managed keys (SSE-S3) (‘AES256`) value is supported.

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html

  • :storage_class (String)

    By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. The STANDARD storage class provides high durability and high availability. Depending on performance needs, you can specify a different Storage Class. For more information, see [Storage Classes] in the *Amazon S3 User Guide*.

    <note markdown=“1”> * For directory buckets, only the S3 Express One Zone storage class is

    supported to store newly created objects.
    
    • Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html

  • :website_redirect_location (String)

    If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. For information about object metadata, see [Object Key and Metadata] in the *Amazon S3 User Guide*.

    In the following example, the request header sets the redirect to an object (anotherPage.html) in the same bucket:

    ‘x-amz-website-redirect-location: /anotherPage.html`

    In the following example, the request header sets the object redirect to another website:

    ‘x-amz-website-redirect-location: www.example.com/`

    For more information about website hosting in Amazon S3, see [Hosting Websites on Amazon S3] and [How to Configure Website Page Redirects] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html [2]: docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html [3]: docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html

  • :sse_customer_algorithm (String)

    Specifies the algorithm to use when encrypting the object (for example, ‘AES256`).

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :sse_customer_key (String)

    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 S3 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.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :sse_customer_key_md5 (String)

    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 that the encryption key was transmitted without error.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :ssekms_key_id (String)

    If ‘x-amz-server-side-encryption` has a valid value of `aws:kms` or `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object. If you specify `x-amz-server-side-encryption:aws:kms` or `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide` x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the Amazon Web Services managed key (`aws/s3`) to protect the data. If the KMS key does not exist in the same account that’s issuing the command, you must use the full ARN and not just the ID.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :ssekms_encryption_context (String)

    Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future ‘GetObject` or `CopyObject` operations on this object. This value must be explicitly added during `CopyObject` operations.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :bucket_key_enabled (Boolean)

    Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). Setting this header to ‘true` causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.

    Specifying this header with a PUT action doesn’t affect bucket-level settings for S3 Bucket Key.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :request_payer (String)

    Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see [Downloading Objects in Requester Pays Buckets] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html

  • :tagging (String)

    The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For example, “Key1=Value1”)

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :object_lock_mode (String)

    The Object Lock mode that you want to apply to this object.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :object_lock_retain_until_date (Time, DateTime, Date, Integer, String)

    The date and time when you want this object’s Object Lock to expire. Must be formatted as a timestamp parameter.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    
  • :object_lock_legal_hold_status (String)

    Specifies whether a legal hold will be applied to this object. For more information about S3 Object Lock, see [Object Lock] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html

  • :expected_bucket_owner (String)

    The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code ‘403 Forbidden` (access denied).

Returns:



2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
# File 'lib/aws-sdk-s3/object_summary.rb', line 2258

def put(options = {})
  options = options.merge(
    bucket: @bucket_name,
    key: @key
  )
  resp = Aws::Plugins::UserAgent.feature('resource') do
    @client.put_object(options)
  end
  resp.data
end

#restore_object(options = {}) ⇒ Types::RestoreObjectOutput

Examples:

Request syntax with placeholder values


object_summary.restore_object({
  version_id: "ObjectVersionId",
  restore_request: {
    days: 1,
    glacier_job_parameters: {
      tier: "Standard", # required, accepts Standard, Bulk, Expedited
    },
    type: "SELECT", # accepts SELECT
    tier: "Standard", # accepts Standard, Bulk, Expedited
    description: "Description",
    select_parameters: {
      input_serialization: { # required
        csv: {
          file_header_info: "USE", # accepts USE, IGNORE, NONE
          comments: "Comments",
          quote_escape_character: "QuoteEscapeCharacter",
          record_delimiter: "RecordDelimiter",
          field_delimiter: "FieldDelimiter",
          quote_character: "QuoteCharacter",
          allow_quoted_record_delimiter: false,
        },
        compression_type: "NONE", # accepts NONE, GZIP, BZIP2
        json: {
          type: "DOCUMENT", # accepts DOCUMENT, LINES
        },
        parquet: {
        },
      },
      expression_type: "SQL", # required, accepts SQL
      expression: "Expression", # required
      output_serialization: { # required
        csv: {
          quote_fields: "ALWAYS", # accepts ALWAYS, ASNEEDED
          quote_escape_character: "QuoteEscapeCharacter",
          record_delimiter: "RecordDelimiter",
          field_delimiter: "FieldDelimiter",
          quote_character: "QuoteCharacter",
        },
        json: {
          record_delimiter: "RecordDelimiter",
        },
      },
    },
    output_location: {
      s3: {
        bucket_name: "BucketName", # required
        prefix: "LocationPrefix", # required
        encryption: {
          encryption_type: "AES256", # required, accepts AES256, aws:kms, aws:kms:dsse
          kms_key_id: "SSEKMSKeyId",
          kms_context: "KMSContext",
        },
        canned_acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
        access_control_list: [
          {
            grantee: {
              display_name: "DisplayName",
              email_address: "EmailAddress",
              id: "ID",
              type: "CanonicalUser", # required, accepts CanonicalUser, AmazonCustomerByEmail, Group
              uri: "URI",
            },
            permission: "FULL_CONTROL", # accepts FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP
          },
        ],
        tagging: {
          tag_set: [ # required
            {
              key: "ObjectKey", # required
              value: "Value", # required
            },
          ],
        },
        user_metadata: [
          {
            name: "MetadataKey",
            value: "MetadataValue",
          },
        ],
        storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
      },
    },
  },
  request_payer: "requester", # accepts requester
  checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
  expected_bucket_owner: "AccountId",
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :version_id (String)

    VersionId used to reference a specific version of the object.

  • :restore_request (Types::RestoreRequest)

    Container for restore job parameters.

  • :request_payer (String)

    Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see [Downloading Objects in Requester Pays Buckets] in the *Amazon S3 User Guide*.

    <note markdown=“1”> This functionality is not supported for directory buckets.

    </note>
    

    [1]: docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html

  • :checksum_algorithm (String)

    Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don’t use the SDK. When you send this header, there must be a corresponding ‘x-amz-checksum` or `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request with the HTTP status code `400 Bad Request`. For more information, see [Checking object integrity] in the *Amazon S3 User Guide*.

    If you provide an individual checksum, Amazon S3 ignores any provided ‘ChecksumAlgorithm` parameter.

    [1]: docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html

  • :expected_bucket_owner (String)

    The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code ‘403 Forbidden` (access denied).

Returns:



2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
# File 'lib/aws-sdk-s3/object_summary.rb', line 2399

def restore_object(options = {})
  options = options.merge(
    bucket: @bucket_name,
    key: @key
  )
  resp = Aws::Plugins::UserAgent.feature('resource') do
    @client.restore_object(options)
  end
  resp.data
end

#restore_statusTypes::RestoreStatus

Specifies the restoration status of an object. Objects in certain storage classes must be restored before they can be retrieved. For more information about these storage classes and how to work with archived objects, see [ Working with archived objects] in the *Amazon S3 User Guide*.

<note markdown=“1”> This functionality is not supported for directory buckets. Only the S3 Express One Zone storage class is supported by directory buckets to store objects.

</note>

[1]: docs.aws.amazon.com/AmazonS3/latest/userguide/archived-objects.html



131
132
133
# File 'lib/aws-sdk-s3/object_summary.rb', line 131

def restore_status
  data[:restore_status]
end

#sizeInteger Also known as: content_length

Size in bytes of the object

Returns:

  • (Integer)


89
90
91
# File 'lib/aws-sdk-s3/object_summary.rb', line 89

def size
  data[:size]
end

#storage_classString

The class of storage used to store the object.

<note markdown=“1”> **Directory buckets** - Only the S3 Express One Zone storage class is supported by directory buckets to store objects.

</note>

Returns:

  • (String)


100
101
102
# File 'lib/aws-sdk-s3/object_summary.rb', line 100

def storage_class
  data[:storage_class]
end

#upload_file(source, options = {}) ⇒ Boolean

Returns ‘true` when the object is uploaded without any errors.

Parameters:

  • source (String, Pathname, File, Tempfile)

    A file on the local file system that will be uploaded as this object. This can either be a String or Pathname to the file, an open File object, or an open Tempfile object. If you pass an open File or Tempfile object, then you are responsible for closing it after the upload completes. When using an open Tempfile, rewind it before uploading or else the object will be empty.

  • options (Hash) (defaults to: {})

    Additional options for Client#put_object when file sizes below the multipart threshold. For files larger than the multipart threshold, options for Client#create_multipart_upload, Client#complete_multipart_upload, and Client#upload_part can be provided.

Returns:

  • (Boolean)

    Returns ‘true` when the object is uploaded without any errors.

See Also:



64
65
66
# File 'lib/aws-sdk-s3/customizations/object_summary.rb', line 64

def upload_file(source, options = {})
  object.upload_file(source, options)
end

#upload_stream(options = {}, &block) ⇒ Boolean

Returns ‘true` when the object is uploaded without any errors.

Returns:

  • (Boolean)

    Returns ‘true` when the object is uploaded without any errors.

See Also:



71
72
73
# File 'lib/aws-sdk-s3/customizations/object_summary.rb', line 71

def upload_stream(options = {}, &block)
  object.upload_stream(options, &block)
end

#version(id) ⇒ ObjectVersion

Parameters:

  • id (String)

Returns:



2451
2452
2453
2454
2455
2456
2457
2458
# File 'lib/aws-sdk-s3/object_summary.rb', line 2451

def version(id)
  ObjectVersion.new(
    bucket_name: @bucket_name,
    object_key: @key,
    id: id,
    client: @client
  )
end

#wait_until(options = {}) {|resource| ... } ⇒ Resource

Deprecated.

Use [Aws::S3::Client] #wait_until instead

Note:

The waiting operation is performed on a copy. The original resource remains unchanged.

Waiter polls an API operation until a resource enters a desired state.

## Basic Usage

Waiter will polls until it is successful, it fails by entering a terminal state, or until a maximum number of attempts are made.

# polls in a loop until condition is true
resource.wait_until(options) {|resource| condition}

## Example

instance.wait_until(max_attempts:10, delay:5) do |instance|
  instance.state.name == 'running'
end

## Configuration

You can configure the maximum number of polling attempts, and the delay (in seconds) between each polling attempt. The waiting condition is set by passing a block to #wait_until:

# poll for ~25 seconds
resource.wait_until(max_attempts:5,delay:5) {|resource|...}

## Callbacks

You can be notified before each polling attempt and before each delay. If you throw ‘:success` or `:failure` from these callbacks, it will terminate the waiter.

started_at = Time.now
# poll for 1 hour, instead of a number of attempts
proc = Proc.new do |attempts, response|
  throw :failure if Time.now - started_at > 3600
end

  # disable max attempts
instance.wait_until(before_wait:proc, max_attempts:nil) {...}

## Handling Errors

When a waiter is successful, it returns the Resource. When a waiter fails, it raises an error.

begin
  resource.wait_until(...)
rescue Aws::Waiters::Errors::WaiterFailed
  # resource did not enter the desired state in time
end

attempts attempt in seconds invoked before each attempt invoked before each wait

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :max_attempts (Integer) — default: 10

    Maximum number of

  • :delay (Integer) — default: 10

    Delay between each

  • :before_attempt (Proc) — default: nil

    Callback

  • :before_wait (Proc) — default: nil

    Callback

Yield Parameters:

  • resource (Resource)

    to be used in the waiting condition.

Returns:

  • (Resource)

    if the waiter was successful

Raises:

  • (Aws::Waiters::Errors::FailureStateError)

    Raised when the waiter terminates because the waiter has entered a state that it will not transition out of, preventing success.

    yet successful.

  • (Aws::Waiters::Errors::UnexpectedError)

    Raised when an error is encountered while polling for a resource that is not expected.

  • (NotImplementedError)

    Raised when the resource does not



301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
# File 'lib/aws-sdk-s3/object_summary.rb', line 301

def wait_until(options = {}, &block)
  self_copy = self.dup
  attempts = 0
  options[:max_attempts] = 10 unless options.key?(:max_attempts)
  options[:delay] ||= 10
  options[:poller] = Proc.new do
    attempts += 1
    if block.call(self_copy)
      [:success, self_copy]
    else
      self_copy.reload unless attempts == options[:max_attempts]
      :retry
    end
  end
  Aws::Plugins::UserAgent.feature('resource') do
    Aws::Waiters::Waiter.new(options).wait({})
  end
end

#wait_until_exists(options = {}, &block) ⇒ ObjectSummary

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :max_attempts (Integer) — default: 20
  • :delay (Float) — default: 5
  • :before_attempt (Proc)
  • :before_wait (Proc)

Returns:



185
186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/aws-sdk-s3/object_summary.rb', line 185

def wait_until_exists(options = {}, &block)
  options, params = separate_params_and_options(options)
  waiter = Waiters::ObjectExists.new(options)
  yield_waiter_and_warn(waiter, &block) if block_given?
  Aws::Plugins::UserAgent.feature('resource') do
    waiter.wait(params.merge(bucket: @bucket_name,
    key: @key))
  end
  ObjectSummary.new({
    bucket_name: @bucket_name,
    key: @key,
    client: @client
  })
end

#wait_until_not_exists(options = {}, &block) ⇒ ObjectSummary

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :max_attempts (Integer) — default: 20
  • :delay (Float) — default: 5
  • :before_attempt (Proc)
  • :before_wait (Proc)

Returns:



206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/aws-sdk-s3/object_summary.rb', line 206

def wait_until_not_exists(options = {}, &block)
  options, params = separate_params_and_options(options)
  waiter = Waiters::ObjectNotExists.new(options)
  yield_waiter_and_warn(waiter, &block) if block_given?
  Aws::Plugins::UserAgent.feature('resource') do
    waiter.wait(params.merge(bucket: @bucket_name,
    key: @key))
  end
  ObjectSummary.new({
    bucket_name: @bucket_name,
    key: @key,
    client: @client
  })
end