Compatibility of OBS REST APIs¶
REST APIs support standard HTTP headers and status codes. In order to enhance security, OBS supports different types of user permission by adding authentication information to headers.
OBS REST APIs comply with REST (HTTP 1.1). With REST APIs, you can create, obtain, and delete buckets or objects by sending standard HTTP requests using any tool that supports REST requests.
OBS REST APIs are compatible with most Amazon S3 APIs. Table 1 describes the compatibility between OBS REST APIs and Amazon S3 APIs.
S3 Operation | Function | Supported by OBS | Remarks |
---|---|---|---|
Abort Multipart Upload | Aborts a multipart upload. | Yes | None |
Complete Multipart Upload | Completes a multipart upload by assembling previously uploaded parts. | Yes | None |
DELETE Bucket | Deletes a bucket. | Yes | None |
DELETE Bucket lifecycle | Deletes the lifecycle configuration of a bucket. | Yes | None |
DELETE Bucket policy | Deletes the policy of a bucket. | Yes | None |
DELETE Bucket website | Deletes the website configuration of a bucket. | Yes | None |
DELETE Multiple Objects | Deletes multiple objects from a bucket. | Yes | None |
DELETE Object | Deletes an object. | Yes | None |
GET Bucket acl | Obtains the ACL (access control list) of a bucket. | Yes | None |
GET Bucket CORS | Obtains the CORS configuration of a bucket. | Yes | None |
GET Bucket lifecycle | Obtains the lifecycle configuration of a bucket. | Yes | None |
GET Bucket (List Objects) | Lists objects in a bucket. | Yes | None |
GET Bucket location | Obtains the Region (data center) where a bucket is located. | Yes | OBS and S3 have different response bodies in XML. An XML response body of OBS: <Location>RegionID</Location> An XML response body of S3: <CreateBucketConfiguration> <LocationConstraint>RegionID</LocationConstraint> </CreateBucketConfiguration> |
GET Bucket logging | Obtains the logging status of a bucket. | Yes | None |
GET Bucket notification | Obtains the notification configuration of a bucket. | Yes | None |
GET Bucket Object versions | Obtains information about all versions of objects in a bucket. | Yes | None |
GET Bucket policy | Obtains the policy of a bucket. | Yes | None |
GET Bucket requestPayment | Obtains the request payment configuration of a bucket. | No | None |
GET Bucket versioning | Obtains the versioning state of a bucket. | Yes | None |
GET Bucket website | Obtains the website configuration of a bucket. | Yes | None |
GET Object | Obtains an object. | Yes | OBS does not support server-side encryption with S3-managed keys (SSE-S3). If the master key of a KMS-encrypted object is deleted, OBS returns status code 400 Bad Request while downloading the object, not compatible with Amazon (returns 500). OBS does not support object download with the if-range header. |
GET Object acl | Obtains the ACL of an object. | Yes | None |
GET Object torrent | Obtains torrent files of an object. | No | None |
GET Service | Lists all buckets of a user. | Yes | None |
HEAD Bucket | Retrieves the metadata of a bucket and checks its access permission. | Yes | None |
HEAD Object | Retrieves the metadata of an object. | Yes | If the returned user-defined metadata contains non-ASCII or other unprintable characters, the metadata is encoded based on the number of returned ACSII and UTF characters in Amazon S3. However, the metadata is Base64 encoded in the OBS. OBS does not support server-side encryption with S3-managed keys (SSE-S3). |
Initiate Multipart Upload | Creates a multipart upload. | Yes | OBS does not support server-side encryption with S3-managed keys (SSE-S3). |
List Multipart Uploads | Lists multipart uploads. | Yes | None |
List Parts | Lists parts. | Yes | None |
POST Object | Uploads an object using HTML forms. | Yes | OBS does not support server-side encryption with S3-managed keys (SSE-S3). |
PUT Bucket | Creates a bucket. | Yes | In contrast to OBS, Amazon S3 supports more complex bucket names and different bucket naming rules based on regions. Users can create a maximum of 101 (officially 100) buckets in Amazon S3 and a maximum of 100 buckets in OBS. |
PUT Bucket acl | Sets the ACL of a bucket. | Yes | In OBS, permission cannot be granted to users identified by email address. The x-amz-grant-* header cannot be used to set ACLs, and the x-amz-acl header cannot be used to modify existing bucket ACLs. |
PUT Bucket CORS | Sets the CORS of a bucket. | Yes | None |
PUT Bucket lifecycle | Sets the lifecycle configuration of a bucket. | Yes | In OBS, expired objects can be deleted or transitioned to another storage class. |
PUT Bucket logging | Sets the logging state of a bucket. | Yes | None |
PUT Bucket notification | Sets the notification configuration of a bucket. | Yes | The restrictions are inconsistent with those of AWS. AWS supports up to 100 configuration items. However, OBS supports up to 100 configuration items only when the configuration file is not larger than 100 KB. |
PUT Bucket policy | Sets the policy of a bucket. | Yes | OBS supports only some conditions. For details, see section Bucket Policy. |
PUT Bucket requestPayment | Sets the request payment configuration of a bucket. | No | None |
PUT Bucket versioning | Sets the versioning state of a bucket. | Yes | OBS does not support the MfaDelete function. Using the MfaDelete element in XML will respond 200, but the setting does not take effect. The x-amz-mfa header is not supported in OBS. |
PUT Bucket website | Sets the website configuration of a bucket. | Yes | None |
PUT Object | Uploads an object to a bucket. | Yes | OBS does not support server-side encryption with S3-managed keys (SSE-S3) and storage type setting. OBS supports three storage classes for the x-amz-storage-class header: STANDARD|STANDARD_IA|GLACIER |
PUT Object acl | Sets the ACL of an object. | Yes | In OBS, permission cannot be granted to users identified by email address. The OBS does not support x-amz-grant-* headers. |
PUT Object - Copy | Copies an object. | Yes | OBS processes field x-amz-copy-source-if-* added to request headers but reserves HTTP-defined fields if-unmodified-since, if-modified-since, if-match, and if-none-match. OBS does not support server-side encryption with S3-managed keys (SSE-S3). If the master key of a KMS-encrypted object is deleted and the object is the source object of a copy operation, status code 400 Bad Request while copying the object, not compatible with Amazon (returns 500). |
Upload Part | Uploads a part to a multipart upload. | Yes | OBS does not support server-side encryption with S3-managed keys (SSE-S3). If the KMS CMK used by Initiate Multipart Upload is deleted, OBS returns status code 400 Bad Request while uploading parts, not compatible with Amazon (returns 500). |
Upload Part - Copy | Uploads a part by copying data from an existing object as data source. | Yes | OBS does not support server-side encryption with S3-managed keys (SSE-S3). If the KMS CMK used by Initiate Multipart Upload is deleted, OBS returns status code 400 Bad Request while copying parts, not compatible with Amazon (returns 500). |
OPTIONS Bucket | Pre-processes a bucket. | Yes | Amazon does not support this API. |
OPTIONS Object | Pre-processes an object. | Yes | None |
PutBucketObjectLockConfiguration | Configuring a Default WORM Policy for a Bucket. | Yes | None |
GetBucketObjectLockConfiguration | Obtaining the Default WORM Policy of a Bucket. | Yes | None |
PutObjectRetention | Configuring WORM Retention for an Object. | Yes | None |