Skip to main content

S3

KakaoCloud's Object Storage provides compatibility with the S3 API.

Before you start

For prerequisites required to use the API, refer to the API preparation guide.

Compatible S3 tools and SDK versions

KakaoCloud supports compatibility with the following versions of S3 SDKs and CLI tools.
Using versions higher than listed may result in failed requests.

ToolMaximum compatible version
S3 CLI2.22.0
Python boto31.35.99
JavaScript SDKv3.726.1

Authentication

Temporary credentials

Currently, only AssumeRoleWithWebIdentity is supported.
You can issue temporary credentials with the same permissions as the token user using an OpenStack token.
The issued credentials inherit the roles of the project where the token was issued.

Request syntax
Temporary credentials 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
POSThttps://objectstorage.kr-central-2.kakaocloud.com/
Request elements
QueryTypeRequiredDescription
ActionStringYesType of action to perform. Only AssumeRoleWithWebIdentity is supported.
DurationSecondsIntNoValidity duration for the temporary credentials (in seconds)
ProviderIdStringNoIdentity provider, currently only iam.kakaocloud.com is supported
WebIdentityTokenStringYesToken issued by OpenStack
Response syntax
Temporary credentials 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
FieldTypeDescription
user_idStringID of the user associated with the credentials
session_tokenStringTemporary session token
session_secret_keyStringSecret access key for the session
session_access_keyStringAccess key ID for the session
expirationTimestampExpiration time of the temporary credentials
HTTP status codes
HTTP StatusMessageDescription
200OKSuccess
400BadRequestInvalid request format or parameters
403ForbiddenPermission denied

Using temporary credentials with S3 requests

Refer to AWS documentation on using temporary credentials with S3.

Issue credentials

You can issue EC2-style credentials via OpenStack's EC2 credential command.

Request syntax
Issue EC2 credential
openstack ec2 credentials create --project {project-id}
ArgumentTypeRequiredDescription
project_idStringYesID of the project to issue credentials for
Response syntax
Credential issuance response
+------------+-----------------+
| Field | Value |
+------------+-----------------+
| access | {access_key_id} |
| project_id | {project_id} |
| secret | {secret_key} |
| user_id | {user_id} |
+------------+-----------------+
Response elements
FieldTypeDescription
access_key_idStringUse as aws_access_key_id
secret_keyStringUse as aws_secret_access_key
user_idStringID of the user who issued the credential
project_idStringThe project ID the credential is valid for

The issued access and secret can be used as AWS credentials.

Supported features

Note: The ExpectedOwner feature is not supported.

S3 API support by region

info

When using CORS features or accessing a publicly available bucket via the S3 endpoint, include your project ID in the URL as shown:

S3 API endpoint format
https://objectstorage.kr-central-2.kakaocloud.com/{project-id}:{bucket-name}/{object-path}
FeatureAPI supportedDescription
ListBucketsSupported
SecurityTokenServicePartially supportedAssumeRoleWithWebIdentity only
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 supported사용자 ID와 AllUsers URI 기반의 설정만 가능
PutBucketAnalyticsConfiguration
PutBucketCors
PutBucketEncryptionPartially supported버킷이 비어있는 경우에만 설정 가능
PutBucketIntelligentTieringConfiguration
PutBucketInventoryConfiguration
PutBucketLifecyclePartial Supported
PutBucketLifecycleConfigurationPartial 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

Retrieves all buckets created within a project.

API request format
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/
Request syntax
Request headers
KeyTypeRequiredDescription
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash value of the request content
X-Amz-DateStringRequiredDate and time of the AWS service request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope (required)
- SignedHeaders: list of signed header names (required)
- Signature: the calculated signature value (required)
Request body

This request does not include a body.

Response syntax

If the operation succeeds, the service responds with HTTP 200 OK.

ListBuckets 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
ElementTypeDescription
DisplayNameStringUser ID
IDStringUnique user identifier
NameStringBucket name
CreationDateTimestampDate the bucket was created

HeadBucket

Checks whether a bucket exists and whether the caller has access to it.

API request format
MethodRequest URL
HEADhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}
Request syntax
Request headers
KeyTypeRequiredDescription
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash value of the request content
X-Amz-DateStringRequiredDate and time of the AWS service request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope (required)
- SignedHeaders: list of signed header names (required)
- Signature: the calculated signature value (required)
Request body

This request does not include a body.

Response syntax

If the operation succeeds, the service responds with HTTP 200 OK.

