Operations on objects

Data objects ingested to the StorageGRID Webscale system through Swift cannot be accessed through S3.

All of the operations on objects, except GET Object ACL and OPTIONS /, support StorageGRID Webscale consistency controls. For information on using the Consistency-Control header, see How StorageGRID Webscale implements the S3 REST API.

Conflicting client requests, such as two clients writing to the same key, are resolved on a "latest-wins" basis. The timing for the "latest-wins"evaluation is based on when the StorageGRID Webscale system completes a given request, and not on when S3 clients begin an operation.

All objects in a StorageGRID Webscale bucket are owned by the bucket owner, including objects created by an anonymous user, or by another account.

The following operations on objects are supported by the StorageGRID Webscale system.

Operation Implementation
DELETE Object

Multi-Factor Authentication (MFA) and the response header x-amz-mfa are not supported.

Versioning

To remove a specific version, the requestor must be the bucket owner and use the versionId subresource. Using this subresource permanently deletes the version. If the versionId corresponds to a delete marker, the response header x-amz-delete-marker is returned set to true.

  • If an object is deleted without the versionId subresource on a version enabled bucket, it results in the generation of a delete marker. The versionId for the delete marker is returned using the x-amz-version-id response header, and the x-amz-delete-marker response header is returned set to true.
  • If an object is deleted without the versionId subresource on a version suspended bucket, it results in a permanent deletion of an already existing 'null' version or a 'null' delete marker, and the generation of a new 'null' delete marker. The x-amz-delete-marker response header is returned set to true.
DELETE Multiple Objects

Multi-Factor Authentication (MFA) and the response header x-amz-mfa are not supported.

Multiple objects can be deleted in the same request message.

Note: The DELETE Multiple Objects request is not supported on versioned buckets.

Unlike the PUT Object operation, the DELETE Multiple Objects operation does not support chunked transfer encoding and the content encoding gzip attributes.

DELETE Object tagging

Uses the tagging subresource to remove all tags from an object. Implemented with all Amazon S3 REST API behavior.

Versioning

If the versionId query parameter is not specified in the request, the operation deletes all tags from the most recent version of the object in a versioned bucket. If the current version of the object is a delete marker, a "MethodNotAllowed" status is returned with the x-amz-delete-marker response header set to true.

GET Object

The following request headers are not supported and return XNotImplemented:

  • x-amz-restore
  • x-amz-website-redirect-location

Versioning

If a versionId subresource is not specified, the operation fetches the most recent version of the object in a versioned bucket. If the current version of the object is a delete marker, a "Not Found" status is returned with the x-amz-delete-marker response header set to true.

GET Object ACL

If the necessary access credentials are provided for the account, the operation returns a positive response and the ID, DisplayName, and Permission of the object owner, indicating that the owner has full access to the object.

GET Object tagging

Uses the tagging subresource to return all tags for an object. Implemented with all Amazon S3 REST API behavior

Versioning

If the versionId query parameter is not specified in the request, the operation returns all tags from the most recent version of the object in a versioned bucket. If the current version of the object is a delete marker, a "MethodNotAllowed" status is returned with the x-amz-delete-marker response header set to true.

HEAD Object

The following request headers are not supported and return XNotImplemented:

  • x-amz-restore
  • x-amz-website-redirect-location

Versioning

If a versionId subresource is not specified, the operation fetches the most recent version of the object in a versioned bucket. If the current version of the object is a delete marker, a "Not Found" status is returned with the x-amz-delete-marker response header set to true.

PUT Object

Resolving conflicts

Conflicting client requests, such as two clients writing to the same key, are resolved on a "latest-wins" basis. The timing for the "latest-wins"evaluation is based on when the StorageGRID Webscale system completes a given request, and not on when S3 clients begin an operation.

Object size

StorageGRID Webscale supports objects up to 5 TB in size.

Object ownership

In StorageGRID Webscale, all objects are owned by the bucket owner account, including objects created by a non-owner account or an anonymous user.

PUT Object (continued)

Storage class options

The x-amz-storage-class request header is supported with the following enumerated values:

  • STANDARD: (Default) Specifies a dual-commit ingest operation.
  • REDUCED_REDUNDANCY: Specifies a single-commit ingest operation.
Note: The REDUCED_REDUNDANCY storage class is an option used to limit redundant storage for data that is better replicated elsewhere, such as with ILM policies. Therefore, specifying the REDUCED_REDUNDANCY value does not affect the specified ILM policy, and it does not result in data being stored at lower levels of redundancy in the StorageGRID Webscale system.
CAUTION:
Be careful when ingesting objects using REDUCED_REDUNDANCY to create only a single initial copy of the object data. If the single copy is created on a Storage Node that fails, and ILM is not yet satisfied, the result is unrecoverable loss of data.
PUT Object (continued)

