Operations on Buckets With the Wasabi S3 API

Prev Next

Operations on buckets include: deleting, renaming, and logging buckets as well as cross-origin resource sharing (CORS) support, lifecycle policy, object locking, and compliance.

By default, public use of a bucket, folder, or file is allowed only by certain paid (not trial) accounts. If your account does not have access to this feature, contact Wasabi Support at support@wasabi.com for assistance.

Maximum Number of Buckets

Standard AWS S3 supports only 100 buckets.

Wasabi allows for a maximum of 1000 buckets per account, and this number may be increased by contacting Wasabi Customer Support.

Bucket Logging

Wasabi supports bucket logging, which creates a text log file of all access to a bucket. The format of the log file is identical to the AWS S3 log file.

Wasabi bucket logging does not require any ACL permission settings to store logs in a target bucket. Although you can give permission settings in the logging request or in an ACL, they are not required for logging to work in Wasabi. However, the bucket that is a target for log files must be inside the same account as the bucket being logged.

Deleting a Bucket

DELETE BUCKET force_delete=true Option

AWS S3 will not allow you to delete a bucket if it contains objects that have not been deleted.

Wasabi provides a force_delete=true option that first deletes all objects in the bucket and then deletes the bucket. The deletion of objects is subject to policy and compliance requirements on the bucket.

To specify the force_delete=true option, add it as a query string. For example:

DELETE http://s3.wasabisys.com/my-bucket?force_delete=true HTTP/1.1

Renaming a Bucket

AWS S3 does not support renaming of buckets. It only supports renaming of objects in a bucket.

Wasabi supports the renaming of buckets. The new bucket name must not be in use for the rename to be successful. The caller must have the s3:CreateBucket policy permission to rename a bucket.

To rename a bucket, use the HTTP method MOVE along with the header field “Destination” to give the new bucket name. For example:

MOVE http://s3.wasabisys.com/my_old_bucket HTTP/1.1
Destination: my_new_bucket

MFA (Multi-Factor Authentication) Delete

Wasabi supports the “x-amz-mfa” header while:

  • configuring versioning on a bucket, or

  • deleting objects with delete object requests compatible with AWS S3.

Wasabi does not require the “x-amz-mfa” header if the user's access credentials signing the request were authenticated with MFA. Wasabi only supports virtual MFA devices.

(Refer also to Workflow for Lifecycle Rule Implementation.)

Checking MFA-Delete Status for an S3 Bucket

To determine whether MFA-Delete is enabled for your S3 bucket, use the get-bucket-versioning command in the AWS CLI:

aws s3api get-bucket-versioning --bucket BUCKETNAME --profile WASABIPROFILE --endpoint-url=https://s3.BUCKETREGION.wasabisys.com

The output will indicate the versioning status and whether MFA-Delete is enabled. For example:

{ 
    "Status": "Enabled", 
    "MFADelete": "Enabled" 
} 

Status: Enabled indicates that versioning is active.

MFADelete: Enabled confirms that MFA-Delete is enabled for the bucket

Managing MFA-Delete Using the AWS CLI

The following are prerequisites for managing MFA-Delete using the AWS CLI:

  • Versioning is enabled on the bucket.

  • Root account credentials are configured with MFA.

  • AWS CLI v2 is installed.

Use this command to enable MFA-Delete:

aws s3api put-bucket-versioning --bucket BUCKETNAME --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::ACCOUNTID:mfa/root-account-mfa-device MFACODE” --endpoint-url=https://s3.BUCKETREGION.wasabisys.com –profile WASABIPROFILE

Use this command to disable MFA-Delete:

aws s3api put-bucket-versioning --bucket BUCKETNAME --versioning-configuration MFADelete=Disabled,Status=Enabled --mfa "arn:aws:iam::ACCOUNTID:mfa/root-account-mfa-device MFACODE” --endpoint-url=https://s3.BUCKETREGION.wasabisys.com –profile WASABIPROFILE

Bucket Cross-Origin Resource Sharing (CORS) Support