Response headers
HeaderDescription
DateTime the response was generated
Content-LengthSize of the response body
ConnectionWhether the connection can be reused
X-Amz-Request-IdUnique request ID
X-Rgw-Bytes-UsedTotal bytes used
X-Rgw-Object-CountNumber of objects in the bucket
X-Rgw-Quota-Bucket-ObjectsNot in use
X-Rgw-Quota-Bucket-SizeNot in use
X-Rgw-Quota-Max-BucketsNot in use
X-Rgw-Quota-User-ObjectsNot in use
X-Rgw-Quota-User-SizeNot in use
X-Content-Type-OptionsSecurity header to prevent MIME type sniffing
X-Frame-OptionsSecurity header to prevent clickjacking
X-XSS-ProtectionSecurity header to detect and mitigate XSS attacks
Strict-Transport-SecuritySecurity header to enforce HTTPS communication only

CreateBucket

Creates a bucket.

API request format
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}
Request syntax
Request headers
KeyTypeRequiredDescription
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request is sent to the AWS service
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope (required)
- SignedHeaders: list of signed headers (required)
- Signature: signature value (required)
Request body

This request does not contain a body.

Response syntax

On success, the service returns an HTTP 200 response.

DeleteBucket

Deletes a bucket.

API request format
MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}
Request syntax
Request headers
KeyTypeRequiredDescription
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request is sent to the AWS service
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope (required)
- SignedHeaders: list of signed headers (required)
- Signature: signature value (required)
Request body

This request does not contain a body.

Response syntax

On success, the service returns an HTTP 204 response.

GetBucketAcl

Retrieves the role-based access control (ACL) configuration of a bucket.

API request format
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl
Request syntax
Request headers
KeyTypeRequiredDescription
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request is sent to the AWS service
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope (required)
- SignedHeaders: list of signed headers (required)
- Signature: signature value (required)
Request body

This request does not contain a body.

Response syntax

If successful, the service returns an HTTP 200 response.

GetBucketAcl 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 is supported
PermissionString- FULL_CONTROL
- WRITE
- WRITE_ACP
- READ
- READ_ACP

PutBucketAcl

Sets role-based permissions (ACL) for a bucket.
ACL settings can be applied via either headers or the request body.
If both headers and the body contain ACL settings, the settings in the body take precedence.

API request format
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl
Request syntax
Request headers
KeyTypeRequiredDescription
Content-TypeStringRequiredMust be text/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request is sent to the AWS service
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope (required)
- SignedHeaders: list of signed headers (required)
- Signature: signature value (required)
x-amz-aclStringOptionalCanned ACL to apply to the bucket
- private: does not allow public access. Grants only initial roles and storage.owner, revokes all other permissions
- public-read: grants storage.objectReader to all users
- public-read-write: grants storage.objectCreator to all users
- authenticated-read: grants storage.objectReader to all IAM users
Content-MD5StringRequiredBase64-encoded MD5 digest of the request body content
x-amz-grant-full-controlStringOptionalGrants storage.admin role to a specified user
- User ID: id={user uuid}
- AllUsers: uri=http://acs.amazonaws.com/groups/global/AllUsers
x-amz-grant-readStringOptionalGrants storage.objectReader role to a specified user
- User ID: id={user uuid}
- AllUsers: uri=http://acs.amazonaws.com/groups/global/AllUsers
x-amz-grant-read-acpStringOptionalGrants storage.policyReader role to a specified user
- User ID: id={user uuid}
- AllUsers: uri=http://acs.amazonaws.com/groups/global/AllUsers
x-amz-grant-writeStringOptionalGrants storage.objectCreator role to a specified user
- User ID: id={user uuid}
- AllUsers: uri=http://acs.amazonaws.com/groups/global/AllUsers
x-amz-grant-write-acpStringOptionalGrants storage.policyWriter role to a specified user
- User ID: id={user uuid}
- AllUsers: uri=http://acs.amazonaws.com/groups/global/AllUsers
Request Body
PutBucketAcl Request Syntax
<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
<ID>string</ID>
</Grantee>
<Permission>string</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>