Request headers

The following request headers are supported:

  • x-amz-tagging
  • x-amz-server-side-encryption
  • x-amz-meta- name-value pairs for user-defined metadata

    To record the object creation time, so that you can use the User Defined Creation Time option for the reference time in an ILM rule, you need to store the value in a user-defined header named x-amz-meta-creation-time. For example: x-amz-meta-creation-time=1443399726. This field is evaluated as seconds since Jan 1, 1970. For more information, see "Reference time" in the Administrator Guide.

The following request headers are supported only with the following values:
  • Transfer-Encoding:chunked
  • Content-Encoding:aws-chunked
Note: Submitting other values for Content-Encoding can lead to unexpected results, or failures due to unrecognized coding schemes or MD5 verification failures.
The following request headers are not supported:
  • Expires
  • x-amz-acl

The following request headers are not supported and return XNotImplemented:

  • x-amz-server-side-encryption-customer-algorithm
  • x-amz-server-side-encryption-customer-key
  • x-amz-server-side-encryption-customer-key-MD5
  • x-amz-website-redirect-location
PUT Object (continued)

Versioning

If versioning is enabled for a bucket, a unique versionId is automatically generated for the version of the object being stored. This versionId is also returned in the response using the x-amz-version-id response header.

If versioning is suspended, the object version is stored with a null versionId and if a null version already exists it will be overwritten.

For more information on versioning, see the "PUT Bucket versioning" and "GET Bucket versioning" entries in Operations on buckets.

PUT Object - Copy

Resolving conflicts

Conflicting client requests, such as two clients writing to the same key, are resolved on a "latest-wins" basis. The timing for the "latest-wins"evaluation is based on when the StorageGRID Webscale system completes a given request, and not on when S3 clients begin an operation.

Request headers

The following request headers are supported:

  • x-amz-meta- name-value pairs for user-defined metadata

    To record the object creation time, so that you can use the User Defined Creation Time option for the reference time in an ILM rule, you need to store the value in a user-defined header named x-amz-meta-creation-time. For example: x-amz-meta-creation-time=1443399726. This field is evaluated as seconds since Jan 1, 1970. For more information, see "Reference time" in the Administrator Guide.

  • x-amz-metadata-directive: The default value is COPY, which enables you to copy the object and associated metadata.

    You can specify REPLACE to overwrite the existing metadata when copying the object, or to update the object metadata.

  • x-amz-copy-source
  • x-amz-copy-source-if-match
  • x-amz-copy-source-if-none-match
  • x-amz-copy-source-if-unmodified-since
  • x-amz-copy-source-if-modified-since
  • x-amz-server-side-encryption
  • x-amz-storage-class
  • x-amz-tagging-directive: The default value is COPY, which enables you to copy the object and all tags.

    You can specify REPLACE to overwrite the existing tags when copying the object, or to update the tags.

PUT Object - Copy (continued)

The following request headers are not supported and return XNotImplemented:

  • x-amz-server-side-encryption-customer-algorithm
  • x-amz-server-side-encryption-customer-key
  • x-amz-server-side-encryption-customer-key-MD5
  • x-amz-website-redirect-location
If the source bucket and key, specified in the x-amz-copy-source header, is different from the destination bucket and key, a copy of the source object data is written to the destination. If the source and destination match, and the x-amz-metadata-directive header is specified as REPLACE, the object’s metadata is updated with the metadata values supplied in the request.
Note: The server-side-encryption value of the object cannot be updated. Instead, make a copy with a new server-side-encryption value using x-amz-metadata-directive: REPLACE.
PUT Object - Copy (continued)

Versioning

If the source bucket is versioned, you can use the x-amz-copy-source header to copy the latest version of an object. To copy a specific version of an object, you must explicitly specify the version to copy using the versionId subresource. If the destination bucket is versioned, the generated version is returned in the x-amz-version-id response header. If versioning is suspended for the target bucket, then x-amz-version-id returns a "null" value.

PUT Object tagging

Uses the tagging subresource to add a set of tags to an existing object. Implemented with all Amazon S3 REST API behavior

Resolving conflicts

Conflicting client requests, such as two clients writing to the same key, are resolved on a "latest-wins" basis. The timing for the "latest-wins"evaluation is based on when the StorageGRID Webscale system completes a given request, and not on when S3 clients begin an operation.

Versioning

If the versionId query parameter is not specified in the request, the operation add tags to the most recent version of the object in a versioned bucket. If the current version of the object is a delete marker, a "MethodNotAllowed" status is returned with the x-amz-delete-marker response header set to true.