S3
KakaoCloud's Object Storage provides compatibility with S3 API.
API preparations
Authentication
Temporary credentials
Currently only AssumeRoleWithWebIdentity
is supported.
Openstack Token allows you to create temporary credentials with the permissions of the token user.
The generated temporary credentials are given the same role as the project to which the user token was issued.
Request Syntax
curl -X POST \ 'https://objectstorage.kr-central-2.kakaocloud.com/' \
--header 'Accept: */*' \
--header 'Content-Type: application/json' \
--data-raw '{
"Action" : "AssumeRoleWithWebIdentity",
"DurationSeconds" : 1800,
"ProviderId" : "iam.kakaocloud.com",
"WebIdentityToken" : "{x-auth-token}"
}'
method | Request URL |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/ |
Request Elements
Query | Type | Required or not | Description |
---|---|---|---|
Action | String | Required | Type of action to perform - Only AssumeRoleWithWebIdentity is supported |
DurationSeconds | Int | Select | How long temporary credentials are valid |
ProviderId | String | Select | The entity providing WebIdentity - Currently only iam.kakaocloud.com is provided |
WebIdentityToken | String | Required | Token issued by Openstack |
Response Syntax
<AssumeRoleWithWebIdentityResponse>
<AssumeRoleWithWebIdentityResult>
<SubjectFromWebIdentityToken>{user_id}</SubjectFromWebIdentityToken>
<Credentials>
<SessionToken>{session_token}</SessionToken>
<SecretAccessKey>{session_secret_key}</SecretAccessKey>
<Expiration>{expiration}</Expiration>
<AccessKeyId>{session_access_key}</AccessKeyId>
</Credentials>
<Provider>iam.kakaocloud.com</Provider>
</AssumeRoleWithWebIdentityResult>
<ResponseMetadata>
<RequestId>{request_id}</RequestId>
</ResponseMetadata>
</AssumeRoleWithWebIdentityResponse>
Response Elements
Response | Type | Description |
---|---|---|
user_id | String | User ID for which temporary credentials will be used |
session_token | String | Secret token for temporary credentials |
session_secret_key | String | Secret access key for temporary credentials |
session_access_key | String | Secret access key ID for temporary credentials |
expiration | Timestamp | Expiration time of temporary credentials |
Status Code
HTTP Status | Response | Description |
---|---|---|
200 | OK | Success |
400 | BadRequest | Request information error |
403 | Forbidden | No permission |
S3 requests using temporary credentials
This is the same as Using temporary credentials with AWS resources.
Issue credentials
Currently, it is used by Openstack by getting ec2 credentials.
Request Syntax
openstack ec2 credentials create --project {project-id}
Argument | Type | Required or not | Description |
---|---|---|---|
Project_id | String | Required | ID of the project to issue |
Response Syntax
+------------+-----------------+
| Field | Value |
+------------+-----------------+
| access | {access_key_id} |
| Project_id | {project_id} |
| secret | {secret_key} |
| user_id | {user_id} |
+------------+-----------------+
Response Elements
Response | Type | Description |
---|---|---|
access_key_id | String | Use as generated access key ID (aws_access_key_id ) |
user_id | String | Requested user ID |
Project_id | String | Project_id whose credentials are valid |
secret_key | String | Use with generated access key (aws_secret_access_key ) |
The access and secret issued in the response are used as AWS credentials.
List of features provided
Expected owner functionality is currently not supported.
S3 API support by region
To use the bucket CORS function of KakaoCloud Object Storage or access a public access bucket using the s3 endpoint, you must specify the project ID as follows.
https://objectstorage.kr-central-2.kakaocloud.com/{project-id}:{bucket-name}/{object-path}
Feature | API support status | Description |
---|---|---|
ListBuckets | Supported | |
SecurityTokenService | Partially supported | Only supports AssumeRoleWithWebIdentity |
HeadBucket | Supported | |
GetBucketAccelerateConfiguration | ||
GetBucketAcl | Supported | |
GetBucketAnalyticsConfiguration | ||
ListBucketAnalyticsConfigurations | ||
GetBucketCors | ||
GetBucketEncryption | Supported | |
GetBucketIntelligentTieringConfiguration | ||
ListBucketIntelligentTieringConfigurations | ||
GetBucketInventoryConfiguration | ||
ListBucketInventoryConfigurations | ||
GetBucketLifecycle | Supported | |
GetBucketLifecycleConfiguration | Supported | |
GetBucketLocation | Supported | |
GetBucketLogging | Supported | |
GetBucketMetricsConfiguration | ||
ListBucketMetricsConfigurations | ||
GetBucketNotification | ||
GetBucketNotificationConfiguration | ||
GetBucketOwnershipControls | ||
GetBucketPolicy | ||
GetBucketPolicyStatus | ||
GetBucketReplication | ||
GetBucketRequestPayment | ||
GetBucketTagging | ||
GetBucketVersioning | ||
GetBucketWebsite | ||
ListObjectVersions | ||
ListObjectsV2 | Supported | |
GetObjectLockConfiguration | ||
GetPublicAccessBlock | ||
ListMultipartUploads | Supported | |
ListObjects | Supported | |
PutBucketAccelerateConfiguration | ||
PutBucketAcl | Partially supported | Can be configured only based on user ID and AllUsers URI |
PutBucketAnalyticsConfiguration | ||
PutBucketCors | ||
PutBucketEncryption | Partially supported | Can be configured only when the bucket is empty |
PutBucketIntelligentTieringConfiguration | ||
PutBucketInventoryConfiguration | ||
PutBucketLifecycle | Partially supported | |
PutBucketLifecycleConfiguration | Partially supported | |
PutBucketLogging | Supported | |
PutBucketMetricsConfiguration | ||
PutBucketNotification | ||
PutBucketNotificationConfiguration | ||
PutBucketOwnershipControls | ||
PutBucketPolicy | ||
PutBucketReplication | ||
PutBucketRequestPayment | ||
PutBucketTagging | ||
PutBucketVersioning | ||
PutBucketWebsite | ||
PutObjectLockConfiguration | ||
PutPublicAccessBlock | ||
CreateBucket | Supported | |
DeleteBucketAnalyticsConfiguration | ||
DeleteBucketCors | ||
DeleteBucketEncryption | ||
DeleteBucketIntelligentTieringConfiguration | ||
DeleteBucketInventoryConfiguration | ||
DeleteBucketLifecycle | Supported | |
DeleteBucketLifecycleConfiguration | Supported | |
DeleteBucketMetricsConfiguration | ||
DeleteBucketOwnershipControls | ||
DeleteBucketPolicy | ||
DeleteBucketReplication | ||
DeleteBucketTagging | ||
DeleteBucketWebsite | ||
DeletePublicAccessBlock | ||
DeleteBucket | Supported | |
DeleteObjects | Supported | |
HeadObject | Supported | |
GetObjectAcl | ||
GetObjectAttributes | ||
GetObjectLegalHold | ||
GetObjectRetention | ||
GetObjectTagging | Supported | |
GetObjectTorrent | ||
ListParts | Supported | |
GetObject | Supported | |
PutObjectAcl | ||
PutObjectLegalHold | ||
PutObjectRetention | ||
PutObjectTagging | Supported | |
UploadPartCopy | Supported | |
UploadPart | Supported | |
CopyObject | Supported | |
PutObject | Supported | |
AbortMultipartUpload | Supported | |
DeleteObjectTagging | Supported | |
DeleteObject | Supported | |
CompleteMultipartUpload | Supported | |
CreateMultipartUpload | Supported | |
RestoreObject | ||
SelectObjectContent | ||
WriteGetObjectResponse |
API guide
ListBuckets
View all buckets created in the project.
API method
method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/ |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<DisplayName>String</DisplayName>
<ID>String</ID>
</Owner>
<Buckets>
<Bucket>
<Name>String</Name>
<CreationDate>Timestamp</CreationDate>
</Bucket>
</Buckets>
</ListAllMyBucketsResult>
Response Elements
Response | Type | Description |
---|---|---|
DisplayName | String | User ID |
ID | String | Unique ID of user |
Name | String | Bucket name |
CreationDate | Timestamp | Created Date |
HeadBucket
You can use the HeadBuckets API to check if a bucket exists or if you have access to it.
API method
method | Request URL |
---|---|
Head | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
Response Headers
Key | Description |
---|---|
Date | Response creation time |
Content-Length | Body size of response |
Connection | Whether to reuse connection |
X-Amz-Request-Id | Unique request ID |
X-Rgw-Bytes-Used | Creation date |
X-Rgw-Object-Count | Number of objects in bucket |
X-Rgw-Quota-Bucket-Objects | Unused |
X-Rgw-Quota-Bucket-Size | Unused |
X-Rgw-Quota-Max-Buckets | Unused |
X-Rgw-Quota-User-Objects | Unused |
X-Rgw-Quota-User-Size | Unused |
X-Content-Type-Options | Security header to prevent MIME type sniffing |
X-Frame-Options | Security header to prevent click-jacking |
X-XSS-Protection | Security header to indicate operation method when XSS attack is detected in browser |
Strict-Transport-Security | Security header that allows only https communication |
CreateBucket
Create a bucket.
API method
method | Request URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
DeleteBucket
Delete the bucket.
API method
method | Request URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 204 response.
GetBucketAcl
Check the accessible role permission information for the bucket.
API method
method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<AccessControlPolicy>
<Owner>
<ID>string</ID>
<DisplayName>string</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
<ID>string</ID>
<DisplayName>string</DisplayName>
</Grantee>
<Permission>string</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
Response Elements
Response | Type | Description |
---|---|---|
DisplayName | String | User ID |
ID | String | Unique user ID |
xsi | String | - CanonicalUser - Group : Only 'AllUsers' allowed |
Permission | String | - FULL_CONTROL - WRITE - WRITE_ACP - READ - READ_ACP |
PutBucketAcl
Set access permissions for the bucket.
API call method
method | Request URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<AccessControlList>
<Grant>
<Grantee>
<DisplayName> String </DisplayName>
<ID> String </ID>
<xsi:type> String </xsi:type>
</Grantee>
<Permission> String </Permission>
</Grant>
</AccessControlList>
<Owner>
<DisplayName> String </DisplayName>
<ID> String </ID>
</Owner>
</AccessControlPolicy>
Request Elements
Request | Type | Required or not | Description |
---|---|---|---|
DisplayName | String | Optional | User ID |
ID | String | Optional | Unique ID of user |
xsi | String | Required | - CanonicalUser - Group: Only 'AllUsers' |
Permission | String | Optional | - FULL_CONTROL - WRITE - WRITE_ACP - READ - READ_ACP |
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
GetBucketEncryption
View the bucket's encryption settings information.
API method
method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<?xml version="1.0" encoding="UTF-8"?>
<ServerSideEncryptionConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<ApplyServerSideEncryptionByDefault>
<SSEAlgorithm>String</SSEAlgorithm>
</ApplyServerSideEncryptionByDefault>
</Rule>
</ServerSideEncryptionConfiguration>
Response Elements
Response | Type | Description |
---|---|---|
SSEAlgorithm | String | AES256 |
PutBucketEncryption
Set up bucket encryption. (Setting is possible only when the bucket is empty.)
API method
method | Request URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-MD5 | String | Required | Base64-encoded MD5 digest of the request body content encrypted according to server-side encryption configuration |
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
<ServerSideEncryptionConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<ApplyServerSideEncryptionByDefault>
<SSEAlgorithm>String</SSEAlgorithm>
</ApplyServerSideEncryptionByDefault>
</Rule>
</ServerSideEncryptionConfiguration>
Request Elements
Request | Type | Required or not | Description |
---|---|---|---|
SSEAlgorithm | String | Required | AES256 |
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
GetBucketLifecycle
View bucket life cycle setting information.
API method
method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<Status>string</Status>
<Expiration>
<Days>integer</Days>
</Expiration>
<Filter>
<And>
<Prefix>string</Prefix>
<Tag>
<Key>string</Key>
<Value>string</Value>
</Tag>
</And>
</Filter>
<ID>string</ID>
</Rule>
</LifecycleConfiguration>
Response Elements
Response | Type | Description |
---|---|---|
Status | String | - Enabled - Disabled |
Days | integer | Object retention period |
Prefix | String | Object Name Prefix |
Key | String | Tag key |
Value | String | Tag value |
ID | String | LifeCycle Policy Name |
PutBucketLifecycle
Set up bucket life cycle rules.
API method
method | Request URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-MD5 | String | Required | Base64-encoded MD5 digest of the request body content encrypted according to server-side encryption configuration |
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<Expiration>
<Days>integer</Days>
</Expiration>
<Filter>
<And>
<Prefix>string</Prefix>
<Tag>
<Key>string</Key>
<Value>string</Value>
</Tag>
</And>
</Filter>
<ID>string</ID>
<Status>string</Status>
</Rule>
</LifecycleConfiguration>
Request Elements
Request | Type | Required or not | Description |
---|---|---|---|
Status | String | Required | - Enabled - Disabled |
Days | integer | Optional | Object retention period |
Prefix | String | Required | Object name prefix |
Key | String | Required | Tag key |
Value | String | Required | Tag value |
ID | String | Optional | LifeCycle Policy name |
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
DeleteBucketLifecycle
Deletes all lifecycle settings for a bucket.
API method
method | Request URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 204 response.
GetBucketLocation
View the region information of the bucket.
API method
method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?location |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<?xml version="1.0" encoding="UTF-8"?>
<LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">String</LocationConstraint>
Response Elements
Response | Type | Description |
---|---|---|
Region | String | Region information |
Getobject
Get the objects stored in the bucket.
API method
method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response. Loads the requested object.
ListObjectsV2
Search the object list in the bucket.
API method
method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?list-type=2 |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Name>String</Name>
<Prefix>String</Prefix>
<MaxKeys>Integer</MaxKeys>
<IsTruncated>Boolean</IsTruncated>
<Contents>
<Key>String</Key>
<LastModified>Timestamp</LastModified>
<ETag>String</ETag>
<Size>Long</Size>
<StorageClass>String</StorageClass>
</Contents>
<KeyCount>Integer</KeyCount>
</ListBucketResult>
Response Elements
Response | Type | Description |
---|---|---|
Tenant | String | Project ID |
Name | String | Bucket name |
Prefix | String | prefix |
MaxKeys | Integer | Parameter that sets the maximum number of Keys returned in the response |
IsTruncated | Boolean | false : All keys are returned, True : More keys can be returned |
Key | String | Object key |
LastModified | Timestamp | The date and time when the object was created |
ETag | String | Hash value of object |
Size | Long | Object size |
StorageClass | String | Storage class that stores objects |
KeyCount | Integer | Number of keys returned by request |
HeadObject
Search for object head information.
API method
method | Request URL |
---|---|
HEAD | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
Response Header
Key | Description |
---|---|
Date | Response creation time |
Content-Type | Format of content contained in body |
Content-Length | Object size |
Connection | Whether to recycle connection |
Accept-Ranges | A client can request a desired part of a file byte by byte |
Etag | An identifier that allows a web server to identify whether the content or metadata of a resource has changed. |
Last-Modified | Last modified date |
X-Amz-Expiration | Expiration date specified by Lifecycle |
X-Amz-Request-Id | Unique request ID |
X-Rgw-Object-Type | Object type processed by RGW: use only normal |
X-Content-Type-Options | Security header to prevent MIME type sniffing |
X-Frame-Options | Security header to prevent click-jacking |
X-XSS-Protection | Security header to indicate operation method when XSS attack is detected in browser |
Strict-Transport-Security | Security header that allows only https communication |
PutObject
Upload a single object to a bucket.
API method
method | Request URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
X-Amz-Tagging | String | Required | Object tag value (optional) ex) Key1=Value1&Key2=Value2 |
X-Amz-meta-key | String | Required | Metadata value (optional) ex) key = metadata key name, Value = metadata value |
Request Body
Binary data of the file to upload
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
CopyObject
Copy the object to the bucket.
API method
method | Request URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
x-amz-copy-source | String | Required | Object key to be copied (required) |
Request Body
This request has no Body value.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<CopyObjectResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<ETag>String</ETag>
<LastModified>Timestamp</LastModified>
</CopyObjectResult>
Response Elements
Response | Type | Description |
---|---|---|
ETag | String | Hash value of object |
LastModified | Timestamp | The date and time when the object was created |
DeleteObject
Deletes a single object.
API method
method | Request URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
The request does not include a body.
Response Syntax
If the operation is successful, the service receives an HTTP 204 response. HTTP/1.1 204
DeleteObjects
Bulk delete objects.
API method
method | Request URL |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?delete |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
Enter the object key to be deleted in Body.
<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Object>
<Key>String</Key>
</Object>
<Object>
<Key>String</Key>
</Object>
</Delete>
Request Elements
Request | Type | Required or not | Description |
---|---|---|---|
Key | String | Required | Object key |
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Deleted>
<Key>String</Key>
</Deleted>
<Deleted>
<Key>String</Key>
</Deleted>
</DeleteResult>
Response Elements
Response | Type | Required or not | Description |
---|---|---|---|
Key | String | Required | Object key |
CreateMultipartUpload
Start multipart upload and respond with Upload ID. The Upload ID is used to associate all parts of a multipart upload.
API method
method | Request URL |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}/?uploads |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
The request does not include a body.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<InitiateMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<Key>multipart2</Key>
<UploadId>2~7HdUyr3lqN3Ze9MwWxCyxqGBVc_2BoU</UploadId>
</InitiateMultipartUploadResult>
Response Elements
Response | Type | Description |
---|---|---|
Tenant | String | Project ID |
Bucket | String | Bucket name |
Key | String | Object key to upload |
UploadId | String | Multipart upload ID |
UploadPart
Upload one part to a multipart upload.
API method
method | Request URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?partNumber={Number}&uploadId={UploadID} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
The request does not include a body.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
ListParts
Search for parts uploaded to a specific multipart upload.
API method
method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?uploadId={UploadID} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
The request does not include a body.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<ListPartsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<Key>String</Key>
<UploadId>String</UploadId>
<StorageClass>String</StorageClass>
<PartNumberMarker>Integer</PartNumberMarker>
<NextPartNumberMarker>Integer</NextPartNumberMarker>
<MaxParts>Integer</MaxParts>
<IsTruncated>Boolean</IsTruncated>
<Owner>
<ID>String</ID>
<DisplayName>String</DisplayName>
</Owner>
<Part>
<LastModified>Timestamp</LastModified>
<PartNumber>Integer</PartNumber>
<ETag>String</ETag>
<Size>Long</Size>
</Part>
<Part>
<LastModified>Timestamp</LastModified>
<PartNumber>Integer</PartNumber>
<ETag>String</ETag>
<Size>Long</Size>
</Part>
<Part>
<LastModified>Timestamp</LastModified>
<PartNumber>Integer</PartNumber>
<ETag>String</ETag>
<Size>Long</Size>
</Part>
</ListPartsResult>
Response Elements
Response | Type | Description |
---|---|---|
Tenant | String | Project ID |
Bucket | String | Bucket name |
Key | String | Object key to upload |
UploadId | String | Multipart upload ID |
StorageClass | String | Storage class |
PartNumberMarker | String | Starting value for listing, only parts with higher PartNumber are listed |
NextPartNumberMarker | String | A value that specifies the last part of the list |
MaxParts | String | Maximum number of parts allowed in response |
IsTruncated | String | Whether the part list is truncated |
ID | String | Project ID |
DisplayName | String | Project name |
LastModified | String | Uploaded time of part |
PartNumber | String | Part identification number, positive integer from 1 to 10000 |
ETag | String | Entity Tag of uploaded part |
Size | String | Size of uploaded part |
ListMultipartUploads
Lists multipart uploads in progress in the bucket. An ongoing multipart upload is a MultipartUpload that was started with a CreateMultipartUpload request and has not yet completed or stopped.
API method
method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{Buckets}?uploads&max-uploads={number} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
The request does not include a body.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<?xml version="1.0" encoding="UTF-8"?>
<ListMultipartUploadsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<NextKeyMarker>String</NextKeyMarker>
<NextUploadIdMarker>String</NextUploadIdMarker>
<MaxUploads>Integer</MaxUploads>
<IsTruncated>Boolean</IsTruncated>
<Upload>
<Key>String</Key>
<UploadId>String</UploadId>
<Initiator>
<ID>String</ID>
<DisplayName>String</DisplayName>
</Initiator>
<Owner>
<ID>String</ID>
<DisplayName>String</DisplayName>
</Owner>
<StorageClass>String</StorageClass>
<Initiated>Timestamp</Initiated>
</Upload>
</ListMultipartUploadsResult>
Response Elements
Response | Type | Description |
---|---|---|
Tenant | String | Project ID |
Bucket | String | Bucket name |
NextKeyMarker | String | The value that should be used for the key-marker request parameter in the next request |
NextUploadIdMarker | String | The value that should be used for the upload-id-marker request parameter in the following request |
MaxUploads | Integer | Maximum number of multipart uploads |
IsTruncated | String | Whether the part list is truncated |
Key | String | Object key to upload |
UploadId | String | Multipart upload ID |
ID | String | Project ID |
DisplayName | String | Project name |
StorageClass | String | Storage class |
Initiated | Timestamp | Multipart upload start date and time |
UploadPartCopy
When uploading Part to CreateMultipartUpload, you can upload the object in Bucket to the next PartNumber.
API method
method | Request URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?partNumber={number}&uploadId={UploadID} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
x-amz-copy-source | String | Required | Object key of Upload Part destination |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
The request does not include a body.
Response Syntax
If the operation is successful, the service receives an HTTP 200 response.
<?xml version="1.0" encoding="UTF-8"?>
<CopyPartResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<LastModified>Timestamp</LastModified>
<ETag>String</ETag>
</CopyPartResult>
Response Elements
Response | Type | Description |
---|---|---|
LastModified | Timestamp | Object upload date |
ETag | String | Hash value of object |
CompleteMultipartUpload
If the upload part is completed through CreateMultipartUpload, it can be completed through CompleteMultipartUpload. Complete the multipart upload by assembling previously uploaded parts.
API method
method | Request URL |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?&uploadId={UploadID} |
Request Syntax
Request Header
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash value of content |
X-Amz-Date | String | Required | Date and time the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 headers signed in the request - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of signed header names (required) - Signature: Signature value (required) |
Request Body
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Part>
<ETag>String</ETag>
<PartNumber>Integer</PartNumber>
</Part>
...
</CompleteMultipartUpload>
Request Elements
Request | Type | Required | Description |
---|---|---|---|
ETag | String | Optional | Hash value of the object |
PartNumber | Integer | Optional | Part identification number (positive integer between 1 and 10,000) |
Response Syntax
If the operation is successful, the service will receive an HTTP 200 response.
<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Location>String</Location>
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<Key>String</Key>
<ETag>String</ETag>
</CompleteMultipartUploadResult>
Response Elements
Response | Type | Description |
---|---|---|
Location | String | URI value identifying the newly created object |
Tenant | String | Project ID |
Bucket | String | Bucket name |
Key | String | Object key |
ETag | String | Hash value of the object |
AbortMultipartUpload
Aborts a Multipart Upload. After the Multipart Upload is aborted, no additional parts can be uploaded using the same Upload ID.
API Call Method
Method | Request URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?&uploadId={UploadID} |
Request Syntax
Request Headers
Key | Type | Required | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash of the content |
X-Amz-Date | String | Required | Date and time when the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 header used for request signing - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of headers that are signed (required) - Signature: Signature value (required) |
Request Body
The request does not include a body.
Response Syntax
If successful, the service receives an HTTP 204 response.
GetObjectTagging
Retrieves tags of an object.
API Call Method
Method | Request URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging |
Request Syntax
Request Headers
Key | Type | Required | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash of the content |
X-Amz-Date | String | Required | Date and time when the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 header used for request signing - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of headers that are signed (required) - Signature: Signature value (required) |
Response Syntax
If successful, the service receives an HTTP 200 response.
<?xml version="1.0" encoding="UTF-8"?>
<Tagging xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>String</Key>
<Value>String</Value>
</Tag>
</TagSet>
</Tagging>
Response Elements
Response | Type | Required or not | Description |
---|---|---|---|
Key | String | Required | Object tag key |
Value | String | Required | Value of the object tag key |
PutObjectTagging
Adds tags to an object, overwriting any existing tag values.
API Call Method
Method | Request URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging |
Request Syntax
Request Headers
Key | Type | Required or not | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash of the content |
X-Amz-Date | String | Required | Date and time when the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 header used for request signing - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of headers that are signed (required) - Signature: Signature value (required) |
Request Body
<Tagging xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>String</Key>
<Value>String</Value>
</Tag>
</TagSet>
</Tagging>
Request Elements
Request | Type | Required | Description |
---|---|---|---|
Key | String | Required | Object tag key |
Value | String | Required | Value of the object tag key |
DeleteObjectTagging
Deletes tags from an object.
API Call Method
Method | Request URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging |
Request Syntax
Request Headers
Key | Type | Required | Description |
---|---|---|---|
Content-Type | String | Required | Text/Html |
X-Amz-Security-Token | String | Required | AWS security token |
X-Amz-Content-Sha256 | String | Required | SHA256 hash of the content |
X-Amz-Date | String | Required | Date and time when the AWS service request was sent |
Authorization | String | Required | AWS Signature Version 4 header used for request signing - Credential: AWS Access key ID and credential scope (required) - SignedHeaders: List of headers that are signed (required) - Signature: Signature value (required) |
Request Body
The request does not include a body.
Response Syntax
Upon successful operation, it returns an HTTP 200 response.