For compatibility with browser access to Wasabi as a web server, the Wasabi server will return CORS headers when the header “Origin” is given in an HTTP request. Additionally, the server supports the HTTP method OPTIONS on either buckets or objects to return the CORS headers needed for a browser pre-flight test before accessing Wasabi.

Different from AWS, Wasabi returns the settings that will allow the browser full access to Wasabi. Hence, Wasabi does not support the AWS functions that allow a PUT and GET on a bucket with the “cors” parameter in the URL. Note that allowing the browser full access to data does not affect the security of access to any objects, and all access policies will still be enforced.

The following are the HTTP headers returned by default when the header “Origin” is given in an HTTP request:

Access-Control-Allow-Headers: *
Access-Control-Allow-Methods: GET, HEAD, POST, PUT, DELETE, MOVE, OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: *
Access-Control-Max-Age: 86400

Operations on Buckets Not Supported in Wasabi

Operation

Description

Individual Operations

Bucket Accelerate

Wasabi does not have an implementation of the AWS S3 bucket accelerate or similar subresource.

GetBucketAccelerateConfiguration, PutBucketAccelerateConfiguration

Bucket Analytics

Wasabi does not support bucket analytics configurations.

DeleteBucketAnalyticsConfiguration, GetBucketAnalyticsConfiguration, ListBucketAnalyticsConfigurations, PutBucketAnalyticsConfiguration

Bucket Encryption

As Wasabi does not support AWS Key Management Service (KMS) keys for encryption, bucket encryption API calls are not supported.

DeleteBucketEncryption, GetBucketEncryption, PutBucketEncryption

Bucket Intelligent Tiering

Wasabi does not support intelligent tiering configurations.

DeleteBucketIntelligentTieringConfiguration, GetBucketIntelligentTieringConfiguration, ListBucketIntelligentTieringConfigurations, PutBucketIntelligentTieringConfiguration

Bucket Metadata Table

Wasabi does not support bucket metadata table configurations.

CreateBucketMetadataTableConfiguration, DeleteBucketMetadataTableConfiguration, GetBucketMetadataTableConfiguration

Bucket Metrics

Wasabi does not support the operations to receive one-minute CloudWatch metrics, set CloudWatch alarms, and access CloudWatch dashboards to view near-real-time operations and performance.

DeleteBucketMetricsConfiguration, GetBucketMetricsConfiguration, ListBucketMetricsConfigurations, PutBucketMetricsConfiguration

Bucket Ownership Controls

Wasabi does not support bucket ownership controls.

DeleteBucketOwnershipControls, GetBucketOwnershipControls, PutBucketOwnershipControls

Bucket Request Payment

Wasabi does not support the use of the “requestPayment” subresource for buckets.

PutBucketRequestPayment

Bucket Website

Website configuration is unavailable in Wasabi. Given the nature of Wasabi as a long-term object store, we do not expect to support website operations on buckets. The header “x-amz-website-redirect-location” is ignored in any object requests.

DeleteBucketWebsite, PutBucketWebsite

S3 Block Public Access

Wasabi does not support the operation to centrally block existing public access (whether made possible via an ACL or a policy) and make sure newly created items are not inadvertently granted public access.

DeletePublicAccessBlock, GetPublicAccessBlock, PutPublicAccessBlock, GetBucketPolicyStatus

Object Operations

Wasabi does not support some operations related to individual objects.

GetObjectAttributes, GetObjectTorrent, RestoreObject, WriteGetObjectResponse

S3 Select

Wasabi does not support the S3 Select API.

SelectObjectContent

S3 Session

Wasabi currently does not support directory buckets, which means there is no support for CreateSession API as a result. Wasabi supports getting temporary credentials through STS operations.

CreateSession

Bucket policies do not support use of the “s3:x-amz-server-side-encryption-customer-algorithm” header under the null context key in the condition element. However, this header is supported on an object-level via the S3 API. For more information about supported IAM and STS operations and policy variables, refer to IAM and STS Support With the Wasabi S3 API.