Table of ContentsView in Frames

Operations on objects

Data objects ingested to the StorageGRID Webscale system through Swift or CDMI 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.

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.

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

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.

The PUT Object operation supports the Transfer-Encoding:chunked and Content-Encoding:gzip attributes.

Request headers

The following request headers are supported:

  • 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 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

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

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

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.

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.