Operations on buckets
The StorageGRID system supports a maximum of 1,000 buckets for each S3 tenant account.
Bucket name restrictions follow the AWS US Standard region restrictions, but you should further restrict them to DNS naming conventions in order to support S3 virtual hosted-style requests.
The GET Bucket (List Objects) and GET Bucket versions operations support StorageGRID consistency controls.
You can check whether updates to last access time are enabled or disabled for individual buckets.
The following table describes how StorageGRID implements S3 REST API bucket operations. To perform any of these operations, the necessary access credentials must be provided for the account.
Operation | Implementation |
---|---|
DELETE Bucket |
Implemented with all Amazon S3 REST API behavior. |
DELETE Bucket cors |
This operation deletes the CORS configuration for the bucket. |
DELETE Bucket encryption |
This operation deletes the default encryption from the bucket. Existing encrypted objects remain encrypted, but any new objects added to the bucket are not encrypted. |
DELETE Bucket lifecycle |
This operation deletes the lifecycle configuration from the bucket. |
DELETE Bucket policy |
This operation deletes the policy attached to the bucket. |
DELETE Bucket replication |
This operation deletes the replication configuration attached to the bucket. |
DELETE Bucket tagging |
This operation uses the |
GET Bucket (List Objects), version 1 and version 2 |
This operation returns some or all (up to 1,000) of the objects in a bucket. The Storage Class for objects can have either of two values, even if the object was ingested with the
If the bucket contains large numbers of deleted keys that have the same prefix, the response might include some |
GET Bucket acl |
This operation returns a positive response and the ID, DisplayName, and Permission of the bucket owner, indicating that the owner has full access to the bucket. |
GET Bucket cors |
This operation returns the |
GET Bucket encryption |
This operation returns the default encryption configuration for the bucket. |
GET Bucket lifecycle |
This operation returns the lifecycle configuration for the bucket. |
GET Bucket location |
This operation returns the region that was set using the |
GET Bucket notification |
This operation returns the notification configuration attached to the bucket. |
GET Bucket Object versions |
With READ access on a bucket, this operation with the |
GET Bucket policy |
This operation returns the policy attached to the bucket. |
GET Bucket replication |
This operation returns the replication configuration attached to the bucket. |
GET Bucket tagging |
This operation uses the |
GET Bucket versioning |
This implementation uses the |
GET Object Lock Configuration |
This operation determines if S3 Object Lock is enabled for a bucket. Using S3 Object Lock |
HEAD Bucket |
This operation determines if a bucket exists and you have permission to access it. |
PUT Bucket |
This operation creates a new bucket. By creating the bucket, you become the bucket owner.
|
PUT Bucket cors |
This operation sets the CORS configuration for a bucket so that the bucket can service cross-origin requests. Cross-origin resource sharing (CORS) is a security mechanism that allows client web applications in one domain to access resources in a different domain. For example, suppose you use an S3 bucket named |
PUT Bucket encryption |
This operation sets the default encryption state of an existing bucket. When bucket-level encryption is enabled, any new objects added to the bucket are encrypted.StorageGRID supports server-side encryption with StorageGRID-managed keys. When specifying the server-side encryption configuration rule, set the Bucket default encryption configuration is ignored if the object upload request already specifies encryption (that is, if the request includes the |
PUT Bucket lifecycle |
This operation creates a new lifecycle configuration for the bucket or replaces an existing lifecycle configuration. StorageGRID supports up to 1,000 lifecycle rules in a lifecycle configuration. Each rule can include the following XML elements:
StorageGRID does not support these actions:
To understand how the Expiration action in a bucket lifecycle interacts with ILM placement instructions, see “How ILM operates throughout an object's life” in the instructions for managing objects with information lifecycle management. Note: Bucket lifecycle configuration can be used with buckets that have S3 Object Lock enabled, but bucket lifecycle configuration is not supported for legacy Compliant buckets. |
PUT Bucket notification |
This operation configures notifications for the bucket using the notification configuration XML included in the request body. You should be aware of the following implementation details:
|
PUT Bucket policy |
This operation sets the policy attached to the bucket. |
PUT Bucket replication |
This operation configures StorageGRID CloudMirror replication for the bucket using the replication configuration XML provided in the request body. For CloudMirror replication, you should be aware of the following implementation details:
|
PUT Bucket tagging |
This operation uses the
|
PUT Bucket versioning |
This implementation uses the
|
Amazon Web Services (AWS) Documentation: Cross-Region Replication
Creating an S3 lifecycle configuration
You can create an S3 lifecycle configuration to control when specific objects are deleted from the StorageGRID system.
The simple example in this section illustrates how an S3 lifecycle configuration can control when certain objects are deleted (expired) from specific S3 buckets. The example in this section is for illustration purposes only. For complete details on creating S3 lifecycle configurations, see the section on object lifecycle management in the Amazon Simple Storage Service Developer Guide. Note that StorageGRID only supports Expiration actions; it does not support Transition actions.
What a lifecycle configuration is
A lifecycle configuration is a set of rules that are applied to the objects in specific S3 buckets. Each rule specifies which objects are affected and when those objects will expire (on a specific date or after some number of days).
StorageGRID supports up to 1,000 lifecycle rules in a lifecycle configuration. Each rule can include the following XML elements:
-
Expiration: Delete an object when a specified date is reached or when a specified number of days is reached, starting from when the object was ingested.
-
NoncurrentVersionExpiration: Delete an object when a specified number of days is reached, starting from when the object became noncurrent.
-
Filter (Prefix, Tag)
-
Status
-
ID
If you apply a lifecycle configuration to a bucket, the lifecycle settings for the bucket always override StorageGRID ILM settings. StorageGRID uses the Expiration settings for the bucket, not ILM, to determine whether to delete or retain specific objects.
As a result, an object might be removed from the grid even though the placement instructions in an ILM rule still apply to the object. Or, an object might be retained on the grid even after any ILM placement instructions for the object have lapsed. For details, see “How ILM operates throughout an object's life” in the instructions for managing objects with information lifecycle management.
Bucket lifecycle configuration can be used with buckets that have S3 Object Lock enabled, but bucket lifecycle configuration is not supported for legacy Compliant buckets. |
StorageGRID supports the use of the following bucket operations to manage lifecycle configurations:
-
DELETE Bucket lifecycle
-
GET Bucket lifecycle
-
PUT Bucket lifecycle
Creating the lifecycle configuration
As the first step in creating a lifecycle configuration, you create a JSON file that includes one or more rules. For example, this JSON file includes three rules, as follows:
-
Rule 1 applies only to objects that match the prefix
category1
/ and that have akey2
value oftag2
. TheExpiration
parameter specifies that objects matching the filter will expire at midnight on 22 August 2020. -
Rule 2 applies only to objects that match the prefix
category2
/. TheExpiration
parameter specifies that objects matching the filter will expire 100 days after they are ingested.Rules that specify a number of days are relative to when the object was ingested. If the current date exceeds the ingest date plus the number of days, some objects might be removed from the bucket as soon as the lifecycle configuration is applied. -
Rule 3 applies only to objects that match the prefix
category3
/. TheExpiration
parameter specifies that any noncurrent versions of matching objects will expire 50 days after they become noncurrent.
{ "Rules": [ { "ID": "rule1", "Filter": { "And": { "Prefix": "category1/", "Tags": [ { "Key": "key2", "Value": "tag2" } ] } }, "Expiration": { "Date": "2020-08-22T00:00:00Z" }, "Status": "Enabled" }, { "ID": "rule2", "Filter": { "Prefix": "category2/" }, "Expiration": { "Days": 100 }, "Status": "Enabled" }, { "ID": "rule3", "Filter": { "Prefix": "category3/" }, "NoncurrentVersionExpiration": { "NoncurrentDays": 50 }, "Status": "Enabled" } ] }
Applying a lifecycle configuration to a bucket
After you have created the lifecycle configuration file, you apply it to a bucket by issuing a PUT Bucket lifecycle request.
This request applies the lifecycle configuration in the example file to objects in a bucket named testbucket
:bucket
aws s3api --endpoint-url <StorageGRID endpoint> put-bucket-lifecycle-configuration --bucket testbucket --lifecycle-configuration file://bktjson.json
To validate that a lifecycle configuration was successfully applied to the bucket, issue a GET Bucket lifecycle request. For example:
aws s3api --endpoint-url <StorageGRID endpoint> get-bucket-lifecycle-configuration --bucket testbucket
A successful response lists the lifecycle configuration you just applied.
Validating that bucket lifecycle expiration applies to an object
You can determine if an expiration rule in the lifecycle configuration applies to a specific object when issuing a PUT Object, HEAD Object, or GET Object request. If a rule applies, the response includes an Expiration
parameter that indicates when the object expires and which expiration rule was matched.
Because bucket lifecycle overrides ILM, the expiry-date shown is the actual date the object will be deleted. For details, see “How object retention is determined” in the instructions for performing StorageGRID administration.
|
For example, this PUT Object request was issued on 22 Jun 2020 and places an object in the testbucket
bucket.
aws s3api --endpoint-url <StorageGRID endpoint> put-object --bucket testbucket --key obj2test2 --body bktjson.json
The success response indicates that the object will expire in 100 days (01 Oct 2020) and that it matched Rule 2 of the lifecycle configuration.
{
*"Expiration": "expiry-date=\"Thu, 01 Oct 2020 09:07:49 GMT\", rule-id=\"rule2\"",
"ETag": "\"9762f8a803bc34f5340579d4446076f7\""
}
For example, this HEAD Object request was used to get metadata for the same object in the testbucket bucket.
aws s3api --endpoint-url <StorageGRID endpoint> head-object --bucket testbucket --key obj2test2
The success response includes the object's metadata and indicates that the object will expire in 100 days and that it matched Rule 2.
{
"AcceptRanges": "bytes",
*"Expiration": "expiry-date=\"Thu, 01 Oct 2020 09:07:48 GMT\", rule-id=\"rule2\"",
"LastModified": "2020-06-23T09:07:48+00:00",
"ContentLength": 921,
"ETag": "\"9762f8a803bc34f5340579d4446076f7\""
"ContentType": "binary/octet-stream",
"Metadata": {}
}