Supported S3 APIs
Lists the Amazon S3-compatible APIs that HPE Data Fabric Object Store supports.
The following table lists the S3-compatible APIs and their parameters that HPE Data Fabric Object Store supports.
| API | Supported URI Request Parameters | Supported Request Body Parameters | Supported Response Elements |
|---|---|---|---|
| AbortMultipartUpload |
|
None | None |
| CompleteMultipartUpload |
|
|
|
| CopyObject |
|
None |
|
| CreateBucket |
|
None | Location |
| CreateMultipartUpload |
|
None |
|
| DeleteBucket | Bucket | None | None |
| DeleteBucketCors |
|
None | If successful, the service returns an HTTP response with an empty body. |
| DeleteBucketEncryption | Bucket | None | None |
| DeleteBucketOwnershipControls | Bucket | None | None |
| DeleteBucketPolicy | Bucket | None | None |
| DeleteBucketTagging | Bucket | None | None |
| DeleteObject |
|
None |
|
| DeleteObjects | Bucket |
|
|
| DeleteObjectTagging |
|
None | x-amz-version-id |
| GetBucketCors |
|
None |
|
| GetBucketPolicy |
|
Policy (in JSON format) | If successful, the service returns an HTTP response with the policy in JSON format. |
| GetObject |
|
None |
|
| GetObjectLegalHold |
|
None |
|
| GetObjectLockConfiguration | Bucket | None |
|
| GetObjectRetention |
|
None |
|
| GetObjectTagging |
|
None |
|
| HeadBucket | Bucket | None | None |
| HeadObject |
|
None |
|
| ListBuckets | None | None |
|
| ListMultipartUploads | Bucket | None |
|
| ListObjects |
|
None |
|
| ListObjectsV2 |
|
None |
|
| ListObjectVersions |
|
None |
|
| ListParts |
|
None |
|
| PutBucketCors |
|
|
If successful, the service returns an HTTP response with an empty body. |
| PutBucketEncryption | This API is not supported at present. | Not applicable | Not applicable |
| PutBucketLifecycleConfiguration | This API is not supported at present. | Not applicable | Not applicable |
| PutBucketOwnershipControls | This API is not supported at present. | Not applicable | Not applicable |
| PutBucketPolicy |
|
Policy (in JSON format) | If successful, the service returns an HTTP response with an empty body. |
| PutBucketTagging |
|
|
None |
| PutBucketVersioning |
|
|
None |
| PutObject |
|
Body |
|
| PutObjectLegalHold |
|
|
None |
| PutObjectLockConfiguration | Bucket |
|
None |
| PutObjectRetention |
|
|
None |
| PutObjectTagging |
|
|
x-amz-version-id |
| SelectObjectContent |
|
|
|
| UploadPart |
|
Body | None |
| UploadPartCopy |
|
None |
|
| S3 API | Fully Supported | Not Supported | Partially Supported | Map-R backed | Additional Information |
|---|---|---|---|---|---|
| Buckets: CRUD | |||||
| Create Bucket | True | False | False | Yes | PutBucketHandler bucket-handlers.go:791 -> objectAPI.MakeBucketWithLocation (MapRObjectLayer) |
| Head Bucket | True | False | False | Yes | HeadBucketHandler bucket-handlers.go:1678 -> GetBucketInfo -> BucketManager (CLDB/SAL) |
| Delete Bucket | True | False | False | Yes | DeleteBucketHandler bucket-handlers.go:1732 -> objectAPI.DeleteBucket |
| ListBuckets | True | False | False | Yes | ListBucketsHandler bucket-handlers.go:348 -> objectAPI.ListBuckets |
| Bucket Configuration: Versioning | |||||
| GetBucketVersioning | False | False | False | Yes | GetBucketVersioningHandler bucket-versioning-handler.go:140 -> GetBucketInfo.VersionState (sheet marks unsupported; code reads MapR metadata) |
| PutBucketVersioning | True | False | False | Yes | PutBucketVersioningHandler bucket-versioning-handler.go:43 -> objectAPI.ModifyBucket |
| Bucket configuration: LifeCycle | |||||
| GetBucketLifecycle | True | False | False | Yes | GetBucketLifecycleHandler bucket-lifecycle-handlers.go:124 -> GetBucketLifecycleConfig |
| GetBucketLifecycleConfiguration | True | False | False | Yes | Same handler as GetBucketLifecycle (bucket-lifecycle-handlers.go:124) |
| PutBucketLifecycle | True | False | False | Yes | PutBucketLifecycleHandler bucket-lifecycle-handlers.go:39 -> SetBucketLifecycle |
| PutBucketLifecycleConfiguration | True | False | False | Yes | Same handler as PutBucketLifecycle (bucket-lifecycle-handlers.go:39) |
| DeleteBucketLifecycle | True | False | False | Yes | DeleteBucketLifecycleHandler bucket-lifecycle-handlers.go:190 |
| Bucket Configuration: Replication | |||||
| GetBucketReplication | False | True | False | No | GetBucketReplicationConfigHandler bucket-handlers.go:2321 reads metadata but MOSS is not erasure; replication path erasure-gated |
| PutBucketReplication | False | True | False | No | PutBucketReplicationConfigHandler bucket-handlers.go:2232 returns ErrNotImplemented when !globalIsErasure (2267) |
| DeleteBucketReplication | False | True | False | No | DeleteBucketReplicationConfigHandler bucket-handlers.go:2389 (erasure-gated) |
| Bucket Configuration: Logging | |||||
| GetBucketLogging | False | True | False | Dummy | GetBucketLoggingHandler dummy-handlers.go:177 returns canned empty XML (router: 'dummy call') |
| PutBucketLogging | False | True | False | No | no PutBucketLogging handler/route registered |
| Bucket Configuration: Website Hosting | |||||
| GetBucketWebsite | False | True | False | Dummy | GetBucketWebsiteHandler dummy-handlers.go:34 returns ErrNoSuchWebsiteConfiguration |
| PutBucketWebsite | False | True | False | No | no PutBucketWebsite handler/route registered |
| DeleteBucketWebsite | False | True | False | Dummy | DeleteBucketWebsiteHandler dummy-handlers.go:225 flushes success, no storage operations. |
| Bucket Configuration: Location | |||||
| GetBucketLocation | True | False | False | Yes | GetBucketLocationHandler bucket-handlers.go:188 -> GetBucketInfo -> BucketManager (region from globalServerRegion) |
| Bucket Security: ACL | |||||
| GetBucketAcl | False | True | False | Dummy | GetBucketACLHandler acl-handlers.go:121 returns hardcoded FULL_CONTROL (router: 'dummy call') |
| PutBucketAcl | False | True | False | Dummy | PutBucketACLHandler acl-handlers.go:38 accepts only 'private' canned ACL, else it is Not Implemented |
| Bucket Security: Bucket policies | |||||
| GetBucketPolicy | True | False | False | Yes | GetBucketPolicyHandler bucket-policy-handlers.go:182 -> objectAPI.GetBucketPolicy |
| PutBucketPolicy | True | False | False | Yes | PutBucketPolicyHandler bucket-policy-handlers.go:41 -> objectAPI.SetBucketPolicy |
| DeleteBucketPolicy | True | False | False | Yes | DeleteBucketPolicyHandler bucket-policy-handlers.go:121 -> objectAPI.DeleteBucketPolicy |
| GetBucketPolicyStatus | False | False | False | No | no GetBucketPolicyStatus handler/route registered |
| Bucket Security: CORS | |||||
| PutBucketCors | True | False | False | Yes | PutBucketCorsHandler bucket-handlers.go:2446 -> objectAPI.SetBucketCors |
| GetBucketCors | True | False | False | Yes | GetBucketCorsHandler bucket-handlers.go:2558 -> objectAPI.GetBucketCors |
| DeleteBucketCors | True | False | False | Yes | DeleteBucketCorsHandler bucket-handlers.go:2509 -> objectAPI.DeleteBucketCors |
| Bucket Policies: Encryption | |||||
| GetBucketEncryption | False | True | False | No | GetBucketEncryptionHandler bucket-encryption-handlers.go:122 NotImplemented unless objAPI.IsEncryptionSupported() |
| PutBucketEncryption | False | True | False | No | PutBucketEncryptionHandler bucket-encryption-handlers.go:38 (encryption-support gated) |
| DeleteBucketEncryption | False | True | False | No | DeleteBucketEncryptionHandler bucket-encryption-handlers.go:183 (gated) |
| Bucket Tags: Tags | |||||
| GetBucketTagging | False | False | False | Yes | GetBucketTaggingHandler bucket-handlers.go:2102 -> GetBucketInfo.Tags (sheet blank; code reads MapR metadata) |
| PutBucketTagging | False | True | False | Yes | PutBucketTaggingHandler bucket-handlers.go:2032 -> objectAPI.ModifyBucket (DIFFERS from sheet 'Not Supported') |
| DeleteBucketTagging | False | True | False | Yes | DeleteBucketTaggingHandler bucket-handlers.go:2174 -> ModifyBucket (DIFFERS from sheet 'Not Supported') |
| Bucket Notifications: Notifications | |||||
| GetBucketNotification | False | False | False | MapR-backed (cond.) | GetBucketNotificationHandler bucket-notification-handlers.go:40 -> GetBucketInfo.EventConfig; gated on IsNotificationSupported |
| GetBucketNotificationConfiguration | False | False | False | MapR-backed (cond.) | Same handler as GetBucketNotification |
| PutBucketNotification | False | False | False | MapR-backed (cond.) | PutBucketNotificationHandler bucket-notification-handlers.go:138 -> ModifyBucket; gated on IsNotificationSupported |
| PutBucketNotificationConfiguration | False | False | False | MapR-backed (cond.) | Same handler as PutBucketNotification |
| Objects: CRUD | |||||
| PutObject | True | False | False | Yes | PutObjectHandler object-handlers.go:1807 -> MapRObjectLayer.PutObject -> ObjectManager.putObjectInternal (SAL) |
| GetObject | True | False | False | Yes | GetObjectHandler object-handlers.go:347 -> MapRObjectLayer.GetObject -> ObjectManager (SAL) |
| HeadObject | True | False | False | Yes | HeadObjectHandler object-handlers.go:620 -> GetObjectInfo -> ObjectManager |
| DeleteObject | True | False | False | Yes | DeleteObjectHandler object-handlers.go:3508 -> MapRObjectLayer.DeleteObject -> ObjectManager |
| CopyObject | True | False | False | Yes | CopyObjectHandler object-handlers.go:1076 -> MapRObjectLayer.CopyObject -> ObjectManager |
| RenameObject | False | False | False | No | no RenameObject handler/route in api-router.go |
| Objects: Listing | |||||
| ListObjects | True | False | False | Yes | ListObjectsV1Handler bucket-listobjects-handlers.go:494 -> ListObjects -> ObjectManager |
| ListObjectsV2 | True | False | False | Yes | ListObjectsV2Handler bucket-listobjects-handlers.go:256 -> ListObjectsV2 -> ObjectManager |
| ListObjectVersions | True | False | False | Yes | ListObjectVersionsHandler bucket-listobjects-handlers.go:78 -> ObjectManager.ListObjects(versioned) |
| Objects: Metadata and Attributes | |||||
| GetObjectAttributes | False | False | False | No | no GetObjectAttributes handler/route |
| UpdateObjectEncryption | False | False | False | No | no UpdateObjectEncryption handler/route |
| Objects; ACL | |||||
| GetObjectAcl | False | False | False | Dummy | GetObjectACLHandler acl-handlers.go:290 returns synthetic FULL_CONTROL (router: 'dummy call') |
| PutObjectAcl | False | False | False | Dummy | PutObjectACLHandler acl-handlers.go:198 accepts only 'private', no persistence |
| Objects: Tags | |||||
| GetObjectTagging | True | False | False | Yes | GetObjectTaggingHandler object-handlers.go:4161 -> ObjectManager.GetObjectTags (tags.go:74) |
| PutObjectTagging | True | False | False | Yes | PutObjectTaggingHandler object-handlers.go:4251 -> ObjectManager.PutObjectTags (tags.go:12) |
| DeleteObjectTagging | True | False | False | Yes | DeleteObjectTaggingHandler object-handlers.go:4348 -> ObjectManager.DeleteObjectTags (tags.go:84) |
| Objects Locks and Complaince: Object Lock | |||||
| GetObjectLockConfiguration | True | False | False | Yes | GetBucketObjectLockConfigHandler bucket-handlers.go:1961 -> GetBucketInfo.LockConfig |
| PutObjectLockConfiguration | True | False | False | Yes | PutBucketObjectLockConfigHandler bucket-handlers.go:1857 -> ModifyBucket(lock/retention) |
| Object Lock and Compliance: Legal Hold | |||||
| GetObjectLegalHold | True | False | False | Yes | GetObjectLegalHoldHandler object-handlers.go:3840 -> GetObjectInfo UserDefined legal-hold |
| PutObjectLegalHold | True | False | False | Yes | PutObjectLegalHoldHandler object-handlers.go:3714 -> CopyObject metadata update (WORM) |
| Object Lock and Compliance: Retention | |||||
| GetObjectRetention | True | False | False | Yes | GetObjectRetentionHandler object-handlers.go:4073 -> GetObjectInfo UserDefined retention |
| PutObjectRetention | True | False | False | Yes | PutObjectRetentionHandler object-handlers.go:3934 -> CopyObject metadata update (WORM enforced) |
| Object Lock and Compliance: Restore and Archive | |||||
| RestoreObject | False | False | False | Partial | PostRestoreObjectHandler object-handlers.go:4456 tracks restore state via object metadata (CopyObject); no real archive tier |
| Multiport Uploads : Upload LifeCycle | |||||
| CreateMultipartUpload | True | False | False | Yes | NewMultipartUploadHandler object-handlers.go:2159 -> ObjectManager multipartput.go:30 (SAL CreateDangling + OLT) |
| UploadPart | True | False | False | Yes | PutObjectPartHandler object-handlers.go:2766 -> multipartput.go:246 |
| UploadPartCopy | True | False | False | Yes | CopyObjectPartHandler object-handlers.go:2319 -> PutObjectPart (multipartput.go:246) |
| CompleteMultipartUpload | True | False | False | Yes | CompleteMultipartUploadHandler object-handlers.go:3286 -> multipartput.go:584 (OLT update) |
| AbortMultipartUpload | True | False | False | Yes | AbortMultipartUploadHandler object-handlers.go:3051 -> multipartput.go:445 (PurgeParts) |
| Multiport Uploads : Inspection | |||||
| ListMultipartUploads | True | False | False | Yes | ListMultipartUploadsHandler bucket-handlers.go:266 -> multipartput.go:135 (OLT scan) |
| ListParts | True | False | False | Yes | ListObjectPartsHandler object-handlers.go:3120 -> multipartput.go:293 (OLT scan) |
| Additional APIs | |||||
| DeleteBucketOwnershipControls | No | no DeleteBucketOwnershipControls handler/route | |||
| PutBucketOwnershipControls | No | no PutBucketOwnershipControls; only PublicAccessBlock (PutPublicAccessBlock bucket-handlers.go:1135 -> ModifyBucket) is MapR-backed | |||
| SelectObjectContent | Yes | SelectObjectContentHandler object-handlers.go:108 -> s3select over ObjectManager.GetObject data | |||