Skip to main content

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
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}"
}'
methodRequest URL
POST   https://objectstorage.kr-central-2.kakaocloud.com/
Request Elements
QueryTypeRequired or notDescription
ActionStringRequired  Type of action to perform
- Only AssumeRoleWithWebIdentity is supported
DurationSecondsIntSelectHow long temporary credentials are valid
ProviderIdStringSelectThe entity providing WebIdentity
- Currently only iam.kakaocloud.com is provided
WebIdentityTokenStringRequired  Token issued by Openstack
Response Syntax
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
ResponseTypeDescription
user_idStringUser ID for which temporary credentials will be used
session_tokenStringSecret token for temporary credentials
session_secret_keyStringSecret access key for temporary credentials
session_access_keyStringSecret access key ID for temporary credentials
expirationTimestampExpiration time of temporary credentials
Status Code
HTTP StatusResponseDescription
200     OKSuccess
400BadRequestRequest information error
403ForbiddenNo 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
Get credential
openstack ec2 credentials create --project {project-id}
ArgumentTypeRequired or notDescription
Project_idStringRequired  ID of the project to issue
Response Syntax
Response Syntax
+------------+-----------------+
| Field | Value |
+------------+-----------------+
| access | {access_key_id} |
| Project_id | {project_id} |
| secret | {secret_key} |
| user_id | {user_id} |
+------------+-----------------+
Response Elements
ResponseTypeDescription
access_key_idStringUse as generated access key ID (aws_access_key_id)
user_idStringRequested user ID
Project_idStringProject_id whose credentials are valid
secret_keyStringUse 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

info

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.

Object Storage S3 API endpoint format
https://objectstorage.kr-central-2.kakaocloud.com/{project-id}:{bucket-name}/{object-path}
FeatureAPI support statusDescription
ListBucketsSupported
SecurityTokenServicePartially supportedOnly supports AssumeRoleWithWebIdentity
HeadBucketSupported
GetBucketAccelerateConfiguration
GetBucketAclSupported
GetBucketAnalyticsConfiguration
ListBucketAnalyticsConfigurations
GetBucketCors
GetBucketEncryptionSupported
GetBucketIntelligentTieringConfiguration
ListBucketIntelligentTieringConfigurations
GetBucketInventoryConfiguration
ListBucketInventoryConfigurations
GetBucketLifecycleSupported
GetBucketLifecycleConfigurationSupported
GetBucketLocationSupported
GetBucketLoggingSupported
GetBucketMetricsConfiguration
ListBucketMetricsConfigurations
GetBucketNotification
GetBucketNotificationConfiguration
GetBucketOwnershipControls
GetBucketPolicy
GetBucketPolicyStatus
GetBucketReplication
GetBucketRequestPayment
GetBucketTagging
GetBucketVersioning
GetBucketWebsite
ListObjectVersions
ListObjectsV2Supported
GetObjectLockConfiguration
GetPublicAccessBlock
ListMultipartUploadsSupported
ListObjectsSupported
PutBucketAccelerateConfiguration
PutBucketAclPartially supportedCan be configured only based on user ID and AllUsers URI
PutBucketAnalyticsConfiguration
PutBucketCors
PutBucketEncryptionPartially supportedCan be configured only when the bucket is empty
PutBucketIntelligentTieringConfiguration
PutBucketInventoryConfiguration
PutBucketLifecyclePartially supported
PutBucketLifecycleConfigurationPartially supported
PutBucketLoggingSupported
PutBucketMetricsConfiguration
PutBucketNotification
PutBucketNotificationConfiguration
PutBucketOwnershipControls
PutBucketPolicy
PutBucketReplication
PutBucketRequestPayment
PutBucketTagging
PutBucketVersioning
PutBucketWebsite
PutObjectLockConfiguration
PutPublicAccessBlock
CreateBucketSupported
DeleteBucketAnalyticsConfiguration
DeleteBucketCors
DeleteBucketEncryption
DeleteBucketIntelligentTieringConfiguration
DeleteBucketInventoryConfiguration
DeleteBucketLifecycleSupported
DeleteBucketLifecycleConfigurationSupported
DeleteBucketMetricsConfiguration
DeleteBucketOwnershipControls
DeleteBucketPolicy
DeleteBucketReplication
DeleteBucketTagging
DeleteBucketWebsite
DeletePublicAccessBlock
DeleteBucketSupported
DeleteObjectsSupported
HeadObjectSupported
GetObjectAcl
GetObjectAttributes
GetObjectLegalHold
GetObjectRetention
GetObjectTaggingSupported
GetObjectTorrent
ListPartsSupported
GetObjectSupported
PutObjectAcl
PutObjectLegalHold
PutObjectRetention
PutObjectTaggingSupported
UploadPartCopySupported
UploadPartSupported
CopyObjectSupported
PutObjectSupported
AbortMultipartUploadSupported
DeleteObjectTaggingSupported
DeleteObjectSupported
CompleteMultipartUploadSupported
CreateMultipartUploadSupported
RestoreObject
SelectObjectContent
WriteGetObjectResponse