Request elements
RequestTypeRequiredDescription
IDStringOptionalUser UUID
- Either ID or URI must be provided
URIStringOptionalGrants permission to the AllUsers group
- Either ID or URI must be provided
xsiStringRequired- CanonicalUser
- Group: only AllUsers is supported
PermissionStringOptional- FULL_CONTROL: grants storage.admin role
- WRITE: grants storage.objectCreator role
- WRITE-ACP: grants storage.policyWriter role
- READ: grants storage.objectReader role
- READ-ACP: grants storage.policyReader role
Response syntax
HTTP statusMessageDescription
200OKSuccess
401UnauthorizedPermission denied (invalid token)
403ForbiddenNo permission to modify
404Not foundBucket not found

Get bucket encryption

Retrieves the encryption configuration of the specified bucket.

API request format
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption
Request syntax
Request headers
KeyTypeRequiredDescription
Content-TypeStringRequiredMust be text/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request is sent to the AWS service
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope (required)
- SignedHeaders: list of signed headers (required)
- Signature: signature value (required)
Request body

This request does not include a body.

Response syntax

If the request succeeds, the service returns an HTTP 200 response.

GetBucketEncryption 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

Sets server-side encryption for a bucket.
Note: Encryption can only be enabled if the bucket is empty.

API request format
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption
Request syntax
Request headers
KeyTypeRequiredDescription
Content-MD5StringRequiredBase64-encoded MD5 digest of the request body for server-side encryption validation
Content-TypeStringRequiredMust be text/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the request body
X-Amz-DateStringRequiredDate and time the request was sent
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope (required)
- SignedHeaders: list of signed headers (required)
- Signature: signature value (required)
Request body
Put bucket encryption request syntax
<ServerSideEncryptionConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<ApplyServerSideEncryptionByDefault>
<SSEAlgorithm>String</SSEAlgorithm>
</ApplyServerSideEncryptionByDefault>
</Rule>
</ServerSideEncryptionConfiguration>
Request elements
RequestTypeRequiredDescription
SSEAlgorithmStringRequiredMust be AES256
Response syntax

If successful, the service returns an HTTP 200 response.

GetBucketLifecycle

Retrieves the lifecycle configuration settings of a bucket.

API request format
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle
Request syntax
Request headers
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the request body
X-Amz-DateStringRequiredDate and time of the request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope
- SignedHeaders: list of signed headers
- Signature: signature value
Response syntax

If successful, the service returns an HTTP 200 response.

Get bucket lifecycle 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
DaysIntegerRetention period of the object
PrefixStringPrefix of the object name
KeyStringTag key
ValueStringTag value
IDStringName of the lifecycle policy

PutBucketLifecycle

Sets lifecycle rules for the specified bucket.

API request format
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle
Request syntax
Request headers
KeyTypeRequiredDescription
Content-MD5StringRequiredBase64-encoded MD5 digest of the request body
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the request body
X-Amz-DateStringRequiredDate and time of the request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope
- SignedHeaders: list of signed headers
- Signature: signature value
Request Body
PutBucketLifecycle 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
RequestTypeRequiredDescription
StatusStringRequired- Enabled
- Disabled
DaysIntegerOptionalRetention period of the object
PrefixStringRequiredPrefix of the object name
KeyStringRequiredTag key
ValueStringRequiredTag value
IDStringOptionalName of the lifecycle policy
Response syntax

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

DeleteBucketLifecycle

Deletes all lifecycle settings configured on the specified bucket.

API request format
MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle
Request syntax
Request headers
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the request body
X-Amz-DateStringRequiredDate and time of the request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope
- SignedHeaders: list of signed headers
- Signature: signature value
Request body

This request does not contain a body.

Response syntax

If the operation is successful, the service returns an HTTP 204 response.

GetBucketLocation

Retrieves the region information of the specified bucket.

API request format
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?location
Request syntax
Request headers
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the request body
X-Amz-DateStringRequiredDate and time of the request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope
- SignedHeaders: list of signed headers
- Signature: signature value
Request body

This request does not contain a body.

Response syntax

If the operation is successful, the service returns 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
ResponseTypeDescription
RegionStringRegion information

Getobject

Retrieves an object stored in the bucket.

API request format
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}
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 of the AWS request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope
- SignedHeaders: list of signed headers
- Signature: signature value
Request body

This request does not contain a body.

Response syntax

If the operation is successful, the service returns an HTTP 200 response and retrieves the requested object.

ListObjectsV2

Retrieves the list of objects in a bucket.

API request format
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?list-type=2
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 of the AWS request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope
- SignedHeaders: list of signed headers
- Signature: signature value
Request body

This request does not contain a body.

Response syntax

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

