HyperStoreAWS APIs v 8.1
HyperStoreAWS APIs v 8.1
Version 8.1
This page left intentionally blank.
Confidentiality Notice
The information contained in this document is confidential to, and is the intellectual property of, Cloudian,
Inc. Neither this document nor any information contained herein may be (1) used in any manner other than
to support the use of Cloudian software in accordance with a valid license obtained from Cloudian, Inc, or (2)
reproduced, disclosed or otherwise provided to others under any circumstances, without the prior written per-
mission of Cloudian, Inc. Without limiting the foregoing, use of any information contained in this document in
connection with the development of a product or service that may be competitive with Cloudian software is
strictly prohibited. Any permitted reproduction of this document or any portion hereof must be accompanied
by this legend.
This page left intentionally blank.
Contents
Chapter 1. S3 API 13
1.1. Introduction 13
1.2.1. AbortMultipartUpload 21
1.2.2. CompleteMultipartUpload 21
1.2.3. CopyObject 22
1.2.4. CreateBucket 23
1.2.5. CreateMultipartUpload 25
1.2.6. DeleteBucket 26
1.2.7. DeleteBucketCors 26
1.2.8. DeleteBucketEncryption 27
1.2.9. DeleteBucketInventoryConfiguration 27
1.2.10. DeleteBucketLifecycle 27
1.2.11. DeleteBucketOwnershipControls 27
1.2.12. DeleteBucketPolicy 27
1.2.13. DeleteBucketReplication 27
1.2.14. DeleteBucketTagging 28
1.2.15. DeleteBucketWebsite 28
1.2.16. DeleteObject 28
1.2.17. DeleteObjects 29
1.2.18. DeleteObjectTagging 30
1.2.19. DeletePublicAccessBlock 30
1.2.20. GetBucketAcl 30
1.2.21. GetBucketCors 31
1.2.22. GetBucketEncryption 31
1.2.23. GetBucketInventoryConfiguration 32
1.2.24. GetBucketLifecycle 33
1.2.25. GetBucketLifecycleConfiguration 33
1.2.26. GetBucketLocation 34
1.2.27. GetBucketLogging 35
1.2.28. GetBucketNotificationConfiguration 35
1.2.29. GetBucketOwnershipControls 36
1.2.30. GetBucketPolicy 36
1.2.31. GetBucketPolicyStatus 36
1.2.32. GetBucketReplication 37
1.2.33. GetBucketTagging 37
1.2.34. GetBucketVersioning 37
1.2.35. GetBucketWebsite 38
1.2.36. GetObject 38
1.2.37. GetObjectAcl 40
1.2.38. GetObjectLegalHold 40
1.2.39. GetObjectLockConfiguration 41
1.2.40. GetObjectRetention 41
1.2.41. GetObjectTagging 41
1.2.42. GetObjectTorrent 42
1.2.43. GetPublicAccessBlock 42
1.2.44. HeadBucket 43
1.2.45. HeadObject 43
1.2.46. ListBucketInventoryConfigurations 45
1.2.47. ListBuckets 46
1.2.48. ListMultipartUploads 47
1.2.49. ListObjects 48
1.2.50. ListObjectsV2 49
1.2.51. ListObjectVersions 51
1.2.52. ListParts 52
1.2.55. PutBucketAcl 56
1.2.56. PutBucketCors 56
1.2.57. PutBucketEncryption 57
1.2.58. PutBucketInventoryConfiguration 58
1.2.59. PutBucketLifecycle 59
1.2.60. PutBucketLifecycleConfiguration 59
1.2.61. PutBucketLogging 65
1.2.62. PutBucketNotificationConfiguration 65
1.2.63. PutBucketOwnershipControls 66
1.2.64. PutBucketPolicy 67
1.2.65. PutBucketReplication 72
1.2.66. PutBucketTagging 73
1.2.67. PutBucketVersioning 74
1.2.68. PutBucketWebsite 74
1.2.69. PutObject 75
1.2.70. PutObjectAcl 76
1.2.71. PutObjectLegalHold 77
1.2.72. PutObjectLockConfiguration 77
1.2.73. PutObjectRetention 78
1.2.74. PutObjectTagging 78
1.2.75. PutPublicAccessBlock 79
1.2.76. RestoreObject 80
1.2.77. UploadPart 80
1.2.78. UploadPartCopy 81
2.2.1. AddUserToGroup 88
2.2.2. AttachGroupPolicy 88
2.2.3. AttachRolePolicy 89
2.2.4. AttachUserPolicy 89
2.2.5. CreateAccessKey 90
2.2.6. CreateGroup 90
2.2.7. CreatePolicy 91
2.2.8. CreatePolicyVersion 92
2.2.9. CreateRole 92
2.2.10. CreateSAMLProvider 94
2.2.11. CreateUser 94
2.2.12. CreateVirtualMFADevice 95
2.2.13. DeactivateMFADevice 97
2.2.14. DeleteAccessKey 97
2.2.15. DeleteGroup 97
2.2.16. DeleteGroupPolicy 98
2.2.17. DeletePolicy 98
2.2.18. DeletePolicyVersion 99
2.2.19. DeleteRole 99
2.4.1. Downloading the HyperStore SAML Metadata Document for IdP Setup 125
2.4.2. Using the IAM Service to Create SAML Provider Resources 126
1.1. Introduction
The Cloudian® HyperStore® system supports the great majority of the Amazon Web Services S3 REST API,
including advanced features.
This documentation provides the details of the HyperStore system’s compliance with the S3 REST API. The
organization of this documentation parallels that of the AWS S3 API Reference. Links are provided to specific
parts of the AWS S3 API Reference so you can easily view additional information about individual API oper-
ations.
This documentation takes the approach of specifying in detail the things that the HyperStore system does sup-
port from the AWS S3 REST API — from operations down to the level of particular request parameters, request
headers, request elements, response headers, and response elements. If it’s not listed in this HyperStore S3
API Support documentation, the HyperStore system does not currently support it.
This documentation also describes ways in which the HyperStore system extends the AWS S3 API, to support
additional functionality. Most of these extensions are in the form of additional request headers that add
enhanced functionality to standard AWS S3 operations on buckets. These extensions are described within the
sections that document HyperStore compliance with standard AWS S3 operations. The extensions are always
identified by a sub-heading that says HyperStore Extension to the S3 API. (For a summary of the extensions
see "HyperStore Extensions to the S3 API" (page 20).)
To access the S3 Service, HyperStore users need S3 access credentials. When users are created in Hyper-
Store, S3 access credentials are automatically created for the users.
If users are using a third party S3 client to access the HyperStore IAM Service, the users can obtain their S3
access credentials by logging in to the CMC and going to the Security Credentials page (via the drop-down
menu under the user login name). They can then supply those credentials to the third party S3 client applic-
ation.
If users are using the CMC's built-in S3 client, the CMC automatically uses the user's S3 credentials to access
the S3 service. Through the CMC's Bucket & Objects section, HyperStore users can create buckets, upload
and download objects, and so on.
13
Chapter 1. S3 API
S3 Service Configuration
The S3 Service is enabled by default system configuration. To view the current values of all S3 related con-
figuration settings in your system, on the Config Controller node run the command hsctl config get s3. For
descriptions of these settings, see the "HyperStore Configuration Settings" section of the Cloudian HyperStore
Administrator's Guide.
S3 Service Endpoints
To find the S3 service endpoint(s) for your system go to the CMC's Cluster Information page (Cluster ->
Cluster Config -> Cluster Information).
Using TLS/SSL
For information about setting up HTTPS for the S3 Service see the "HTTPS Feature Overview" section of the
Cloudian HyperStore Administrator's Guide. If HTTPS is enabled for your S3 Service it will listen for HTTPS
connections on port 443, as well as listening for regular HTTP connections on port 80.
DNS
Be sure to configure the S3 endpoint domains in your DNS environment. For more information see the "DNS
Set-Up" section of the Cloudian HyperStore Administrator's Guide.
S3 Request Logging
Information about requests processed by the S3 Service are logged to cloudian-request-info.log, which exists
on each node.For more information see the "Logging" section of the Cloudian HyperStore Administrator's
Guide.
S3 users should not attempt to delete more than 100,000 objects from a single bucket in less than an hour
using the S3 API, if the bucket was created in a HyperStore version older than 7.4. Doing so will result in Tomb-
stoneOverwhelmingException errors in the Cassandra logs and an inability to successfully execute an S3
ListObjectsVersion 1 or ListObjectsVersion 2 operation on the bucket. If the system is in this error condition,
you can trigger a tombstone purge as described in "Dealing with Excessive Tombstone Build-Up" in the "Sys-
tem cron jobs" section of the Cloudian HyperStore Administrator's Guide.
Buckets created in HyperStore 7.4 and later use a different metadata structure than older buckets. Starting in
HyperStore 7.4.2, all buckets created in HyperStore 7.4 and later use an improved tombstone monitoring and
cleanup mechanism that leverages the new metadata structure. Such buckets are able to support mass dele-
tions without negative service impact (they are not subject to the 100,000 deletes per hour limit that older buck-
ets are). If you have buckets that were created prior to HyperStore 7.4 and that need to be able to support mass
deletes, contact Cloudian Support for assistance in upgrading those buckets to the newer metadata structure
(known as "rules based partitioning").
14
1.1. Introduction
To check to see what is your HyperStore S3 Service endpoint -- the URI to which you will submit S3 requests
with your third party application -- go to the CMC's Security Credentials page.
In practice, the main differences between developing for the HyperStore S3 service and developing for
Amazon S3 are:
l HyperStore S3 client applications must use the HyperStore S3 service endpoint rather than the Amazon
S3 service endpoint. To check to see what is your HyperStore S3 Service endpoint -- the URI to which
you will submit S3 requests with your custom application -- go to the CMC's Security Credentials page.
l As detailed in the "Supported S3 Operations" section of this documentation, the HyperStore S3 service
supports the great majority of but not the entire Amazon S3 API.
l Also as detailed in the "Supported S3 Operations" section of this documentation, the HyperStore S3 ser-
vice supports a small number of extensions to the Amazon S3 API. (For an overview of the extensions
see "HyperStore Extensions to the S3 API" (page 20)).
15
Chapter 1. S3 API
For more information on this Amazon S3 feature, refer to the "Authenticating Requests (AWS Signature Ver-
sion 4)" section of the Amazon S3 REST API.
Note The region name validation aspect of AWS Signature Version 4 is disabled by default in Hyper-
Store.
l x-amz-content-sha256: STREAMING-UNSIGNED-PAYLOAD-TRAILER
l x-amz-trailer: x-amz-checksum-crc32c
For ACL usage information and for descriptions of ACL items, see Access Control List (ACL) Overview in the
AWS S3 documentation.
16
1.1. Introduction
l bucket-owner-full-control
l log-delivery-write
group-read-write Bucket and object Owner gets FULL_CONTROL. All other members of the
owner’s HyperStore service user group get READ and WRITE
access.
Note To grant access to groups other than the requester’s own group, you cannot use canned ACLs.
Instead, when using standard Amazon S3 methods for assigning privileges to a grantee (via request
headers or request body), specify "<groupID>|" as the grantee. The "<groupID>|" format (with vertical
bar) indicates that the grantee is a group — for example, "Group5|".
Note When access privileges have through separate requests been granted to a group and to a spe-
cific member of the group, the user gets the broader of the privilege grants. For example, if Group5 is
granted read-write privileges and a specific user within Group5 is separately granted read privileges,
the user gets read-write privileges.
l Authorization
l Content-Length
l Content-Type
l Content-MD5
l Date
l Expect
l Host
Note For path-style requests, the Host value is your system's S3 endpoint (excluding the pro-
tocol and port) -- for example s3-region1.enterprise.com. For virtual-hosted-style requests, the
Host value is BucketName.<S3 endpoint> -- for example bucket1.s3-region1.enterprise.com.
17
Chapter 1. S3 API
l x-amz-content-sha256
l x-amz-date
l x-amz-expected-bucket-owner
Note
* Unlike the AWS documentation which lists x-amz-expected-bucket-owner as a supported
request header for nearly every individual S3 API call but omits the header from the Common
header list, this HyperStore documentation instead lists the x-amz-expected-bucket-owner
header here among the Common headers. For the HyperStore S3 Service, the x-amz-expected-
bucket-owner request header is supported for all S3 API calls except CreateBucket and
ListBuckets.
* If you use the optional x-amz-expected-bucket-owner request header in making S3 calls to the
HyperStore S3 Service, identify the expected bucket owner by the bucket owner's canonical
user ID. A user's canonical user ID can be obtained by retrieving the user's profile in the CMC or
via the Admin API call GET /user.
* As with AWS, if the destination bucket in an API request is owned by an account other than the
expected bucket owner account, the request will fail with an HTTP 403 (Access Denied) error.
l Content-Length
l Content-Type
l Connection
l Date
l ETag
l Server
l x-amz-delete-marker
l x-amz-request-id
l x-amz-version-id
l AccessDenied
l AccountProblem
l AmbiguousGrantByEmailAddress
l BadDigest
l BucketAlreadyExists
18
1.1. Introduction
l BucketAlreadyOwnedByYou
l BucketNotEmpty
l CrossLocationLoggingProhibited
l EntityTooLarge
l EntityTooSmall
l IllegalVersioningConfigurationException
l IncorrectNumberOfFilesInPostRequest
l InternalError
l InvalidAccessKeyId
l InvalidArgument
l InvalidBucketName
l InvalidBucketState
l InvalidDigest
l InvalidEncryptionAlgorithmError
l InvalidLocationConstraint
l InvalidObjectState
l InvalidPart
l InvalidPartOrder
l InvalidPolicyDocument
l InvalidRange
l InvalidRequest
l InvalidSecurity
l InvalidTargetBucketForLogging
l InvalidURI
l KeyTooLong
l MalformedACLError
l MalformedPOSTRequest
l MalformedXML
l MaxMessageLengthExceeded
l MaxPostPreDataLengthExceededError
l MetadataTooLarge
l MethodNotAllowed
l MissingContentLength
l MissingSecurityHeader
l NoSuchBucket
l NoSuchBucketPolicy
l NoSuchKey
l NoSuchLifecycleConfiguration
l NoSuchReplicationConfiguration
19
Chapter 1. S3 API
l NoSuchUpload
l NoSuchVersion
l NotImplemented
l PermanentRedirect
l PreconditionFailed
l Redirect
l RestoreAlreadyInProgress
l RequestIsNotMultiPartContent
l RequestTimeout
l RequestTimeTooSkewed
l SignatureDoesNotMatch
l ServiceUnavailable
l SlowDown
l TemporaryRedirect
l TooManyBuckets
l UnexpectedContent
l UnresolvableGrantByEmailAddress
l UserKeyMustBeSpecified
20
1.2. Supported S3 Operations
1.2.1. AbortMultipartUpload
This operation aborts a multipart upload.
Along with the common headers, HyperStore supports the operation-specific parameters listed below.
For operation details and examples see the AWS documentation: AbortMultipartUpload
1.2.2. CompleteMultipartUpload
Completes a multipart upload by assembling previously uploaded parts.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: CompleteMultipartUpload
21
Chapter 1. S3 API
1.2.3. CopyObject
Creates a copy of an object that is already stored in HyperStore.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: CopyObject
l x-amz-sdk-checksum-algorithm
l x-amz-copy-source
l x-amz-copy-source-if-match
l x-amz-copy-source-if-modified-since
l x-amz-copy-source-if-none-match
l x-amz-copy-source-if-unmodified-since
l x-amz-copy-source-server-side-encryption-customer-algorithm
l x-amz-copy-source-server-side-encryption-customer-key
l x-amz-copy-source-server-side-encryption-customer-key-MD5
l x-amz-grant-full-control
l x-amz-grant-read
l x-amz-grant-read-acp
l x-amz-grant-write
l x-amz-grant-write-acp
l x-amz-meta-*
l x-amz-metadata-directive
l x-amz-object-lock-legal-hold
l x-amz-object-lock-mode
l x-amz-object-lock-retain-until-date
l x-amz-server-side-encryption
22
1.2. Supported S3 Operations
l x-amz-server-side-encryption-customer-algorithm
l x-amz-server-side-encryption-customer-key
l x-amz-server-side-encryption-customer-key-MD5
l x-amz-storage-class
Note HyperStore ignores the value of the x-amz-storage-class header and treats all requests as
being for storage class STANDARD.
l x-amz-source-expected-bucket-owner
l x-amz-tagging
l x-amz-tagging-directive
l x-amz-website-redirect-location
1.2.4. CreateBucket
Creates a new bucket.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: CreateBucket
Note
* By default each user is allowed a maximum of 100 buckets.
* HyperStore enforces the same bucket naming restrictions as does Amazon S3. Also, if you use an
underscore in a bucket name you will not be able to enable auto-tiering for the bucket (for trans-
itioning objects to Amazon or other remote destinations on a configurable schedule). It's best not to use
underscores when naming new buckets, in case you may want to enable auto-tiering on the bucket
immediately or in the future.
23
Chapter 1. S3 API
l x-amz-object-ownership
With the "x-gmt-policyid" request header for "PUT Bucket", you specify the
ID of the desired storage policy when you create a new bucket. Note how-
ever that some policies may not be available to all user groups — a policy’s
availability is specified by system administrators at the time of policy cre-
ation, and this information becomes part of the policy definition. When you
specify an "x-gmt-policyid" value with a "PUT Bucket" request, the policy ID
must be for a policy that is available to the group to which the bucket owner
belongs.
Also the policy ID must be for a storage policy from the service region that is
specified in the "PUT Bucket" request’s LocationConstraint element.
If the "PUT Bucket" request does not include the "x-gmt-policyid" request
header, then the system will automatically assign the system default stor-
age policy to the bucket during bucket creation.
24
1.2. Supported S3 Operations
not specify an "x-gmt-policyid" header and the system does not yet
have an established default storage policy.
Example header:
x-gmt-policyid: 1bc90238f9f11cb32f5e4e901675d50b
1.2.5. CreateMultipartUpload
This operation initiates a multipart upload and returns an upload ID.
Along with the common headers, HyperStore supports the operation-specific parameters and elements listed
below.
For operation details and examples see the AWS documentation: CreateMultipartUpload
l x-amz-sdk-checksum-algorithm
Note Along with the information about this header in the AWS documentation for this S3 API
operation, overviews of the AWS S3 "Additional Checksum" feature are available in the AWS
documentation "Checking Object Integrity" and the AWS blog post "Additional Checksum
Algorithms for Amazon S3".
l x-amz-grant-full-control
l x-amz-grant-read
l x-amz-grant-read-acp
l x-amz-grant-write
l x-amz-grant-write-acp
l x-amz-meta-*
25
Chapter 1. S3 API
l x-amz-object-lock-legal-hold
l x-amz-object-lock-mode
l x-amz-object-lock-retain-until-date
l x-amz-server-side-encryption
l x-amz-server-side-encryption-customer-algorithm
l x-amz-server-side-encryption-customer-key
l x-amz-server-side-encryption-customer-key-MD5
l x-amz-storage-class
Note HyperStore ignores the value of the x-amz-storage-class header and treats all requests as
being for storage class STANDARD.
l x-amz-website-redirect-location
1.2.6. DeleteBucket
Deletes the bucket.
For operation details and examples see the AWS documentation: DeleteBucket
1.2.7. DeleteBucketCors
Deletes the cors configuration information set for the bucket.
For operation details and examples see the AWS documentation: DeleteBucketCors
26
1.2. Supported S3 Operations
1.2.8. DeleteBucketEncryption
This implementation of the DELETE operation removes default encryption from the bucket.
For operation details and examples see the AWS documentation: DeleteBucketEncryption
1.2.9. DeleteBucketInventoryConfiguration
Deletes an inventory configuration (identified by the inventory ID) from the bucket.
Along with the common headers, HyperStore supports the operation-specific parameter listed below.
For operation details and examples see the AWS documentation: DeleteBucketInventoryConfiguration
1.2.10. DeleteBucketLifecycle
Deletes the lifecycle configuration from the specified bucket.
For operation details and examples see the AWS documentation: DeleteBucketLifecycle
1.2.11. DeleteBucketOwnershipControls
Removes OwnershipControls for a bucket.
For operation details and examples see the AWS documentation: DeleteBucketOwnershipControls
1.2.12. DeleteBucketPolicy
This implementation of the DELETE operation uses the policy subresource to delete the policy of a specified
bucket.
For operation details and examples see the AWS documentation: DeleteBucketPolicy
1.2.13. DeleteBucketReplication
Deletes the replication configuration from the bucket.
27
Chapter 1. S3 API
For operation details and examples see the AWS documentation: DeleteBucketReplication
1.2.14. DeleteBucketTagging
Deletes the tags from the bucket.
For operation details and examples see the AWS documentation: DeleteBucketTagging
1.2.15. DeleteBucketWebsite
This operation removes the website configuration for a bucket.
For operation details and examples see the AWS documentation: DeleteBucketWebsite
1.2.16. DeleteObject
Removes the null version (if there is one) of an object and inserts a delete marker, which becomes the latest
version of the object.
Along with the common headers, HyperStore supports the operation-specific headers listed below.
For operation details and examples see the AWS documentation: DeleteObject
Note Successful completion of a DeleteObject request results in the system marking the object as hav-
ing been deleted. However the actual deletion of object data from disk will not occur until the next auto-
matic running of the object deletion batch processing job. By default this batch processing of object
data deletes runs hourly on each node.
IMPORTANT ! Do not attempt to delete more than 100,000 objects from a single bucket in less than an
hour, if the bucket was created in a HyperStore version older than 7.4.
Buckets created in HyperStore 7.4 and later use a different metadata structure than older buckets. Start-
ing in HyperStore 7.4.2, all buckets created in HyperStore 7.4 and later use an improved tombstone
monitoring and cleanup mechanism that leverages the new metadata structure. Such buckets are able
to support mass deletions without negative service impact (they are not subject to the 100,000 deletes
per hour limit that older buckets are). If you have buckets that were created prior to HyperStore 7.4 and
that need to be able to support mass deletes, contact Cloudian Support for assistance in upgrading
those buckets to the newer metadata structure (known as "rules based partitioning").
28
1.2. Supported S3 Operations
1.2.17. DeleteObjects
This operation enables you to delete multiple objects from a bucket using a single HTTP request.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: DeleteObjects
Note The HyperStore S3 Service allows a maximum of 1000 object deletes per DeleteObjects request.
Note Successful completion of a DeleteObjects request results in the system marking the objects as
having been deleted. However the actual deletion of object data from disk will not occur until the next
automatic running of the object deletion batch processing job. By default this batch processing of object
data deletes runs hourly on each node.
IMPORTANT ! Do not attempt to delete more than 100,000 objects from a single bucket in less than an
hour, if the bucket was created in a HyperStore version older than 7.4.
Buckets created in HyperStore 7.4 and later use a different metadata structure than older buckets. Start-
ing in HyperStore 7.4.2, all buckets created in HyperStore 7.4 and later use an improved tombstone
monitoring and cleanup mechanism that leverages the new metadata structure. Such buckets are able
to support mass deletions without negative service impact (they are not subject to the 100,000 deletes
per hour limit that older buckets are). If you have buckets that were created prior to HyperStore 7.4 and
that need to be able to support mass deletes, contact Cloudian Support for assistance in upgrading
those buckets to the newer metadata structure (known as "rules based partitioning").
29
Chapter 1. S3 API
1.2.18. DeleteObjectTagging
Removes the entire tag set from the specified object.
For operation details and examples see the AWS documentation: DeleteObjectTagging
1.2.19. DeletePublicAccessBlock
Removes the PublicAccessBlock configuration for a bucket.
For operation details and examples see the AWS documentation: DeletePublicAccessBlock
1.2.20. GetBucketAcl
This implementation of the GET operation uses the acl subresource to return the access control list (ACL) of a
bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketAcl
30
1.2. Supported S3 Operations
1.2.21. GetBucketCors
Returns the cors configuration information set for the bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketCors
1.2.22. GetBucketEncryption
Returns the default encryption configuration for the bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketEncryption
31
Chapter 1. S3 API
1.2.23. GetBucketInventoryConfiguration
Returns an inventory configuration (identified by the inventory configuration ID) from the bucket.
Along with the common headers, HyperStore supports the operation-specific parameter and elements listed
below.
For operation details and examples see the AWS documentation: GetBucketInventoryConfiguration
32
1.2. Supported S3 Operations
1.2.24. GetBucketLifecycle
Returns the lifecycle configuration information set on the bucket.
For operation details and examples see the AWS documentation: GetBucketLifecycle
Note Though HyperStore supports this API operation for backward compatibility, AWS has deprecated
this operation in favor of a newer version called GetBucketLifecycleConfiguration which HyperStore
also supports. If you used PutBucketLifecycleConfiguration to create a lifecycle use GetBuck-
etLifecycleConfiguration to retrieve the configuration.
1.2.25. GetBucketLifecycleConfiguration
Returns the lifecycle configuration information set on the bucket.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: GetBucketLifecycleConfiguration
x-gmt-post-tier-copy
33
Chapter 1. S3 API
n Filter
l And
o ObjectSizeGreaterThan
o ObjectSizeLessThan
o Prefix
o Tag
n Key
n Value
l Prefix
l Tag
o Key
o Value
n ID
n NoncurrentVersionExpiration
l NoncurrentDays
n NoncurrentVersionTransition
l NoncurrentDays
l StorageClass
n Prefix
n Status
n Transition
l Date
l Days
l StorageClass
1.2.26. GetBucketLocation
Returns the Region the bucket resides in.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketLocation
l If the bucket specified in the GetBucketLocation request resides in a non-default service region, the
response indicates the name of the service region.
34
1.2. Supported S3 Operations
l If the bucket specified in the GetBucketLocation request resides in the default service region, the
response returns a null/empty value.
HyperStore's behavior of returning a null/empty value if the bucket is in the default region is the same as
Amazon Web Services' implementation of the GetBucketLocation operation. Some S3 client applications --
such as Veeam -- are unable to handle the return of a null/empty region value, and may display an error if the
actual default region name is set within the client application. The work-around is to not set the region in the cli-
ent application, or else set it to the AWS default region name: us-east-1.
1.2.27. GetBucketLogging
Returns the logging status of a bucket and the permissions users have to view and modify that status.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketLogging
1.2.28. GetBucketNotificationConfiguration
Returns the notification configuration of a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketNotificationConfiguration
35
Chapter 1. S3 API
o Id
o Queue
l s3:ObjectCreated:*
l s3:ObjectCreated:Put
l s3:ObjectCreated:Post
l s3:ObjectCreated:Copy
l s3:ObjectCreated:CompleteMultipartUpload
l s3:ObjectRemoved:*
l s3:ObjectRemoved:Delete
l s3:ObjectRemoved:DeleteMarkerCreated
1.2.29. GetBucketOwnershipControls
Retrieves OwnershipControls for a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketOwnershipControls
1.2.30. GetBucketPolicy
Returns the policy of a specified bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketPolicy
1.2.31. GetBucketPolicyStatus
Retrieves the policy status for a bucket, indicating whether the bucket is public.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketPolicyStatus
36
1.2. Supported S3 Operations
Note HyperStore considers a bucket policy to be "public" if any statement in the policy is public. A state-
ment is considered public if the Effect is Allow and the Principal has a wildcard -- unless there is an
IpAddress:{aws:SourceIp condition associated with the statement that restricts the requesting source IP
to one or more specified IP addresses.
1.2.32. GetBucketReplication
Returns the replication configuration of a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketReplication
1.2.33. GetBucketTagging
Returns the tag set associated with the bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketTagging
1.2.34. GetBucketVersioning
Returns the versioning state of a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketVersioning
37
Chapter 1. S3 API
1.2.35. GetBucketWebsite
Returns the website configuration for a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetBucketWebsite
1.2.36. GetObject
Retrieves objects from the S3 storage system.
Along with the common headers, HyperStore supports the operation-specific parameters, headers, and ele-
ments listed below.
For operation details and examples see the AWS documentation: GetObject
Note Using the partNumber parameter may not work as expected if the object has been auto-
tiered, or if the object has been auto-tiered and restored. This is because an object's number of
parts when uploaded to HyperStore may be different than its number of parts when it is auto-
tiered to a remote destination system.
38
1.2. Supported S3 Operations
l response-cache-control
l response-content-disposition
l response-content-encoding
l response-content-language
l response-content-type
l response-expires
l versionId
l x-amz-server-side-encryption-customer-key
l x-amz-server-side-encryption-customer-key-MD5
Note For objects encrypted with the KMIP type of server-side encryption a "-KMIP" suffix will be
appended to the x-amz-server-side-encryption response header value.
l x-amz-server-side-encryption-customer-algorithm
l x-amz-server-side-encryption-customer-key-MD5
l x-amz-tagging-count
l x-amz-version-id
l x-amz-website-redirect-location
39
Chapter 1. S3 API
Name Description
x-gmt-error-code In the event of an HTTP 4xx response, these two response headers provide
additional information about the nature of the error. The x-gmt-error-code
x-gmt-message header values will be from among the list in "S3 Error Responses" (page
18).
1.2.37. GetObjectAcl
Returns the access control list (ACL) of an object.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: GetObjectAcl
1.2.38. GetObjectLegalHold
Gets an object's current Legal Hold status.
Along with the common headers, HyperStore supports the operation-specific parameters and elements listed
below.
For operation details and examples see the AWS documentation: GetObjectLegalHold
40
1.2. Supported S3 Operations
1.2.39. GetObjectLockConfiguration
Gets the Object Lock configuration for a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetObjectLockConfiguration
1.2.40. GetObjectRetention
Retrieves an object's retention settings.
Along with the common headers, HyperStore supports the operation-specific parameters and elements listed
below.
For operation details and examples see the AWS documentation: GetObjectRetention
1.2.41. GetObjectTagging
Returns the tag-set of an object.
41
Chapter 1. S3 API
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetObjectTagging
1.2.42. GetObjectTorrent
Return torrent files from a bucket.
For operation details and examples see the AWS documentation: GetObjectTorrent
1.2.43. GetPublicAccessBlock
Retrieves the PublicAccessBlock configuration for a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: GetPublicAccessBlock
42
1.2. Supported S3 Operations
1.2.44. HeadBucket
This operation is useful to determine if a bucket exists and you have permission to access it.
Along with the common headers, HyperStore supports the operation-specific headers listed below.
For operation details and examples see the AWS documentation: HeadBucket
Parameter Description
This header specifies the unique ID of the storage policy assigned to the
x-gmt-policyid
bucket. For more information see "CreateBucket" (page 23).
1.2.45. HeadObject
The HEAD operation retrieves metadata from an object without returning the object itself.
Along with the common headers, HyperStore supports the operation-specific parameters and headers listed
below.
For operation details and examples see the AWS documentation: HeadObject
Note Using the partNumber parameter may not work as expected if the object has been auto-
tiered, or if the object has been auto-tiered and restored. This is because an object's number of
43
Chapter 1. S3 API
parts when uploaded to HyperStore may be different than its number of parts when it is auto-
tiered to a remote destination system.
l versionId
Note For objects encrypted with the KMIP type of server-side encryption a "-KMIP" suffix will be
appended to the x-amz-server-side-encryption response header value.
l x-amz-server-side-encryption-customer-algorithm
l x-amz-server-side-encryption-customer-key-MD5
l x-amz-tagging-count
l x-amz-version-id
44
1.2. Supported S3 Operations
Name Description
x-gmt-error-code In the event of an HTTP 4xx response, these two response headers provide
additional information about the nature of the error. The x-gmt-error-code
x-gmt-message header values will be from among the list in "S3 Error Responses" (page
18).
1.2.46. ListBucketInventoryConfigurations
Returns a list of inventory configurations for the bucket.
Along with the common headers, HyperStore supports the operation-specific parameter and elements listed
below.
For operation details and examples see the AWS documentation: ListBucketInventoryConfigurations
45
Chapter 1. S3 API
l IsTruncated
l NextContinuationToken
1.2.47. ListBuckets
Returns a list of all buckets owned by the authenticated sender of the request.
Along with the common headers, HyperStore supports the operation-specific parameter listed below.
For operation details and examples see the AWS documentation: ListBuckets
Note This extension is supported only if it has been enabled by system administrators (using the con-
figuration setting s3.enable.sharedBucket).
Example:
46
1.2. Supported S3 Operations
1.2.48. ListMultipartUploads
This operation lists in-progress multipart uploads.
Along with the common headers, HyperStore supports the operation-specific parameters and elements listed
below.
For operation details and examples see the AWS documentation: ListMultipartUploads
47
Chapter 1. S3 API
o MaxUploads
o IsTruncated
o Upload
n ChecksumAlgorithm
n Initiated
n Initiator
o DisplayName
o ID
n Key
n Owner
o DisplayName
o ID
n StorageClass
n UploadId
o CommonPrefixes
n Prefix
o EncodingType
1.2.49. ListObjects
Returns some or all of the objects in a bucket.
Along with the common headers, HyperStore supports the operation-specific parameters, headers, and ele-
ments listed below.
For operation details and examples see the AWS documentation: ListObjects
Note HyperStore also supports the newer version of this API operation, ListObjectsV2.
Note When using ListObjects, use the marker request parameter to improve performance in listing the
content of buckets that contain many objects. For detail see the AWS documentation for this API oper-
ation.
Note The HyperStore system does not support %c2%85(U+0085) as a delimiter value
l encoding-type
l marker
48
1.2. Supported S3 Operations
l max-keys
l prefix
1.2.50. ListObjectsV2
Returns some or all of the objects in a bucket.
49
Chapter 1. S3 API
Along with the common headers, HyperStore supports the operation-specific parameters, headers, and ele-
ments listed below.
For operation details and examples see the AWS documentation: ListObjectsV2
Note For backward-compatibility HyperStore continues to also support the older version of this API
operation, ListObjects.
Note When using ListObjectsV2, use the continuation-token request parameter to improve per-
formance in listing the content of buckets that contain many objects. For detail see the Amazon doc-
umentation for ListObjectsV2.
Note The HyperStore system does not support %c2%85(U+0085) as a delimiter value
l encoding-type
l fetch-owner
l list-type
l max-keys
l prefix
l start-after
50
1.2. Supported S3 Operations
1.2.51. ListObjectVersions
Returns metadata about all of the versions of objects in a bucket.
Along with the common headers, HyperStore supports the operation-specific parameters and elements listed
below.
For operation details and examples see the AWS documentation: ListObjectVersions
51
Chapter 1. S3 API
l prefix
l version-id-marker
1.2.52. ListParts
Lists the parts that have been uploaded for a specific multipart upload.
52
1.2. Supported S3 Operations
Along with the common headers, HyperStore supports the operation-specific parameters and elements listed
below.
For operation details and examples see the AWS documentation: ListParts
53
Chapter 1. S3 API
o Owner
n DisplayName
n ID
o StorageClass
o ChecksumAlgorithm
Along with the common headers, HyperStore supports the operation-specific parameters and elements listed
below.
For operation details and examples see the AWS documentation: OPTIONS Object
Along with the common headers, HyperStore supports the operation-specific form fields listed below.
For operation details and examples see the AWS documentation: POST Object
54
1.2. Supported S3 Operations
l policy
l success_action_redirect, redirect
l success_action_status
l tagging
l x-amz-sdk-checksum-algorithm
Note Along with the information about this header (and the x-amz-checksum-<algrorithm> head-
ers below) in the AWS documentation for this S3 API operation, overviews of the AWS S3 "Addi-
tional Checksum" feature are available in the AWS documentation "Checking Object Integrity"
and the AWS blog post "Additional Checksum Algorithms for Amazon S3". Note that if the
algorithm specified by x-amz-sdk-checksum-algorithm: <algorithm> is different than the
algorithm specified in the x-amz-checksum-<algorithm>: <checksum-value> header (one of the
four headers listed below), HyperStore rejects the request with an HTTP 400 error.
l x-amz-checksum-crc32
l x-amz-checksum-crc32c
l x-amz-checksum-sha1
l x-amz-checksum-sha256
l x-amz-storage-class
Note HyperStore ignores the value of the x-amz-storage-class field and treats all requests as
being for storage class STANDARD.
l x-amz-meta-*
l x-amz-website-redirect-location
l x-amz-object-lock-mode
l x-amz-object-lock-retain-until-date
l x-amz-object-lock-legal-hold
l x-amz-server-side-encryption
l x-amz-server-side-encryption-customer-algorithm
l x-amz-server-side-encryption-customer-key
l x-amz-server-side-encryption-customer-key-MD5
55
Chapter 1. S3 API
1.2.55. PutBucketAcl
Sets the permissions on an existing bucket using access control lists (ACL).
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: PutBucketAcl
1.2.56. PutBucketCors
Sets the cors configuration for your bucket.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
56
1.2. Supported S3 Operations
For operation details and examples see the AWS documentation: PutBucketCors
1.2.57. PutBucketEncryption
This implementation of the PUT operation uses the encryption subresource to set the default encryption state of
an existing bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutBucketEncryption
Note In the current HyperStore release, only the bucket owner is allowed to perform operations
relating to bucket encryption. HyperStore does not currently support the use of bucket policies to
extend bucket encryption permissions to users other than the bucket owner. Specifically, with regard to
"PutBucketPolicy" (page 67), HyperStore does not currently support the "s3:PutEn-
cryptionConfiguration" or "s3:GetEncryptionConfiguration" actions.
57
Chapter 1. S3 API
1.2.58. PutBucketInventoryConfiguration
This implementation of the PUT action adds an inventory configuration (identified by the inventory ID) to the
bucket.
Along with the common headers, HyperStore supports the operation-specific parameter and elements listed
below.
For operation details and examples see the AWS documentation: PutBucketInventoryConfiguration
Note Unlike AWS, HyperStore does not use a system account to write inventory reports to the des-
tination bucket. Instead, reports are written by source bucket owner's account. In the current version of
HyperStore, the report destination bucket must be a bucket that is owned by the source bucket
owner.
o Format
o Prefix
o Filter
n Prefix
o Id
o IncludedObjectVersions
o IsEnabled
o OptionalFields
n Field
58
1.2. Supported S3 Operations
o Schedule
n Frequency
1.2.59. PutBucketLifecycle
Creates a new lifecycle configuration for the bucket or replaces an existing lifecycle configuration.
For operation details and examples see the AWS documentation: PutBucketLifecycle
Note Though HyperStore supports this API operation for backward compatibility, AWS has deprecated
this operation in favor of a newer version called PutBucketLifecycleConfiguration which HyperStore
also supports. For new lifecycle configurations use the new version.
1.2.60. PutBucketLifecycleConfiguration
Creates a new lifecycle configuration for the bucket or replaces an existing lifecycle configuration.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: PutBucketLifecycleConfiguration
Note With the HyperStore system, only the bucket owner can create bucket lifecycle rules.
Note Do not set an auto-tiering lifecycle rule and a cross-region replication configuration on the
same source bucket.
x-gmt-tieringinfo: PROTOCOL|EndPoint:Endpoint,Action:Action
[,Mode:proxy][,Region:Region][,TieringBucket:TieringBucket]
59
Chapter 1. S3 API
Note You must use nested URL encoding. First URL encode the End-
point value (the endpoint itself), and then URL encode the whole x-gmt-
tieringinfo value.
60
1.2. Supported S3 Operations
During the period while the object is cached locally, subsequent GETs
of the object can be served from local storage. After the cache period
expires, the local copy is automatically deleted by the next run of the
daily auto-tiering / auto-expiration cron job. Following deletion of the
cached copy, the next GET of the object will be served from the tiering
destination site (and a copy of the object will be once again be cached).
If the Protocol is S3, GCS, or AZURE you can use either "stream" or "nostream"
or "cache". If the Protocol is S3GLACIER or SPECTRA you must use "nostream"
(the "stream" and "cache" options are not supported for those destinations).
l Locked:true or false (optional) — You can optionally use this field to indicate
whether the destination bucket has Object Lock enabled. If you omit this field,
the system when executing tiering operations will automatically check whether
the destination bucket has Object Lock enabled or not.
l Mode:proxy (optional) — If you specify this option, then:
o All objects uploaded to the bucket from this time forward (all objects
uploaded after you successfully submit the PUT Bucket lifecycle
request) will be immediately transitioned to the destination system.
o Any objects already in the bucket at the time that you submit the PUT
Bucket lifecycle request will be subject to the transition schedule that
you define in the request body.
Proxy mode is supported only if the Protocol is S3, GCS, or AZURE (proxy
mode is not supported for S3GLACIER or SPECTRA tiering).
61
Chapter 1. S3 API
o The name of a bucket that you want HyperStore to create in the des-
tination system, to use as the tiering destination. Be sure to choose a
bucket name that is very likely to be unique in the destination system. If
your supplied bucket name is not unique in the destination system,
HyperStore will be unable to create the bucket and the PUT Bucket life-
cycle request will fail.
If you omit the tiering bucket parameter, then in the destination system Hyper-
Store will create a tiering bucket named as follows:
<origin-bucket-name-truncated-to-34-characters>-<28-character-ran-
dom-string>
# Example 1 (before URL encoding) Tiering to Amazon S3, into target bucket
# named 'bucket12'. Streaming for local GETs will be supported.
x-gmt-tieringinfo: S3|EndPoint:http://s3.amazonaws.com,Action:stream,
TieringBucket:bucket12
# Example 1 after nested URL encoding (endpoint value first, then whole
# header value)
x-gmt-tieringinfo: S3%7CEndPoint%3Ahttp%253A%252F%252Fs3.amazonaws.com
%2CAction%3Astream%2CTieringBucket%3Abucket12
x-gmt-tieringinfo:
AZURE|EndPoint:https://blob.core.windows.net,Action:nostream
# Example 2 after nested URL encoding (endpoint value first, then whole
# header value)
62
1.2. Supported S3 Operations
x-gmt-tieringinfo:
AZURE%7CEndPoint%3Ahttps%253A%252F%252Fblob.core.windows.net
%2CAction%3Anostream
x-gmt- If you include this header in your "PUT Bucket lifecycle" request and set the header No
com- value to "LAT", then in lifecycle rules that you configure with the "Days" comparator the
pare rule will be implemented as number of days since the object’s Last Access Time.
If you do not use this extension header, or if you include the header but assign it no
value or any value other than "LAT", then "Days" based lifecycle rules will be imple-
mented as number of days since the object’s Creation Time (the default Amazon S3
behavior).
l Last Access Time based auto-tiering rules (use this header and also the x-gmt-
tierinfo header).
l Last Access Time based expiration rules (use this header but not the x-gmt-tier-
info header).
Note Last Access Time is subject to updating only for objects in buckets for
which a lifecycle is configured. For such objects, Last Access Time is updated
if the object is accessed either for retrieval (GET or HEAD) or modification
(PUT/POST/Copy). If an object is created and then never accessed, its Last
Access Time will be its Creation Time.
Note If you use the x-gmt-compare header and set it to "LAT", it does not apply
to any in NoncurrentVersionTransition or NoncurrentVersionExpiration rules
within the lifecycle policy (for non-current versions of versioned objects).
These types of rules are always based on the time elapsed since an object ver-
sion became non-current (was replaced by a new version of the object).
x-gmt- If you use the x-gmt-tieringinfo request header to configure auto-tiering for a bucket, No
post- you can optionally also use the x-gmt-post-tier-copy request header to specify a num-
tier- ber of days for which a local copy of auto-tiered objects should be retained. For
copy example if you set x-gmt-post-tier-copy: 7 then after each object is auto-tiered to the
tiering destination, a copy of the object will be kept in the HyperStore source bucket for
7 days. After that the local copy will be deleted and only object metadata will be
retained locally.
There is no upper limit on this value. So if you want the local copy retention period to
be practically limitless, you could for example set this header to 36500 to indicate a
local copy retention period of 100 years.
If you omit the x-gmt-post-tier-copy request header, then by default local objects are
deleted after they are successfully auto-tiered to the tiering destination system, and
only object metadata is retained locally.
63
Chapter 1. S3 API
Note If you are using "Bridge Mode" transition (whereby objects are auto-tiered immediately after
being uploaded to HyperStore), leave the "Prefix" attribute empty. Bridge Mode does not support fil-
tering by prefix. Also, Bridge Mode does not support filtering by tag(s).
64
1.2. Supported S3 Operations
1.2.61. PutBucketLogging
Set the logging parameters for a bucket and to specify permissions for who can view and modify the logging
parameters.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutBucketLogging
Note For a bucket that has bucket logging enabled, bucket logs (server access logs) are generated
every 10 minutes by a HyperStore system cron job, if there was activity for that bucket during that inter-
val.
Note If you are using bucket logging in your service, and if you use a load balancer in front of your S3
Service nodes, you should configure your S3 Service to support the HTTP X-Forwarded-For header.
This will enable bucket logs to record the true originating IP address of S3 requests, rather than the
load balancer IP address. By default the S3 Service does not support the X-Forwarded-For header.
You can enable support for this header using the system configuration file s3.xml.erb.
1.2.62. PutBucketNotificationConfiguration
Enables notifications of specified events for a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutBucketNotificationConfiguration
65
Chapter 1. S3 API
Note In the current HyperStore release, only the bucket owner is allowed to submit this request and
the bucket owner must also be the owner of the destination Queue.
Note HyperStore's bucket notification feature and its SQS Service (for notification message queueing
and delivery) are disabled by default. Before you can use this feature it must be enabled by a system
administrator.
l s3:ObjectCreated:*
l s3:ObjectCreated:Put
l s3:ObjectCreated:Post
l s3:ObjectCreated:Copy
l s3:ObjectCreated:CompleteMultipartUpload
l s3:ObjectRemoved:*
l s3:ObjectRemoved:Delete
l s3:ObjectRemoved:DeleteMarkerCreated
1.2.63. PutBucketOwnershipControls
Creates or modifies OwnershipControls for a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutBucketOwnershipControls
66
1.2. Supported S3 Operations
1.2.64. PutBucketPolicy
Applies an S3 bucket policy to an S3 bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutBucketPolicy
For examples of the kinds of things you can do with bucket policies, see the AWS documentation: Bucket
Policy Examples
Within a policy's Statement block(s), HyperStore support for policy statement elements and their values
is as follows:
o Sid -- Same as AWS: Custom string identifying the statement, for example "Statement1" or "Only
allow access from partner source IPs"
o Effect -- Same as AWS: "Allow" or "Deny"
o Principal -- The following formats are supported:
n "*" -- Statement applies to all users (also known as "anonymous access").
n {"CanonicalUser": "<canonicalUserId>"} -- Statement applies to the specified Hyper-
Store account root user and to IAM users under that account.
n {"CanonicalUser": ["<canonicalUserId>", "<canonicalUserId>",...]} -- Statement applies
to the specified HyperStore account root users and to IAM users under those accounts.
n {"AWS":"arn:aws:iam::<canonicalUserId>:root"} -- Statement applies to the specified
HyperStore account root user and to IAM users under that account.
n {"AWS":"arn:aws:iam::<canonicalUserId>:user/<iamUserName>"} -- Statement applies
to the specified IAM user. In this format the <canonicalUserId> is that of the parent
account root user.
Note
* Be careful to correctly spell the principal type (highlighted in bold above).
67
Chapter 1. S3 API
by an IAM policy. A bucket policy by itself is not sufficient to grant an IAM user
access to resources within the bucket. This is consistent with AWS behavior.
Within bucket policy statements, HyperStore supports only the following Action values (also known as per-
mission keywords).
Note For information about how to use Action values in a bucket policy, see the AWS documentation
on Specifying Permissions in a Policy.
Object Actions
l s3:AbortMultipartUpload
l s3:BypassGovernanceRetention
l s3:DeleteObject
l s3:DeleteObjectTagging
l s3:DeleteObjectVersion
l s3:DeleteObjectVersionTagging
l s3:GetObject
l s3:GetObjectAcl
l s3:GetObjectLegalHold
l s3:GetObjectRetention
l s3:GetObjectTagging
l x3:GetObjectTorrent
l s3:GetObjectVersion
l s3:GetObjectVersionAcl
l s3:GetObjectVersionTagging
l s3:ListMultipartUploadParts
l s3:PutObject
l s3:PutObjectAcl
68
1.2. Supported S3 Operations
l s3:PutObjectLegalHold
l s3:PutObjectRetention
l s3:PutObjectTagging
l s3:PutObjectVersionAcl
l s3:PutObjectVersionTagging
l s3:RestoreObject
Bucket Actions
l s3:CreateBucket
l s3:DeleteBucket
l s3:ListBucket
l s3:ListBucketMultipartUploads
l s3:ListBucketVersions
l s3:DeleteBucketPolicy
l s3:DeleteBucketWebsite
l s3:GetBucketAcl
l s3:GetBucketCORS
l s3:GetBucketLocation
l s3:GetBucketLogging
l s3:GetBucketNotification
l s3:GetBucketObjectLockConfiguration
l s3:GetBucketPolicy
l s3:GetBucketRequestPayment
l s3:GetBucketTagging
l s3:GetBucketVersioning
l s3:GetBucketWebsite
l s3:GetInventoryConfiguration
l s3:GetLifecycleConfiguration
l s3:GetReplicationConfiguration
l s3:PutBucketAcl
l s3:PutBucketCORS
l s3:PutBucketLogging
l s3:PutBucketNotification
l s3:PutBucketObjectLockConfiguration
l s3:PutBucketPolicy
l s3:PutBucketRequestPayment
l s3:PutBucketTagging
l s3:PutBucketVersioning
69
Chapter 1. S3 API
l s3:PutBucketWebsite
l s3:PutInventoryConfiguration
l s3:PutLifecycleConfiguration
l s3:PutReplicationConfiguration
Note Like AWS, the HyperStore system supports the use of a wildcard in your Action configuration
("Action":["s3:*"]). When an Action wildcard is used together with an object-level Resource element
("arn:aws:s3:::<bucketName>/*" or "arn:aws:s3:::<bucketName>/<objectName>"), the wildcard denotes
all the Object actions that HyperStore supports. When an Action wildcard is used together with
bucket-level Resource element ("arn:aws:s3:::<bucketName>"), the wildcard denotes all the Bucket
actions and Bucket Subresource actions that HyperStore supports.
Within bucket policy statements, HyperStore supports only the following Condition operators and keys.
Note For information about how to use condition operators and keys in a bucket policy, see the AWS
documentation on Specifying Conditions in a Policy.
Condition Operators
l ForAllValues:StringLike
l ForAnyValue:StringLike
l IpAddress
Note If the HyperStore system uses load balancers in front of the HyperStore S3 Service, then IP
address based bucket policies will only work if system administrators have enabled the use of
PROXY Protocol between the load balancers and the S3 Service.
l NotIpAddress
l NumericEquals
l NumericNotEquals
l NumericLessThan
l NumericLessThanEquals
l NumericGreaterThan
l NumericGreaterThanEquals
l StringEquals
l StringNotEquals
l StringEqualsIgnoreCase
l StringNotEqualsIgnoreCase
l StringLike
l StringNotLike
70
1.2. Supported S3 Operations
Condition Keys
l "aws:CurrentTime"
l "aws:EpochTime"
l "aws:Referer"
l "aws:SecureTransport"
l "aws:SourceIp"
l "aws:TokenIssueTime"
l "aws:UserAgent"
l "s3:delimiter"
l "s3:ExistingObjectTag"
l "s3:max-keys"
l "s3:object-lock-legal-hold"
l "s3:object-lock-mode"
l "s3:object-lock-remaining-retention-days"
l "s3:object-lock-retain-until-date"
l "s3:prefix"
l "s3:RequestObjectTag"
l "s3:RequestObjectTagKeys"
l "s3:VersionId"
l "s3:x-amz-acl"
l s3:x-amz-content-sha256
Note To deny access via pre-signed URLs you can create a Deny policy statement in which the
condition denied is "s3:x-amz-content-sha256": "UNSIGNED-PAYLOAD".
l "s3:x-amz-copy-source"
l "s3:x-amz-grant-full-control"
l "s3:x-amz-grant-read"
l "s3:x-amz-grant-read-acp"
l "s3:x-amz-grant-write"
l "s3:x-amz-grant-write-acp"
l "s3:x-amz-metadata-directive"
l "s3:x-amz-object-ownership"
l "s3:x-amz-server-side-encryption"
l "s3:x-amz-server-side-encryption-aws-kms-key-id"
l "saml:namequalifier"
l "saml:sub"
l "saml:sub_type"
71
Chapter 1. S3 API
1.2.65. PutBucketReplication
Creates a replication configuration or replaces an existing one.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: PutBucketReplication
Note
* Unlike Amazon S3, HyperStore does not require that you set up an IAM Role (or anything analogous)
in order to use bucket replication. Also, HyperStore does not require that the destination bucket be in a
different region than the source bucket. With HyperStore you can replicate to a destination bucket that’s
in the same region as the source bucket, if you want to.
* Like Amazon S3, HyperStore bucket replication requires that versioning must be enabled (using the
"PutBucketVersioning" (page 74) operation) on both the source bucket and the destination bucket.
* Do not set a cross-region replication configuration and a bucket lifecycle rule for auto-tiering on the
same source bucket.
This header is required only if the destination bucket is not in the same Hyper-
Store system as the source bucket. Do not use this header if the destination
bucket is in the same HyperStore system as the source bucket.
x-gmt-crr-cre- Access key and secret key for the user account that HyperStore should use to See
dentials write to the destination bucket in the destination S3 system, in format <access- description
key>:<secret-key>. For example, 00caf3940d-
c923c59406:Ku0bMR0H5nSA7t8N+ngP6uPPTINSxJ/Q2olCMexx. This user
account must have write permissions on the destination bucket. For example,
72
1.2. Supported S3 Operations
This header is required only if the destination bucket is not in the same Hyper-
Store system as the source bucket. Do not use this header if the destination
bucket is in the same HyperStore system as the source bucket.
Note
* Use the same "Bucket" value formatting as in the Amazon S3 API spec, i.e. arn:aws:s3:::<buck-
etname>.
* As with the Amazon S3 API specification, for HyperStore the "Role" element must be included in the
PUT Bucket replication request. However, HyperStore ignores the "Role" element’s value (so, you can
use any random string as its value). HyperStore does not use an IAM role or anything analogous when
implementing cross-region replication.
* If you include the "StorageClass element" in the request, HyperStore ignores its value.
1.2.66. PutBucketTagging
Sets the tags for a bucket.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: PutBucketTagging
l For each bucket, each tag key must be unique, and each tag key can have only one value.
l Maximum number of tags per bucket – 50
l Maximum key length – 128 Unicode characters in UTF-8
l Maximum value length – 256 Unicode characters in UTF-8
73
Chapter 1. S3 API
1.2.67. PutBucketVersioning
Sets the versioning state of an existing bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutBucketVersioning
Note Do not enable versioning on a bucket that is configured for auto-tiering to Azure, Google Cloud,
or Spectra BlackPearl. Auto-tiering to these destinations will not work properly for buckets that have ver-
sioning enabled.
1.2.68. PutBucketWebsite
Sets the configuration of the website that is specified in the website subresource.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutBucketWebsite
74
1.2. Supported S3 Operations
o RedirectAllRequestsTo
n HostName
n Protocol
1.2.69. PutObject
Adds an object to a bucket.
Along with the common headers, HyperStore supports the operation-specific headers listed below.
For operation details and examples see the AWS documentation: PutObject
Note Along with the information about this header (and the x-amz-checksum-<algrorithm> head-
ers below) in the AWS documentation for this S3 API operation, overviews of the AWS S3 "Addi-
tional Checksum" feature are available in the AWS documentation "Checking Object Integrity"
and the AWS blog post "Additional Checksum Algorithms for Amazon S3". Note that if the
algorithm specified by x-amz-sdk-checksum-algorithm: <algorithm> is different than the
algorithm specified in the x-amz-checksum-<algorithm>: <checksum-value> header (one of the
four headers listed below), HyperStore rejects the request with an HTTP 400 error.
l x-amz-checksum-crc32
l x-amz-checksum-crc32c
l x-amz-checksum-sha1
l x-amz-checksum-sha256
l x-amz-grant-full-control
l x-amz-grant-read
l x-amz-grant-read-acp
l x-amz-grant-write
l x-amz-grant-write-acp
l x-amz-meta-*
l x-amz-object-lock-legal-hold
l x-amz-object-lock-mode
l x-amz-object-lock-retain-until-date
l x-amz-server-side-encryption
75
Chapter 1. S3 API
l x-amz-server-side-encryption-customer-algorithm
l x-amz-server-side-encryption-customer-key
l x-amz-server-side-encryption-customer-key-MD5
l x-amz-storage-class
Note HyperStore ignores the value of the x-amz-storage-class header and treats all requests as
being for storage class STANDARD.
l x-amz-tagging
l x-amz-website-redirect-location
1.2.70. PutObjectAcl
Uses the acl subresource to set the access control list (ACL) permissions for an object that already exists in a
bucket.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: PutObjectAcl
76
1.2. Supported S3 Operations
l x-amz-grant-read
l x-amz-grant-read-acp
l x-amz-grant-write
l x-amz-grant-write-acp
1.2.71. PutObjectLegalHold
Applies a Legal Hold configuration to the specified object.
Along with the common headers, HyperStore supports the operation-specific parameters and elements listed
below.
For operation details and examples see the AWS documentation: PutObjectLegalHold
1.2.72. PutObjectLockConfiguration
Places an Object Lock configuration on the specified bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutObjectLockConfiguration
77
Chapter 1. S3 API
1.2.73. PutObjectRetention
Places an Object Retention configuration on an object.
Along with the common headers, HyperStore supports the operation-specific parameters, headers, and ele-
ments listed below.
For operation details and examples see the AWS documentation: PutObjectRetention
1.2.74. PutObjectTagging
Sets the supplied tag-set to an object that already exists in a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutObjectTagging
l For each object, each tag key must be unique, and each tag key can have only one value.
l Maximum number of tags per object – 10
78
1.2. Supported S3 Operations
1.2.75. PutPublicAccessBlock
Creates or modifies the PublicAccessBlock configuration for a bucket.
Along with the common headers, HyperStore supports the operation-specific elements listed below.
For operation details and examples see the AWS documentation: PutPublicAccessBlock
79
Chapter 1. S3 API
1.2.76. RestoreObject
Restores a tiered object back into HyperStore.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: RestoreObject
Note In the context of the HyperStore system, this standard S3 operation is for temporarily restoring a
copy of an object that has been auto-tiered to a tiering destination, such as Amazon S3 or Amazon Gla-
cier.
l x-amz-checksum-crc32
l x-amz-checksum-crc32c
l x-amz-checksum-sha1
l x-amz-checksum-sha256
Note For the sake of S3 API compatibility, HyperStore's S3 Service allows the request elements
GlacierJobParameters and Tier to be included in a "RestoreObject" request -- but in the current
HyperStore release these elements will have no effect on how the restore request is imple-
mented. These elements pertain only to objects tiered to Glacier, and specifically the way in
which tiered objects in AWS Glacier will be temporarily retrieved into AWS S3 (for one day) so
that they then can be restored from AWS S3 to your HyperStore system for your specified num-
ber of Days. For this purpose Standard retrieval (the default) from Glacier will always used.
1.2.77. UploadPart
Uploads a part in a multipart upload.
Along with the common headers, HyperStore supports the operation-specific headers listed below.
For operation details and examples see the AWS documentation: UploadPart
80
1.2. Supported S3 Operations
Note Along with the information about this header (and the x-amz-checksum-<algrorithm> head-
ers below) in the AWS documentation for this S3 API operation, overviews of the AWS S3 "Addi-
tional Checksum" feature are available in the AWS documentation "Checking Object Integrity"
and the AWS blog post "Additional Checksum Algorithms for Amazon S3". Note that if the
algorithm specified by x-amz-sdk-checksum-algorithm: <algorithm> is different than the
algorithm specified in the x-amz-checksum-<algorithm>: <checksum-value> header (one of the
four headers listed below), HyperStore rejects the request with an HTTP 400 error.
l x-amz-checksum-crc32
l x-amz-checksum-crc32c
l x-amz-checksum-sha1
l x-amz-checksum-sha256
l x-amz-server-side-encryption
l x-amz-server-side-encryption-customer-algorithm
l x-amz-server-side-encryption-customer-key
l x-amz-server-side-encryption-customer-key-MD5
1.2.78. UploadPartCopy
Uploads a part by copying data from an existing object as data source.
Along with the common headers, HyperStore supports the operation-specific headers and elements listed
below.
For operation details and examples see the AWS documentation: UploadPartCopy
81
Chapter 1. S3 API
l x-amz-copy-source-range
l x-amz-source-expected-bucket-owner
82
Chapter 2. IAM API
2.1. Introduction
HyperStore provides limited support for the Amazon Web Services Identity and Access Management (IAM)
API. This support enables each HyperStore user, under his or her HyperStore user account, to create IAM
groups and IAM users and IAM roles. The HyperStore user -- also known as the "account root user" -- can then
grant those IAM groups, users, and roles permissions to perform certain actions (such as reading or writing
objects in a particular bucket or buckets). As with Amazon, the means by which a HyperStore account root user
grants such permissions to IAM groups, users, and roles is by creating and attaching "managed" IAM policies
to IAM groups, users, and roles, and/or by creating and embedding "inline" IAM policies for IAM groups, users,
and roles. By default newly created IAM entities have no permissions; they gain permissions only by their
association with managed or inline IAM policies.
In the HyperStore system all S3 object data in IAM users' buckets belongs to the parent HyperStore user
account. Consequently, if an IAM user is deleted by their HyperStore parent user, the IAM user's data is not
deleted from the system.
To access the IAM Service, HyperStore users need S3 access credentials. When users are created in Hyper-
Store, S3 access credentials are automatically created for the users.
If users are using a third party IAM client to access the HyperStore IAM Service, the users can obtain their S3
access credentials by logging in to the CMC and going to the Security Credentials page (via the drop-down
menu under the user login name). They can then supply those credentials to the third party IAM client applic-
ation.
If users are using the CMC's built-in IAM client, the CMC automatically uses the user's S3 credentials to access
the IAM service. Through the CMC's IAM section, HyperStore users can create IAM groups and users and so
on.
83
Chapter 2. IAM API
ent application.
l IAM users cannot use the HyperStore SQS Service.
The IAM Service is enabled by default system configuration. To view the current values of all IAM related con-
figuration settings in your system, on the Config Controller node run the command hsctl config get iam. For
descriptions of these settings, see the "HyperStore Configuration Settings" section of the Cloudian HyperStore
Administrator's Guide.
As noted above, to access the IAM Service a user needs S3 access credentials. The pre-configured default sys-
tem administrative user -- the user named "admin" -- does not have S3 access credentials by default. Con-
sequently, if you are logged into the CMC as the "admin" user and you go to the CMC's IAM section you will
see the following error displayed:
"No valid Access Key detected. Cannot connect to the IAM Service."
If you want to use the functionality in the CMC's IAM section as the "admin" user, you must create S3 cre-
dentials for this user. While logged into the CMC as the "admin" user, go to the Security Credentials page (via
the drop-down menu under the login name). Then in the S3 Access Credentials section of the page, click
Create New Key. This creates S3 access credentials for the "admin" user. Now you can use the CMC's
IAM section without getting an access key error.
Note IAM users created by the "admin" user cannot create buckets or perform other S3 operations.
Such IAM users can only perform RBAC based administrative operations (see the section below), if
granted permissions by the "admin" user.
l Allow HyperStore system admins, group admins, or regular users to execute certain read-only Hyper-
Store administrative functions by submitting a request to the IAM Service.
l Allow HyperStore system admins, group admins, or regular users to grant their IAM users permission to
execute those same read-only HyperStore administrative functions.
84
2.1. Introduction
For more information, including information about the client tool that HyperStore provides to help you use this
feature, see "Role-Based Access to Admin API Operations" in the Cloudian HyperStore Admin
API Reference.
If a HyperStore user creates IAM groups, users, and/or roles, and then subsequently you delete that Hyper-
Store user from the system, all IAM resources associated with that HyperStore user will also be deleted from
the system. That includes IAM groups, users, roles, and policies that the HyperStore user created, the security
credentials of those IAM users, and any object data that those IAM users have stored in the system.
If rather than deleting the HyperStore user you suspend the HyperStore user (make the user inactive), then
any IAM groups, users, and/or roles that the HyperStore user created will be unable to access any HyperStore
services (just like the suspended HyperStore user will be unable to access HyperStore services). If you sub-
sequently make the HyperStore user active again, then IAM groups, users, and roles under that HyperStore
user will again be able to access HyperStore services.
In a multi-region HyperStore system, the IAM Service runs only on nodes in the default service region.
DNS
Be sure to configure the IAM endpoint domain in your DNS environment. For more information see the "DNS
Set-Up" section of the Cloudian HyperStore Administrator's Guide.
Information about requests processed by the IAM Service are logged to cloudian-iam-request-info.log, which
exists on each node in the default service region.For more information see the "Logging" section of the Cloud-
ian HyperStore Administrator's Guide.
Users can access and use the HyperStore IAM Service either through the Cloudian Management Console
(CMC) or a third party client application that supports IAM calls. Whether using the CMC or a third party client
application, application users must have S3 access credentials (access key ID and secret key) in order to use
the HyperStore IAM Service.
85
Chapter 2. IAM API
2.1.2.2. Accessing the IAM Service with a Third Party Client Application
Third party or custom client applications can access the HyperStore IAM Service at these service endpoints:
http://iam.<organization-domain>:16080
https://iam.<organization-domain>:16443
HyperStore supports the standard IAM request line formatting, for example:
http://iam.enterprise.com:16080/?Action=<action-name>&<Parameter-name>=<value>
Note that:
l These are the default service endpoints for the HyperStore IAM Service. System administrators can cus-
tomize the endpoints.
l The HyperStore IAM Service by default uses a self-signed certificate for its HTTPS listener, so if you are
using HTTPS to access the service your client application must be configured to allow self-signed cer-
tificates.System administrators can replace the default self-signed certificate with a CA-signed cer-
tificate.
l You must configure your DNS environment to resolve the IAM Service endpoint as described in DNS
Set-Up.
l System administrators must configure the DNS environment to resolve the IAM Service endpoint as
described in "DNS Set-Up" in the Cloudian HyperStore Installation Guide.
2.1.2.3. Creating S3 Access Credentials for the Default System Admin User
If you want the default HyperStore system admin user -- the user whose user ID is "admin" in the CMC -- to be
able to use the IAM Service, do the following:
1. Log into the CMC as the "admin" user. (You will see that an IAM tab now displays in the CMC interface,
but clicking that tab will return an authorization error until after you've completed Steps 2 and 3 below.)
2. On the right side of the CMC's top navigation bar, hold your cursor over your login name ("admin") and
then in the drop-down menu select Security Credentials.
3. In the security credentials page's S3 Access Credentials section, click Create New Key.
This creates S3 access credentials (access key ID and secret key) for the "admin" user. S3 access credentials
are required in order to access HyperStore's IAM Service. The CMC will use these credentials automatically
when the "admin" user uses the CMC to access IAM functions (on the IAM tab). Or if you are using a third party
application to access the HyperStore IAM Service, you will need to provide the credentials to that application.
Note If you created any additional system admin users prior to the HyperStore 7.1 release, and if you
want those system admin users to be able to use the IAM Service, those system admin users will need
to complete the steps described above to create S3 access credentials for themselves.
Regular users and group admins created in the CMC are given S3 credentials automatically as part of
86
2.1. Introduction
the user creation process, so such users already have the credentials that they need to access the IAM
Service. Also, additional system admins that you create in HyperStore 7.1 or later are automatically
given S3 credentials.
l Action
l Version
Note Unlike Amazon's IAM implementation, in HyperStore's IAM implementation the "Version"
request parameter is not required.
l X-Amz-Algorithm
l X-Amz-Credential
l X-Amz-Date
l X-Amz-Signature
l X-Amz-SignedHeaders
Note Like Amazon's IAM implementation, in HyperStore's IAM implementation you can either use
query parameters or the HTTP header Authorization to submit the authentication data required by the
Signature Version 2 or Signature Version 4 protocol. For more information on this topic see the
Amazon documentation topic Task 4: Add the Signature to the HTTP Request.
l AccessDenied
l IncompleteSignature
l InternalFailure
l InvalidAction
l InvalidClientTokenId
l InvalidParameterCombination
l InvalidParameterValue
l InvalidQueryParameter
l MalformedQueryString
l MissingAction
l MissingAuthenticationToken
87
Chapter 2. IAM API
l MissingParameter
l OptInRequired
l RequestExpired
l ServiceUnavailable
l ThrottlingException
l ValidationError
For detailed descriptions of each Action and its associated parameters and elements, see the AWS doc-
umentation links.
Note For all "List" actions (such as "ListAccessKeys", "ListGroups" and so on): The HyperStore
IAM Service does not support truncation. If the client request includes the "MaxItems" and "Marker"
request parameters, the HyperStore IAM Service ignores those parameters. Accordingly, in the
response bodies the "IsTruncated" response element will always be "false".
2.2.1. AddUserToGroup
Adds the specified user to the specified group.
For action details and examples see the AWS documentation: AddUserToGroup
2.2.1.2. Errors
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.2. AttachGroupPolicy
Attaches the specified managed policy to the specified IAM group.
For action details and examples see the AWS documentation: AttachGroupPolicy
88
2.2. Supported IAM Actions
2.2.2.2. Errors
l InvalidInput
l LimitExceeded
l NoSuchEntity
l PolicyNotAttachable
l ServiceFailure
2.2.3. AttachRolePolicy
Attaches the specified managed policy to the specified IAM role.
For action details and examples see the AWS documentation: AttachRolePolicy
2.2.3.2. Errors
l InvalidInput
l LimitExceeded
l NoSuchEntity
l PolicyNotAttachable
l ServiceFailure
l UnmodifiableEntity
2.2.4. AttachUserPolicy
Attaches the specified managed policy to the specified user.
For action details and examples see the AWS documentation: AttachUserPolicy
89
Chapter 2. IAM API
2.2.4.2. Errors
l InvalidInput
l LimitExceeded
l NoSuchEntity
l PolicyNotAttachable
l ServiceFailure
2.2.5. CreateAccessKey
Creates a new secret access key and corresponding access key ID for the specified user.
For action details and examples see the AWS documentation: CreateAccessKey
2.2.5.3. Errors
l LimitExceeded
l NoSuchEntity
l ServiceFailure
Note By default the HyperStore system allows only two key pairs per IAM user. Note that an IAM user's
inactive credentials (if any) count toward this limit, as well as active credentials.
2.2.6. CreateGroup
Creates a new group.
For action details and examples see the AWS documentation: CreateGroup
90
2.2. Supported IAM Actions
Note For HyperStore, within the "Group" object the system-generated "GroupId" attribute value
will be in this format: <Canonical-UID-of-HyperStore-User>|<IAM-groupname>
The canonical user ID is that of the HyperStore user account under which the IAM group is cre-
ated. The IAM group name will be preceded by the path if any is specified when the group is cre-
ated.
2.2.6.3. Errors
l EntityAlreadyExists
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.7. CreatePolicy
Creates a new managed policy under your HyperStore account.
For action details and examples see the AWS documentation: CreatePolicy
Note For information about HyperStore's IAM policy document support see "Supported IAM
Policy Elements" (page 124).
l PolicyName
91
Chapter 2. IAM API
2.2.7.3. Errors
l EntityAlreadyExists
l InvalidInput
l LimitExceeded
l MalformedPolicyDocument
l ServiceFailure
2.2.8. CreatePolicyVersion
Creates a new version of the specified managed policy.
For action details and examples see the AWS documentation: CreatePolicyVersion
Note For information about HyperStore's IAM policy document support see "Supported IAM
Policy Elements" (page 124).
l SetAsDefault
2.2.8.3. Errors
l InvalidInput
l LimitExceeded
l MalformedPolicyDocument
l NoSuchEntity
l ServiceFailure
2.2.9. CreateRole
Creates a new role under your account.
92
2.2. Supported IAM Actions
For action details and examples see the AWS documentation: CreateRole
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRoleWithSAML",
"Principal": {"Federated": "arn:aws:iam::123456789012:saml-provider/adfs"},
"Condition": {"StringEquals": {"saml:aud":
"https://cmc.mycloudianhyperstore.com:8443/saml/sso"}}
}
}
The example policy above says to trust SAML assertions from the "adfs" SAML Provider to use STS:As-
sumeRoleWithSAML for this role but only if the SAML assertion contains the recipient string matching https://cm-
c.mycloudianhyperstore.com:8443/saml/sso.
IMPORTANT ! The "saml:aud" value must exactly match what is submitted by the identity provider sys-
tem (IdP). This value will come from this element in the HyperStore SAML Metadata Document for
IdP Setup (emphasis added):
For Condition in a trust policy, HyperStore supports only the StringEquals condition operator and only the fol-
lowing condition keys:
l aws:TokenIssueTime
l sts:ExternalId
l saml:aud
l saml:doc
l saml:iss
l saml:namequalifier
93
Chapter 2. IAM API
l saml:sub
l saml:sub_type
2.2.9.3. Errors
l ConcurrentModification
l EntityAlreadyExists
l InvalidInput
l LimitExceeded
l MalformedPolicyDocument
l ServiceFailure
2.2.10. CreateSAMLProvider
Creates an IAM resource that describes an identity provider (IdP) that supports SAML 2.0.
For action details and examples see the AWS documentation: CreateSAMLProvider
2.2.10.3. Errors
l EntityAlreadyExists
l LimitExceeded
l ServiceFailure
2.2.11. CreateUser
Creates a new IAM user under your account.
For action details and examples see the AWS documentation: CreateUser
94
2.2. Supported IAM Actions
Note For HyperStore, within the "User" object the system-generated "UserId" attribute value will
be in this format: <Canonical-UID-of-HyperStore-User>|<IAM-username>
The canonical user ID is that of the HyperStore user account under which the IAM user is cre-
ated. The IAM user name will be preceded by the path if any is specified when the user is cre-
ated.
2.2.11.3. Errors
l EntityAlreadyExists
l LimitExceeded
l NoSuchEntity
l ServiceFailure
Note IAM users that you create under your HyperStore user account will not be allowed to log into the
CMC or to use the CMC as their S3 client application. IAM users will need to use an S3 client applic-
ation other than the CMC to access the HyperStore S3 Service.
2.2.12. CreateVirtualMFADevice
Creates a new virtual MFA device for the HyperStore account root. After creating the virtual MFA, use
"EnableMFADevice" (page 103) to attach the MFA device to an IAM user.
For action details and examples see the AWS documentation: CreateVirtualMFADevice
95
Chapter 2. IAM API
2.2.12.3. Errors
l ConcurrentModification
l EntityAlreadyExists
l InvalidInput
96
2.2. Supported IAM Actions
l LimitExceeded
l ServiceFailure
2.2.13. DeactivateMFADevice
Deactivates the specified MFA device and removes it from association with the user name for which it was ori-
ginally enabled.
For action details and examples see the AWS documentation: DeactivateMFADevice
2.2.13.2. Errors
l EntityTemporarilyUnmodifiable
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.14. DeleteAccessKey
Deletes the access key pair associated with the specified IAM user.
For action details and examples see the AWS documentation: DeleteAccessKey
2.2.14.2. Errors
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.15. DeleteGroup
Deletes the specified IAM group.
For action details and examples see the AWS documentation: DeleteGroup
97
Chapter 2. IAM API
2.2.15.2. Errors
l DeleteConflict
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.16. DeleteGroupPolicy
Deletes the specified inline policy that is embedded in the specified IAM group.
For action details and examples see the AWS documentation: DeleteGroupPolicy
2.2.16.2. Errors
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.17. DeletePolicy
Deletes the specified managed policy.
For action details and examples see the AWS documentation: DeletePolicy
2.2.17.2. Errors
l DeleteConflict
l InvalidInput
l LimitExceeded
98
2.2. Supported IAM Actions
l NoSuchEntity
l ServiceFailure
2.2.18. DeletePolicyVersion
Deletes the specified version from the specified managed policy.
Note You cannot delete the default version of a policy using this operation. To delete the default ver-
sion a policy, use "DeletePolicy" (page 98).
For action details and examples see the AWS documentation: DeletePolicyVersion
2.2.18.2. Errors
l DeleteConflict
l InvalidInput
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.19. DeleteRole
Deletes the specified role.
For action details and examples see the AWS documentation: DeleteRole
2.2.19.2. Errors
l ConcurrentModification
l DeleteConflict
l LimitExceeded
l NoSuchEntity
l ServiceFailure
l UnmodifiableEntity
99
Chapter 2. IAM API
2.2.20. DeleteRolePolicy
Deletes the specified inline policy that is embedded in the specified IAM role.
For action details and examples see the AWS documentation: DeleteRolePolicy
2.2.20.2. Errors
l LimitExceeded
l NoSuchEntity
l ServiceFailure
l UnmodifiableEntity
2.2.21. DeleteSAMLProvider
Deletes a SAML provider resource in IAM.
For action details and examples see the AWS documentation: DeleteSAMLProvider
2.2.21.2. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.22. DeleteUser
Deletes the specified IAM user.
For action details and examples see the AWS documentation: DeleteUser
100
2.2. Supported IAM Actions
2.2.22.2. Errors
l DeleteConflict
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.23. DeleteUserPolicy
Deletes the specified inline policy that is embedded in the specified IAM user.
For action details and examples see the AWS documentation: DeleteUserPolicy
2.2.23.2. Errors
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.24. DeleteVirtualMFADevice
Deletes a virtual MFA device.
For action details and examples see the AWS documentation: DeleteVirtualMFADevice
2.2.24.2. Errors
l DeleteConflict
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.25. DetachGroupPolicy
Removes the specified managed policy from the specified IAM group.
101
Chapter 2. IAM API
For action details and examples see the AWS documentation: DetachGroupPolicy
2.2.25.2. Errors
l InvalidInput
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.26. DetachRolePolicy
Removes the specified managed policy from the specified role.
For action details and examples see the AWS documentation: DetachRolePolicy
2.2.26.2. Errors
l InvalidInput
l LimitExceeded
l NoSuchEntity
l ServiceFailure
l UnmodifiableEntity
2.2.27. DetachUserPolicy
Removes the specified managed policy from the specified user.
For action details and examples see the AWS documentation: DetachUserPolicy
102
2.2. Supported IAM Actions
2.2.27.2. Errors
l InvalidInput
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.28. EnableMFADevice
Enables the specified MFA device and associates it with the specified IAM user.
For action details and examples see the AWS documentation: EnableMFADevice
2.2.28.2. Errors
l EntityAlreadyExists
l EntityTemparilyUnmodifiable
l InvalidAuthenticationCode
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.29. GetGroup
Returns a list of IAM users that are in the specified IAM group.
For action details and examples see the AWS documentation: GetGroup
Note The "Marker" and "MaxItems" request parameters, if submitted, are ignored.
103
Chapter 2. IAM API
Note For HyperStore, within the "Group" object the system-generated "GroupId" attribute value
will be in this format: <Canonical-UID-of-HyperStore-User>|<IAM-groupname>
The canonical user ID is that of the HyperStore user account under which the IAM group was cre-
ated. The IAM group name will be preceded by the path if any was specified when the group
was created.
l IsTruncated
l Users.member.N
2.2.29.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.30. GetGroupPolicy
Retrieves the specified inline policy document that is embedded in the specified IAM group.
For action details and examples see the AWS documentation: GetGroupPolicy
104
2.2. Supported IAM Actions
2.2.30.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.31. GetPolicy
Retrieves information about the specified managed policy, including the policy's default version and the total
number of IAM users, groups, and roles to which the policy is attached.
For action details and examples see the AWS documentation: GetPolicy
2.2.31.3. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.32. GetPolicyVersion
Retrieves information about the specified version of the specified managed policy, including the policy doc-
ument.
For action details and examples see the AWS documentation: GetPolicyVersion
105
Chapter 2. IAM API
2.2.32.3. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.33. GetRole
Retrieves information about the specified role, including the role's path, GUID, ARN, and the role's trust policy
that grants permission to assume the role.
For action details and examples see the AWS documentation: GetRole
2.2.33.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.34. GetRolePolicy
Retrieves the specified inline policy document that is embedded with the specified IAM role.
For action details and examples see the AWS documentation: GetRolePolicy
106
2.2. Supported IAM Actions
2.2.34.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.35. GetSAMLProvider
Returns the SAML provider metadata document that was uploaded when the IAM SAML provider resource
object was created or updated.
For action details and examples see the AWS documentation: GetSAMLProvider
2.2.35.3. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.36. GetUser
Retrieves information about the specified IAM user, including the user's creation date, path, unique ID, and
ARN.
For action details and examples see the AWS documentation: GetUser
107
Chapter 2. IAM API
Note For HyperStore, within the "User" object the system-generated "UserId" attribute value will
be in this format: <Canonical-UID-of-HyperStore-User>|<IAM-username>
The canonical user ID is that of the HyperStore user account under which the IAM user was cre-
ated.The IAM user name will be preceded by the path if any was specified when the user was
created.
2.2.36.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.37. GetUserPolicy
Retrieves the specified inline policy document that is embedded in the specified IAM user.
For action details and examples see the AWS documentation: GetUserPolicy
2.2.37.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.38. ListAccessKeys
Returns information about the access key IDs associated with the specified IAM user.
For action details and examples see the AWS documentation: ListAccessKeys
108
2.2. Supported IAM Actions
2.2.38.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.39. ListAttachedGroupPolicies
Lists all managed policies that are attached to the specified IAM group.
For action details and examples see the AWS documentation: ListAttachedGroupPolicies
2.2.39.3. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.40. ListAttachedRolePolicies
Lists all managed policies that are attached to the specified IAM role.
For action details and examples see the AWS documentation: ListAttachedRolePolicies
109
Chapter 2. IAM API
2.2.40.3. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.41. ListAttachedUserPolicies
Lists all managed policies that are attached to the specified IAM user.
For action details and examples see the AWS documentation: ListAttachedUserPolicies
2.2.41.3. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.42. ListEntitiesForPolicy
Lists all IAM users, groups, and roles that the specified managed policy is attached to.
For action details and examples see the AWS documentation: ListEntitiesForPolicy
110
2.2. Supported IAM Actions
l PolicyGroups.member.N
l PolicyUsers.member.N
2.2.42.3. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.43. ListGroupPolicies
Lists the names of the inline policies that are embedded in the specified IAM group.
For action details and examples see the AWS documentation: ListGroupPolicies
l PolicyNames.member.N
2.2.43.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.44. ListGroups
Lists the IAM groups that have the specified path prefix.
For action details and examples see the AWS documentation: ListGroups
111
Chapter 2. IAM API
2.2.44.3. Errors
l ServiceFailure
2.2.45. ListGroupsForUser
Lists the IAM groups that the specified IAM user belongs to.
For action details and examples see the AWS documentation: ListGroupsForUser
Request Parameters
l UserName
Response Elements
l Groups.member.N
l IsTruncated
Errors
l NoSuchEntity
l ServiceFailure
2.2.46. ListInstanceProfilesForRole
[IAM API Action]
HyperStore does not support the AWS "instance profiles" feature. However, HyperStore does provide limited
support for the ListInstanceProfilesForRole action because some client applications automatically make this
call during certain workflows.
l If the role specified in the request exists, this call will be processed successfully and will return an
empty list (just as if there were no instance profiles for the specified role).
l If the role specified in the request does not exist, this call will return a 404 EntityNotFound error
response.
112
2.2. Supported IAM Actions
2.2.47. ListMFADevices
Lists the MFA devices for an IAM user.
For action details and examples see the AWS documentation: ListMFADevices
2.2.47.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.48. ListPolicies
Lists all the managed policies that are available under your account.
For action details and examples see the AWS documentation: ListPolicies
Note The "Scope" request parameter, if submitted, is ignored and defaults to All. Note however that
only Local policies are currently supported in HyperStore, so the policies returned by this command will
all be Local policies.
113
Chapter 2. IAM API
l Policies.member.N
2.2.48.3. Errors
l ServiceFailure
2.2.49. ListPolicyVersions
Lists information about the versions of the specified managed policy, including the version that is currently set
as the policy's default version.
For action details and examples see the AWS documentation: ListPolicyVersions
l Versions.member.N
2.2.49.3. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.50. ListRolePolicies
Lists the names of the inline policies that are embedded in the specified IAM role.
For action details and examples see the AWS documentation: ListRolePolicies
l PolicyNames.member.N
114
2.2. Supported IAM Actions
2.2.50.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.51. ListRoles
Lists the IAM roles that have the specified path prefix.
For action details and examples see the AWS documentation: ListRoles
l Roles.member.N
2.2.51.3. Errors
l ServiceFailure
2.2.52. ListSAMLProviders
Lists the SAML provider resource objects defined in IAM in the account.
For action details and examples see the AWS documentation: ListSAMLProviders
2.2.52.2. Errors
l ServiceFailure
2.2.53. ListUserPolicies
Lists the names of the inline policies embedded in the specified IAM user.
For action details and examples see the AWS documentation: ListUserPolicies
115
Chapter 2. IAM API
l PolicyNames.member.N
2.2.53.3. Errors
l NoSuchEntity
l ServiceFailure
2.2.54. ListUsers
Lists the IAM users that have the specified path prefix.
For action details and examples see the AWS documentation: ListUsers
l Users.member.N
2.2.54.3. Errors
l ServiceFailure
2.2.55. ListVirtualMFADevices
Lists the virtual MFA devices defined in the HyperStore account root by assignment status.
For action details and examples see the AWS documentation: ListVirtualMFADevices
116
2.2. Supported IAM Actions
2.2.55.3. Errors
Only common errors are returned.
2.2.56. PutGroupPolicy
Adds or updates an inline policy document that is embedded in the specified IAM group.
For action details and examples see the AWS documentation: PutGroupPolicy
117
Chapter 2. IAM API
Note For information about HyperStore's IAM policy document support see "Supported IAM
Policy Elements" (page 124).
l PolicyName
2.2.56.2. Errors
l LimitExceeded
l MalformedPolicyDocument
l NoSuchEntity
l ServiceFailure
2.2.57. PutRolePolicy
Adds or updates an inline policy document that is embedded in the specified IAM role.
For action details and examples see the AWS documentation: PutRolePolicy
2.2.57.2. Errors
l LimitExceeded
l MalformedPolicyDocument
l NoSuchEntity
l ServiceFailure
l UnmodifiableEntity
2.2.58. PutUserPolicy
Adds or updates an inline policy document that is embedded in the specified IAM user.
For action details and examples see the AWS documentation: PutUserPolicy
118
2.2. Supported IAM Actions
Note For information about HyperStore's IAM policy document support see "Supported IAM
Policy Elements" (page 124).
l PolicyName
l UserName
2.2.58.2. Errors
l LimitExceeded
l MalformedPolicyDocument
l NoSuchEntity
l ServiceFailure
2.2.59. RemoveUserFromGroup
Removes the specified user from the specified group.
For action details and examples see the AWS documentation: RemoveUserFromGroup
2.2.59.2. Errors
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.60. ResyncMFADevice
Synchronizes the specified MFA device with its IAM resource object on the HyperStore servers.
For action details and examples see the AWS documentation: ResyncMFADevice
119
Chapter 2. IAM API
l SerialNumber
l UserName
2.2.60.2. Errors
l InvalidAuthenticationCode
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.61. SetDefaultPolicyVersion
Sets the specified version of the specified policy as the policy's default (operative) version.
For action details and examples see the AWS documentation: SetDefaultPolicyVersion
2.2.61.2. Errors
l InvalidInput
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.62. SimulatePrincipalPolicy
Simulate how a set of IAM policies attached to an IAM entity works with a list of API operations and AWS
resources to determine the policies' effective permissions.
For action details and examples see the AWS documentation: SimulatePrincipalPolicy
Note Requests with invalid or unknown actions (such as s3:PetObject) will be rejected with a
400 InvalidInput error. Requests with a wildcard action (such as s3:* ) will also be rejected with
a 400 InvalidInput error.
l MaxItems
120
2.2. Supported IAM Actions
Note The HyperStore IAM Service does not support pagination of results. Therefore if the
request specifies a "MaxItems" value and the simulation produces more than that many results,
the request will be rejected with a 400 InvalidInput error and the error message will indicate that
the "MaxItems" value must be increased or the number of action names must be decreased.
l PolicySourceArn
l ResourceArns.member.N
2.2.62.3. Errors
l InvalidInput
l NoSuchEntity
2.2.63. UpdateAccessKey
Changes the status of the specified access key from Active to Inactive, or vice versa.
For action details and examples see the AWS documentation: UpdateAccessKey
2.2.63.2. Errors
l LimitExceeded
l NoSuchEntity
l ServiceFailure
121
Chapter 2. IAM API
2.2.64. UpdateAssumeRolePolicy
Updates the policy that grants an IAM entity permission to assume a role.
For action details and examples see the AWS documentation: UpdateAssumeRolePolicy
Note For Conditions in a trust policy, HyperStore supports only the StringEquals condition operator
and only the following condition keys:
aws:TokenIssueTime
sts:ExternalId
saml:aud
saml:doc
saml:iss
saml:namequalifier
saml:sub
saml:sub_type
2.2.64.2. Errors
l LimitExceeded
l MalformedPolicyDocument
l NoSuchEntity
l ServiceFailure
l UnmodifiableEntity
2.2.65. UpdateGroup
Updates the name and/or the path of the specified IAM group.
For action details and examples see the AWS documentation: UpdateGroup
122
2.2. Supported IAM Actions
2.2.65.2. Errors
l EntityAlreadyExists
l LimitExceeded
l NoSuchEntity
l ServiceFailure
2.2.66. UpdateRole
Updates the description or maximum session duration setting of a role.
For action details and examples see the AWS documentation: UpdateRole
2.2.66.2. Errors
l NoSuchEntity
l ServiceFailure
l UnmodifiableEntity
2.2.67. UpdateRoleDescription
Although HyperStore supports this Action, it is recommended to use UpdateRole instead.
2.2.68. UpdateSAMLProvider
Updates the metadata document for an existing SAML provider resource object.
HyperStore supports the parameters, response elements, and errors listed below.
For action details and examples see the AWS documentation: UpdateSAMLProvider
123
Chapter 2. IAM API
2.2.68.3. Errors
l InvalidInput
l NoSuchEntity
l ServiceFailure
2.2.69. UpdateUser
Updates the name and/or the path of the specified IAM user.
For action details and examples see the AWS documentation: UpdateUser
2.2.69.2. Errors
l EntityAlreadyExists
l EntityTemporarilyUnmodifiable
l LimitExceeded
l NoSuchEntity
l ServiceFailure
HyperStore supports AWS standard IAM policy formatting and most policy elements for granting S3 or IAM ser-
vice permissions.
For guidance on how to construct IAM policies for S3 service permissions or IAM service permissions, see the
AWS documentation on this topic. For example:
http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html
https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazons3.html
124
2.4. SAML Support
l Actions, Resources, and Condition Keys for Identity And Access Management
https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsid-
entityandaccessmanagement.html
Below is an example of a simple IAM policy document granting permission to list the contents of a bucket
named "bucket1":
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucket1"
}]
}
Note that:
At a high level, the process of setting up and using SAML access for HyperStore works as described below.
l "Downloading the HyperStore SAML Metadata Document for IdP Setup" (page 125)
l "Using the IAM Service to Create SAML Provider Resources" (page 126)
l "Using the IAM Service to Create Roles" (page 127)
l "Using the STS Service to Assume a Role" (page 127)
125
Chapter 2. IAM API
metadata document is specific to your HyperStore system, and provides the IdP with information about how to
submit SAML assertions to HyperStore. The procedure for applying the SAML Service Provider metadata doc-
ument into the IdP will depend on the IdP that you are working with (refer to your IdP's documentation), but
regardless of those particulars you can download the document from the Cloudian Management Console
(CMC) at this URL:
For example:
https://cmc.enterprise.com:8443/static/saml-metadata.xml
If load balancers are configured so that external access to the CMC is through a different port number
than the CMC is listening on internally (which is 8443 by default), then before the downloading of the Hyper-
Store SAML Provider Metadata document a system administrator must run the following commands on the Con-
fig Controller node:
For example:
This will result in the correct CMC external access port being specified within the Service Provider Metadata
document.
You can create SAML provider resources either by using the CMC's Manage Identity Providers page, or by
using a third party IAM client to access the HyperStore IAM Service. If you are using a third party IAM client, the
relevant IAM calls are:
l CreateSAMLProvider
l ListSAMLProviders
l GetSAMLProvider
l UpdateSAMLProvider
l DeleteSAMLProvider
You should create a SAML provider resource for each IdP that will be a trusted source of incoming SAML asser-
tions.
Note S3 credentials are needed to access the HyperStore IAM Service (and the CMC's IAM functions),
and the CMC's system administrative user named "admin" does not have these credentials by default.
For information on creating S3 credentials for the "admin" user so that this user can access the
IAM Service, see "Default 'admin' User Does Not Have S3 Access Credentials" (page 84).
126
2.4. SAML Support
You can create and manage IAM roles either by using the CMC's Manage Roles page, or by using a third party
IAM client. If you are using a third party IAM client to access the HyperStore IAM Service, the relevant IAM calls
are:
l CreateRole
l ListRoles
l GetRole
l UpdateRole
l UpdateAssumRolePolicy
l DeleteRole
l AttachRolePolicy
l ListAttachedRolePolicies
l DetachRolePolicy
l PutRolePolicy
l ListRolePolicies
l GetRolePolicy
l DeleteRolePolicy
Note S3 credentials are needed to access the HyperStore IAM Service (and the CMC's IAM functions),
and the CMC's system administrative user named "admin" does not have these credentials by default.
For information on creating S3 credentials for the "admin" user so that this user can access the
IAM Service, see "Default 'admin' User Does Not Have S3 Access Credentials" (page 84).
2.4.3.1. Limitations
l Role session policies and role tags are not supported.
l Support for Conditions in trust policies is limited; see the CreateRole API call.
There are two options for using this API call to assume a role:
127
Chapter 2. IAM API
l A third party STS client application can be used to submit an AssumeRoleWithSAML API call to Hyper-
Store's STS Service. For more information on accessing this service see "HyperStore Support for the
AWS STS API" (page 131).
l The CMC hosts a single-sign-on (SSO) page to which an IdP can submit a SAML assertion on behalf of
a user who has successfully logged into the IdP. The IdP can submit an HTTP POST to the Location
URL identified within the AssertionConsumerService attribute of the HyperStore SAML Metadata doc-
ument. Based on the submitted SAML assertion contents, the CMC will display a list of Roles for which
the user identified in the assertion is eligible. The user can select a Role from that list, and the CMC will
then submit an AssumeRoleWithSAML request for that Role to the HyperStore STS Service. The CMC
then makes the returned temporary security credentials available for the user to copy to their clipboard,
and the user can then paste the temporary credentials into an S3 application and perform the S3 oper-
ations permitted by the Role.
2.4.4.1. Limitations
Users with temporary security credentials obtained from the HyperStore STS Service:
128
2.4. SAML Support
What users with temporary security credentials can do is access the HyperStore S3 Service by using a third
party S3 client application. Their S3 permissions will be limited to those permissions ascribed to the role that
they have assumed.
129
This page left intentionally blank
Chapter 3. STS API
3.1. Introduction
To facilitate Security Assertion Markup Language (SAML) based access to HyperStore S3 services, Hyper-
Store provides limited support for the Amazon Web Services Security Token Service (STS) API:
l Only a few STS Actions are supported -- for details see "Supported STS Actions".
l HyperStore does not allow users with temporary security credentials (obtained through the STS Ser-
vice) to perform IAM operations. The HyperStore IAM Service will reject requests that contain tem-
porary credentials. Users with temporary credentials can only access the S3 Service (within the
permission restrictions of the roles that such users assume).
l Users with temporary security credentials are not allowed to log into the CMC.
The default STS Service endpoint URLs for HTTP and HTTPS are:
l http://iam.<your-organization-domain>:16080
l https://iam.<your-organization-domain>:16443
Note The STS Service uses the same service endpoint and listening ports as the IAM Service.
To access the STS Service, HyperStore users need S3 access credentials. When users are created in Hyper-
Store, S3 access credentials are automatically created for the users.
If users are using a third party STS client to access the HyperStore STS Service, the users can obtain their S3
access credentials by logging in to the CMC and going to the Security Credentials page (via the drop-down
menu under the user login name). They can then supply those credentials to the third party STS client applic-
ation.
To view the current values of all IAM related configuration settings in your system, on the Config Controller
node run the command hsctl config get iam. For descriptions of these settings, see the "HyperStore Con-
figuration Settings" section of the Cloudian HyperStore Administrator's Guide.
131
Chapter 3. STS API
l Action
l Version
l X-Amz-Algorithm
l X-Amz-Credential
l X-Amz-Date
l X-Amz-Security-Token (only supported for GetCallerIdentity requests)
l X-Amz-Signature
l X-Amz-SignedHeaders
l AccessDeniedException
l InternalFailure
l InvalidAction
l InvalidClientTokenId
l InvalidParameterCombination
l InvalidParameterValue
l MissingAuthenticationToken
l MissingParameter
l ServiceUnavailable
l ValidationError
For detailed descriptions of each Action and its associated parameters and elements, see the AWS doc-
umentation links.
3.2.1. AssumeRole
Returns a set of temporary security credentials that you can use to access S3 resources that you might not nor-
mally have access to.
132
3.2. Supported STS Actions
For action details and examples see the AWS documentation: AssumeRole
Note HyperStore does not allow users with temporary security credentials to perform IAM operations.
3.2.1.3. Errors
l InvalidParameterValue
l NoSuchEntity
3.2.2. AssumeRoleWithSAML
Returns a set of temporary security credentials for users who have been authenticated via a SAML authen-
tication response.
For action details and examples see the AWS documentation: AssumeRoleWithSAML
Note For an overview of HyperStore support for SAML see "SAML Support" (page 125). For more
information about using the STS AssumeRoleWithSAML call with HyperStore see "Using the STS Ser-
vice to Assume a Role" (page 127).
133
Chapter 3. STS API
3.2.2.3. Errors
l ExpiredToken
l InvalidClientTokenId
l InvalidParameterValue
3.2.3. GetCallerIdentity
Returns details about the IAM user or role whose credentials are used to call the operation.
For action details and examples see the AWS documentation: GetCallerIdentity
3.2.3.2. Errors
l ExpiredToken
l InvalidClientTokenId
134
Chapter 4. SQS API
4.1. Introduction
In support of the bucket notifications feature, HyperStore provides limited support for the Amazon Web Ser-
vices Simple Queue Service (SQS) API. The queueing and processing of messages is implemented within the
HyperStore system. Bucket owners can use the S3 API operation "PutBucketNotificationConfiguration"
(page 65) to configure bucket notifications so that when specified S3 operations occur within the bucket -- such
as objects being uploaded to the bucket or deleted from the bucket -- HyperStore publishes a notification mes-
sage to a specified SQS queue.
In the current HyperStore release, there are these limitations to the bucket notifications feature and the SQS
Service:
l A third party SQS client application must be used to interface with the HyperStore SQS Service to per-
form operations such as creating and configuring queues and receiving and deleting queued mes-
sages. The Cloudian Management Console (CMC) does not support SQS operations.
l A third party S3 client application must be used to execute the "PutBucketNotificationConfiguration"
(page 65) operation. The CMC does not support this S3 operation.
l For bucket notifications to an SQS queue to work, the bucket owner must also be the owner of the
SQS queue.
l IAM users cannot use the SQS Service. Only HyperStore account root users can use the SQS Service.
l The HyperStore SQS Service supports many of the Actions from the Amazon SQS API, but not all of
them. For more detail see "SQS Supported Actions" (page 136).
The SQS Service and the bucket notifications feature are disabled by default (HyperStore administrators see
"Enabling the SQS Service and the Bucket Notification Feature" (page 136)). When the SQS Service and
the bucket notifications feature are enabled then:
l A third party SQS client application can be used to submit requests to the HyperStore SQS Service,
such as for creating and configuring a queue. For HyperStore support of SQS Actions see "SQS Sup-
ported Actions" (page 136). The default SQS Service endpoint URL including the port number is
http://sqs.<your-organization-domain>:18090
l A third party S3 client application can be used to submit a PutBucketNotificationConfiguration request
to the HyperStore S3 Service, to configure notifications for an existing bucket. For HyperStore support of
this S3 API method see "PutBucketNotificationConfiguration" (page 65). As noted previously, the
bucket owner must also be the SQS queue owner.
To access the SQS Service, HyperStore users need S3 access credentials. When users are created in Hyper-
Store, S3 access credentials are automatically created for the users.
135
Chapter 4. SQS API
If users are using a third party SQS client to access the HyperStore SQS Service, the users can obtain their S3
access credentials by logging in to the CMC and going to the Security Credentials page (via the drop-down
menu under the user login name). They can then supply those credentials to the third party SQS client applic-
ation.
HyperStore's SQS Service and its bucket notifications feature are disabled by default. To enable the SQS Ser-
vice and the bucket notifications feature, run the following hsctl commands on the Config Controller node:
Note To view the current values of all SQS related configuration settings in your system, run the com-
mand hsctl config get sqs. For descriptions of these settings, see the "HyperStore Configuration Set-
tings" section of the Cloudian HyperStore Administrator's Guide.
DNS
Be sure to configure the SQS endpoint domain in your DNS environment so that the endpoint is resolvable for
SQS clients. For more information see the "DNS Set-Up" section of the Cloudian HyperStore Administrator's
Guide.
Information about requests processed by the SQS Service are logged to cloudian-sqs-request.log, which exists
on each node.For more information see the "Logging" section of the Cloudian HyperStore Administrator's
Guide.
For detailed descriptions of each Action and its associated parameters and elements, see the AWS doc-
umentation links.
Note The HyperStore SQS Service is disabled by default. System administrators can enable the ser-
vice.
136
4.2. SQS Supported Actions
4.2.1. ChangeMessageVisibility
Changes the visibility timeout of a specified message in a queue to a new value.
For action details and examples see the AWS documentation: ChangeMessageVisibility
4.2.1.2. Errors
l AWS.SimpleQueueService.MessageNotInflight
l ReceiptHandleIsInvalid
4.2.2. CreateQueue
Creates a new standard queue.
For action details and examples see the AWS documentation: CreateQueue
Note HyperStore currently only supports Standard queues. HyperStore does not support FIFO queues.
o DelaySeconds
o MaximumMessageSize
o MessageRetentionPeriod
o ReceiveMessageWaitTimeSeconds
o VisibilityTimeout
l QueueName
l Tag
137
Chapter 4. SQS API
4.2.2.3. Errors
l AWS.SimpleQueueService.QueueDeletedRecently
l QueueAlreadyExists
4.2.3. DeleteMessage
Deletes the specified message from the specified queue.
For action details and examples see the AWS documentation: DeleteMessage
4.2.3.2. Errors
l InvalidIdFormat
l ReceiptHandleIsInvalid
4.2.4. DeleteQueue
Deletes the queue specified by the QueueUrl, regardless of the queue's contents.
For action details and examples see the AWS documentation: DeleteQueue
4.2.5. GetQueueAttributes
Gets attributes for the specified queue.
For action details and examples see the AWS documentation: GetQueueAttributes
138
4.2. SQS Supported Actions
Note For the list of queue attributes that HyperStore supports, see "CreateQueue" (page 137).
l QueueUrl
4.2.5.3. Errors
l InvalidAttributeName
4.2.6. GetQueueUrl
Returns the URL of an existing Amazon SQS queue.
For action details and examples see the AWS documentation: GetQueueUrl
4.2.6.3. Errors
l AWS.SimpleQueueService.NonExistentQueue
4.2.7. ListQueues
Returns a list of your queues in the current region.
For action details and examples see the AWS documentation: ListQueues
139
Chapter 4. SQS API
4.2.8. PurgeQueue
Deletes the messages in a queue specified by the QueueURL parameter.
For action details and examples see the AWS documentation: PurgeQueue
4.2.8.2. Errors
l AWS.SimpleQueueService.NonExistentQueue
l AWS.SimpleQueueService.PurgeQueueInProgress
4.2.9. ReceiveMessage
Retrieves one or more messages (up to 10), from the specified queue.
For action details and examples see the AWS documentation: ReceiveMessage
4.2.9.3. Errors
l OverLimit
140
4.2. SQS Supported Actions
4.2.10. SendMessage
Delivers a message to the specified queue.
For action details and examples see the AWS documentation: SendMessage
Note The SendMessage action is not intended to be used by external SQS clients. The HyperStore S3
Service internally uses the SendMessage action to publish notification messages to a queue.
4.2.10.3. Errors
l AWS.SimpleQueueService.UnsupportedOperation
l InvalidMessageContents
4.2.11. SetQueueAttributes
Sets the value of one or more queue attributes.
For action details and examples see the AWS documentation: SetQueueAttributes
Note For the list of queue attributes that HyperStore supports see "CreateQueue" (page 137).
141
Chapter 4. SQS API
l QueueUrl
4.2.11.2. Errors
l InvalidAttributeName
142