API guide

ListBuckets

View all buckets created in the project.

API method
methodRequest URL
GET  https://objectstorage.kr-central-2.kakaocloud.com/
Request Syntax
Request Header
KeyTypeRequired or notDescription
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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 Syntax
  <?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
ResponseTypeDescription
DisplayNameStringUser ID
IDStringUnique ID of user
NameStringBucket name
CreationDateTimestampCreated Date

HeadBucket

You can use the HeadBuckets API to check if a bucket exists or if you have access to it.

API method
methodRequest URL
Head  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}
Request Syntax
Request Header
KeyTypeRequired or notDescription
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
KeyDescription
DateResponse creation time
Content-LengthBody size of response
ConnectionWhether to reuse connection
X-Amz-Request-IdUnique request ID
X-Rgw-Bytes-UsedCreation date
X-Rgw-Object-CountNumber of objects in bucket
X-Rgw-Quota-Bucket-ObjectsUnused
X-Rgw-Quota-Bucket-SizeUnused
X-Rgw-Quota-Max-BucketsUnused
X-Rgw-Quota-User-ObjectsUnused
X-Rgw-Quota-User-SizeUnused
X-Content-Type-OptionsSecurity header to prevent MIME type sniffing
X-Frame-OptionsSecurity header to prevent click-jacking
X-XSS-ProtectionSecurity header to indicate operation method when XSS attack is detected in browser
Strict-Transport-SecuritySecurity header that allows only https communication

CreateBucket

Create a bucket.

API method
methodRequest URL
PUT  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}
Request Syntax
Request Header
KeyTypeRequired or notDescription
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
methodRequest URL
DELETE  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}
Request Syntax
Request Header
KeyTypeRequired or notDescription
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
methodRequest URL
GET  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl
Request Syntax
Request Header
KeyTypeRequired or notDescription
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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 Syntax
  <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
ResponseTypeDescription
DisplayNameStringUser ID
IDStringUnique user ID
xsiString- CanonicalUser
- Group : Only 'AllUsers' allowed
PermissionString- FULL_CONTROL
- WRITE
- WRITE_ACP
- READ
- READ_ACP

PutBucketAcl

Set access permissions for the bucket.

API call method
methodRequest URL
PUT  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
Request Syntax
  <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
RequestTypeRequired or notDescription
DisplayNameStringOptional  User ID
IDStringOptional  Unique ID of user
xsiStringRequired  - CanonicalUser
- Group: Only 'AllUsers'
PermissionStringOptional  - 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
methodRequest URL
GET  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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 Syntax
  <?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
ResponseTypeDescription
SSEAlgorithmStringAES256

PutBucketEncryption

Set up bucket encryption. (Setting is possible only when the bucket is empty.)

API method
methodRequest URL
PUT  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-MD5StringRequired  Base64-encoded MD5 digest of the request body content encrypted according to server-side encryption configuration
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
Request Syntax
 <ServerSideEncryptionConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<ApplyServerSideEncryptionByDefault>
<SSEAlgorithm>String</SSEAlgorithm>
</ApplyServerSideEncryptionByDefault>
</Rule>
</ServerSideEncryptionConfiguration>
Request Elements
RequestTypeRequired or notDescription
SSEAlgorithmStringRequired  AES256
Response Syntax

If the operation is successful, the service receives an HTTP 200 response.

GetBucketLifecycle

View bucket life cycle setting information.

API method
methodRequest URL
GET  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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.

Response Syntax
  <?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
