Operations on objects

This section describes how the StorageGRID Webscale system implements S3 REST API operations for objects.

The following conditions apply to all object operations:
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

PUT Object

PUT Object - Copy

PUT Object - Copy

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.