ListObjectsV2 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
PrefixStringObject key prefix
MaxKeysIntegerMaximum number of keys returned in the response
IsTruncatedBooleanfalse: all keys returned
true: more keys available
KeyStringObject key
LastModifiedTimestampObject creation time
ETagStringObject hash value
SizeLongObject size
StorageClassStringStorage class of the object
KeyCountIntegerNumber of keys returned in the response

HeadObject

Retrieves metadata of an object.

API call method
MethodRequest URL
HEADhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}
Request syntax
Request header
KeyTypeRequiredDescription
Content-TypeStringRequiredSet to text/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request is made
AuthorizationStringRequiredAWS signature version 4 header including credential, signed headers, and signature
Request body

This request does not contain a body.

Response syntax

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

Response header
KeyDescription
DateTime the response was generated
Content-TypeType of the content in the body
Content-LengthSize of the object
ConnectionIndicates connection reuse
Accept-RangesAllows clients to request specific byte ranges
ETagIdentifier for detecting changes to the resource
Last-ModifiedLast modified date
X-Amz-ExpirationExpiration date set by lifecycle policy
X-Amz-Request-IdUnique request ID
X-Rgw-Object-TypeObject type handled by RGW: only normal is used
X-Content-Type-OptionsHeader to prevent MIME type sniffing
X-Frame-OptionsHeader to prevent click-jacking
X-XSS-ProtectionHeader indicating XSS protection behavior
Strict-Transport-SecurityHeader enforcing HTTPS communication

PutObject

Uploads a single object to a bucket.

API call method
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}
Request syntax
Request header
KeyTypeRequiredDescription
Content-TypeStringRequiredSet to text/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request is made
AuthorizationStringRequiredAWS signature version 4 header including credential, signed headers, and signature
X-Amz-TaggingStringOptionalObject tag value (e.g., Key1=Value1&Key2=Value2)
X-Amz-meta-keyStringOptionalMetadata value; replace key with the metadata key name and set the corresponding value
Request body

Binary data of the file to be uploaded.

Response syntax

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

CopyObject

Copies an object within a bucket.

API call method
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}
Request syntax
Request header
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request was made
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope
- SignedHeaders: list of signed headers
- Signature: calculated signature
x-amz-copy-sourceStringRequiredThe object key of the source object to be copied
Request body

This request does not contain a body.

Response syntax

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

CopyObject 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 the object
LastModifiedTimestampObject creation timestamp

DeleteObject

Deletes a single object.

API call method
MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}
Request syntax
Request header
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request was made
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope
- SignedHeaders: list of signed headers
- Signature: calculated signature
Request body

This request does not contain a body.

Response syntax

If the operation is successful, the service returns an HTTP 204 response. HTTP/1.1 204

DeleteObjects

Deletes multiple objects in bulk.

API call method
MethodRequest URL
POSThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?delete
Request syntax
Request header
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request was made
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope
- SignedHeaders: list of signed headers
- Signature: calculated signature
Request body

Enter the keys of the objects to be deleted in the request body.

DeleteObjects Requst Syntax
  <Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Object>
<Key>String</Key>
</Object>
<Object>
<Key>String</Key>
</Object>
</Delete>
Request elements
RequestTypeRequiredDescription
KeyStringRequiredObject key
Response syntax

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

Delete multiple objects 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
ResponseTypeRequiredDescription
KeyStringRequiredObject key

CreateMultipartUpload

Initiates a multipart upload and returns an upload ID.
The upload ID is used to associate all parts of the multipart upload.

API request method
MethodRequest URL
POSThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}/?uploads
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 of the AWS request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope (required)
- SignedHeaders: list of signed header names (required)
- Signature: signature value (required)
Request body

This request does not contain a body.

Response syntax

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

CreateMultipartUpload 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

Uploads a part of a multipart upload.

API request method
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?partNumber={Number}&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 of the AWS request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope (required)
- SignedHeaders: list of signed header names (required)
- Signature: signature value (required)
Request body

This request does not contain a body.

Response syntax

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

ListParts

Retrieves the list of parts that have been uploaded for a specific multipart upload.