ResponseTypeDescription
StatusString- Enabled
- Disabled
DaysintegerObject retention period
PrefixStringObject Name Prefix
KeyStringTag key
ValueStringTag value
IDStringLifeCycle Policy Name

PutBucketLifecycle

Set up bucket life cycle rules.

API method
methodRequest URL
PUT  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-MD5StringRequired  Base64-encoded MD5 digest of the request body content encrypted according to server-side encryption configuration
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
Request Syntax
 <?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
RequestTypeRequired or notDescription
StatusStringRequired  - Enabled
- Disabled
DaysintegerOptional  Object retention period
PrefixStringRequired  Object name prefix
KeyStringRequired  Tag key
ValueStringRequired  Tag value
IDStringOptional  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
methodRequest URL
DELETE  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
methodRequest URL
GET  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?location
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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 Syntax
 <?xml version="1.0" encoding="UTF-8"?>
<LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">String</LocationConstraint>
Response Elements
ResponseTypeDescription
RegionStringRegion information

Getobject

Get the objects stored in the bucket.

API method
methodRequest URL
GET  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
methodRequest URL
GET  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?list-type=2
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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 Syntax
 <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
ResponseTypeDescription
TenantStringProject ID
NameStringBucket name
PrefixStringprefix
MaxKeysIntegerParameter that sets the maximum number of Keys returned in the response
IsTruncatedBooleanfalse: All keys are returned,
True: More keys can be returned
KeyStringObject key
LastModifiedTimestampThe date and time when the object was created
ETagStringHash value of object
SizeLongObject size
StorageClassStringStorage class that stores objects
KeyCountIntegerNumber of keys returned by request

HeadObject

Search for object head information.

API method
methodRequest URL
HEAD  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
KeyDescription
DateResponse creation time
Content-TypeFormat of content contained in body
Content-LengthObject size
ConnectionWhether to recycle connection
Accept-RangesA client can request a desired part of a file byte by byte
EtagAn identifier that allows a web server to identify whether the content or metadata of a resource has changed.
Last-ModifiedLast modified date
X-Amz-ExpirationExpiration date specified by Lifecycle
X-Amz-Request-IdUnique request ID
X-Rgw-Object-TypeObject type processed by RGW: use only normal
X-Content-Type-OptionsSecurity header to prevent MIME type sniffing
X-Frame-OptionsSecurity header to prevent click-jacking
X-XSS-ProtectionSecurity header to indicate operation method when XSS attack is detected in browser
Strict-Transport-SecuritySecurity header that allows only https communication

PutObject

Upload a single object to a bucket.

API method
methodRequest URL
PUT  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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-TaggingStringRequired  Object tag value (optional)
ex) Key1=Value1&Key2=Value2
X-Amz-meta-keyStringRequired  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
methodRequest URL
PUT  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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-sourceStringRequired  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.

Response Syntax
 <CopyObjectResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<ETag>String</ETag>
<LastModified>Timestamp</LastModified>
</CopyObjectResult>
Response Elements
ResponseTypeDescription
ETagStringHash value of object
LastModifiedTimestampThe date and time when the object was created

DeleteObject

Deletes a single object.

API method
methodRequest URL
DELETE  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
methodRequest URL
POST  https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?delete
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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.

Request Syntax
 <Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Object>
<Key>String</Key>
</Object>
<Object>
<Key>String</Key>
</Object>
</Delete>
Request Elements
RequestTypeRequired or notDescription
KeyStringRequired  Object key
Response Syntax

If the operation is successful, the service receives an HTTP 200 response.

Response Syntax
 <DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Deleted>
<Key>String</Key>
</Deleted>
<Deleted>
<Key>String</Key>
</Deleted>
</DeleteResult>
Response Elements
ResponseTypeRequired or notDescription
KeyStringRequired  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
methodRequest URL
POST  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}/?uploads
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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.

Response Syntax
 <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
ResponseTypeDescription
TenantStringProject ID
BucketStringBucket name
KeyStringObject key to upload
UploadIdStringMultipart upload ID

UploadPart

Upload one part to a multipart upload.

API method
methodRequest URL
PUT  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?partNumber={Number}&uploadId={UploadID}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
methodRequest URL
GET  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?uploadId={UploadID}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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.

Response Syntax
  <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
ResponseTypeDescription
TenantStringProject ID
BucketStringBucket name
KeyStringObject key to upload
UploadIdStringMultipart upload ID
StorageClassStringStorage class
PartNumberMarkerStringStarting value for listing, only parts with higher PartNumber are listed
NextPartNumberMarkerStringA value that specifies the last part of the list
MaxPartsStringMaximum number of parts allowed in response
IsTruncatedStringWhether the part list is truncated
IDStringProject ID
DisplayNameStringProject name
LastModifiedStringUploaded time of part
PartNumberStringPart identification number, positive integer from 1 to 10000
ETagStringEntity Tag of uploaded part
SizeStringSize 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
methodRequest URL
GET  https://objectstorage.kr-central-2.kakaocloud.com/{Buckets}?uploads&max-uploads={number}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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.

Response Syntax
  <?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
ResponseTypeDescription
TenantStringProject ID
BucketStringBucket name
NextKeyMarkerStringThe value that should be used for the key-marker request parameter in the next request
NextUploadIdMarkerStringThe value that should be used for the upload-id-marker request parameter in the following request
MaxUploadsIntegerMaximum number of multipart uploads
IsTruncatedStringWhether the part list is truncated
KeyStringObject key to upload
UploadIdStringMultipart upload ID
IDStringProject ID
DisplayNameStringProject name
StorageClassStringStorage class
InitiatedTimestampMultipart upload start date and time

UploadPartCopy

When uploading Part to CreateMultipartUpload, you can upload the object in Bucket to the next PartNumber.

API method
methodRequest URL
PUT  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?partNumber={number}&uploadId={UploadID}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
x-amz-copy-sourceStringRequired  Object key of Upload Part destination
AuthorizationStringRequired  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.

Response Syntax
 <?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
ResponseTypeDescription
LastModifiedTimestampObject upload date
ETagStringHash 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
methodRequest URL
POST  https://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?&uploadId={UploadID}
Request Syntax
Request Header
KeyTypeRequired or notDescription
Content-TypeStringRequired  Text/Html
X-Amz-Security-TokenStringRequired  AWS security token
X-Amz-Content-Sha256StringRequired  SHA256 hash value of content
X-Amz-DateStringRequired  Date and time the AWS service request was sent
AuthorizationStringRequired  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
Response Syntax
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Part>
<ETag>String</ETag>
<PartNumber>Integer</PartNumber>
</Part>
...
</CompleteMultipartUpload>
Request Elements
RequestTypeRequiredDescription
ETagStringOptionalHash value of the object
PartNumberIntegerOptionalPart identification number (positive integer between 1 and 10,000)
Response Syntax

If the operation is successful, the service will receive an HTTP 200 response.

Response Syntax
  <?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
ResponseTypeDescription
LocationStringURI value identifying the newly created object
TenantStringProject ID
BucketStringBucket name
KeyStringObject key
ETagStringHash 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
MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{ObjectKey}?&uploadId={UploadID}
Request Syntax
Request Headers
KeyTypeRequiredDescription
Content-TypeStringRequiredText/Html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time when the AWS service request was sent
AuthorizationStringRequiredAWS 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
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging
Request Syntax
Request Headers
KeyTypeRequiredDescription
Content-TypeStringRequiredText/Html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time when the AWS service request was sent
AuthorizationStringRequiredAWS 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.

Response Syntax
<?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
ResponseTypeRequired or notDescription
KeyStringRequiredObject tag key
ValueStringRequiredValue of the object tag key

PutObjectTagging

Adds tags to an object, overwriting any existing tag values.

API Call Method
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging
Request Syntax
Request Headers
KeyTypeRequired or notDescription
Content-TypeStringRequiredText/Html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time when the AWS service request was sent
AuthorizationStringRequiredAWS 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
Response Syntax
  <Tagging xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>String</Key>
<Value>String</Value>
</Tag>
</TagSet>
</Tagging>
Request Elements
RequestTypeRequiredDescription
KeyStringRequiredObject tag key
ValueStringRequiredValue of the object tag key

DeleteObjectTagging

Deletes tags from an object.

API Call Method
MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging
Request Syntax
Request Headers
KeyTypeRequiredDescription
Content-TypeStringRequiredText/Html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time when the AWS service request was sent
AuthorizationStringRequiredAWS 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.