API request method
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{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 of the AWS request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope (required)
- SignedHeaders: list of signed header names (required)
- Signature: signature value (required)
Request body

This request does not contain a body.

Response syntax

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

ListParts 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 the listing; only parts with a higher part number are listed
NextPartNumberMarkerStringValue indicating the last part listed
MaxPartsStringMaximum number of parts allowed in the response
IsTruncatedStringIndicates whether the part list was truncated
IDStringProject ID
DisplayNameStringProject name
LastModifiedStringUpload timestamp of the part
PartNumberStringPart identifier number (positive integer between 1 and 10,000)
ETagStringEntity tag of the uploaded part
SizeStringSize of the uploaded part

ListMultipartUploads

Lists ongoing multipart uploads in the bucket.
An ongoing multipart upload starts with a CreateMultipartUpload request and remains active until it is either completed or aborted.

API request method
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{Buckets}?uploads&max-uploads={number}
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 of the AWS request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope (required)
- SignedHeaders: list of signed header names (required)
- Signature: signature value (required)
Request body

This request does not contain a body.

Response syntax

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

ListMultipartUploads 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
NextKeyMarkerStringValue to use for the key-marker parameter in the next request
NextUploadIdMarkerStringValue to use for the upload-id-marker parameter in the next request
MaxUploadsIntegerMaximum number of multipart uploads
IsTruncatedStringIndicates whether the list of parts was truncated
KeyStringObject key to be uploaded
UploadIdStringMultipart upload ID
IDStringProject ID
DisplayNameStringProject name
StorageClassStringStorage class
InitiatedTimestampMultipart upload initiation time

UploadPartCopy

Uploads a part for a multipart upload by copying an object already stored in the bucket to the specified PartNumber.

API request method
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?partNumber={number}&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 of the AWS request
x-amz-copy-sourceStringRequiredObject key to copy as the part
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope (required)
- SignedHeaders: list of signed header names (required)
- Signature: signature value (required)
Request body

This request does not contain a body.

Response syntax

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

UploadPartCopy 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 timestamp
ETagStringObject hash value

CompleteMultipartUpload

Once all parts have been uploaded via CreateMultipartUpload, the multipart upload can be completed using CompleteMultipartUpload.
This operation assembles the previously uploaded parts into a single object.

API request method
MethodRequest URL
POSThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{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 of the AWS request
AuthorizationStringRequiredAWS Signature Version 4 header
- Credential: AWS access key ID and scope (required)
- SignedHeaders: list of signed header names (required)
- Signature: signature value (required)
Request Body
CompleteMultipartUpload Response Syntax
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Part>
<ETag>String</ETag>
<PartNumber>Integer</PartNumber>
</Part>
...
</CompleteMultipartUpload>
Request elements
RequestTypeRequiredDescription
ETagStringOptionalObject hash value
PartNumberIntegerOptionalPart identifier (positive integer between 1 and 10,000)
Response syntax

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

CompleteMultipartUpload 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 that identifies the newly created object
TenantStringProject ID
BucketStringBucket name
KeyStringObject key
ETagStringObject hash value

AbortMultipartUpload

Aborts a multipart upload. Once aborted, additional parts cannot be uploaded using the same Upload ID.

API request
MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?&uploadId={UploadID}
Request syntax
Request header
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request was made
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope
- SignedHeaders: List of signed header names
- Signature: Signature value
Request body

This request does not include a body.

Response syntax

If the operation is successful, the service returns an HTTP 204 response.

GetObjectTagging

Retrieves the tags associated with an object.

API request
MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{BucketName}/{ObjectKey}?tagging
Request syntax
Request header
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request was made
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope
- SignedHeaders: List of signed header names
- Signature: Signature value
Request body

This request does not include a body.

Response syntax

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

GetObjectTagging 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
ResponseTypeRequiredDescription
KeyStringRequiredObject tag key
ValueStringRequiredValue of the object tag key

PutObjectTagging

Adds tags to an object. Existing tags will be overwritten.

API request
MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging
Request syntax
Request header
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the request was made
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope
- SignedHeaders: List of signed header names
- Signature: Signature value
Request body
PutObjectTagging 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
Response syntax

If successful, the service returns an HTTP 200 response.

DeleteObjectTagging

Deletes the tags of an object.

API request
MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging
Request syntax
Request header
KeyTypeRequiredDescription
Content-TypeStringRequiredtext/html
X-Amz-Security-TokenStringRequiredAWS security token
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the AWS service request was sent
AuthorizationStringRequiredAWS Signature Version 4 authorization header
- Credential: AWS access key ID and credential scope (required)
- SignedHeaders: List of signed header names (required)
- Signature: Signature value (required)
Request body

This request does not contain a body.

Response syntax

If successful, the service returns an HTTP 200 response.