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

Get S3 Access Key

You can issue an S3 Access Key and use it as the credential for AWS Signature.

info

S3 Access Keys can be issued for service accounts and user accounts. For details, see the following guides.

Get temporary credentials key

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.

API call method
MethodRequest URL
POSThttps://objectstorage.{region_name}.kakaocloud.com/
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.

AWS Signature

AWS Signature is a digital signature required to authenticate requests when calling S3 APIs. When accessing S3 APIs directly through HTTP requests, AWS requires Signature Version 4 (SigV4) to verify the request.

AWS SDKs or CLIs handle signatures automatically. When calling S3 APIs directly over HTTP, such as with curl or Postman, you must generate AWS Signature manually.

AWS Signature is included in the S3 API Authorization header.

Create AWS Signature

Create a Signature Version 4 value and include it in the Authorization header when sending the request.

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 call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
HEADhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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

GetBucketEncryption

Retrieves the encryption configuration of the specified bucket.

API call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle
Request Syntax
Request Header
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 call method

MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?location
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
Request Syntax
Request Header
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 call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 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.

Response Header
ResponseTypeDescription
Content-LengthLongSize of the object in bytes
Content-TypeStringMedia type of the object
ETagStringEntity tag of the object

ListObjectsV2

Retrieves the list of objects in a bucket.

API call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?list-type=2
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 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}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 select-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}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 call method

MethodRequest URL
POSThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}/?uploads
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 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 call method

MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?partNumber={Number}&uploadId={UploadID}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 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 call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?uploadId={UploadID}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 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 call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{Buckets}?uploads&max-uploads={number}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 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 call method

MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?partNumber={number}&uploadId={UploadID}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 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 call method

MethodRequest URL
POSThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?&uploadId={UploadID}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 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 call method

MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?&uploadId={UploadID}
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 call method

MethodRequest URL
GEThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{BucketName}/{ObjectKey}?tagging
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 call method

MethodRequest URL
PUThttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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 call method

MethodRequest URL
DELETEhttps://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Object_KeyTarget object key
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.

GetBucketCors

Retrieves the Cross-Origin Resource Sharing (CORS) configuration set on a bucket.

API call method

MethodRequest URL
GEThttps://objectstorage.{Region_Name}.kakaocloud.com/{Bucket_Name}/?cors
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Request Syntax
GetBucketCors Response Syntax
curl --request GET --location 'https://objectstorage.{Region_Name}.kakaocloud.com/{Bucket_Name}/?cors' \
--header 'X-Amz-Content-Sha256: {content_sha256}' \
--header 'X-Amz-Date: {amz_date}' \
--header 'Authorization: {authorization_header}'
Request Header
KeyTypeRequiredDescription
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the AWS service request was sent
AuthorizationStringRequiredAWS Signature Version 4 header 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 does not include a body.

Response Syntax

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

GetBucketCors Response Syntax
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://example.com</AllowedOrigin>
<AllowedOrigin>http://example.com:8080</AllowedOrigin>
<AllowedOrigin>https://example.com</AllowedOrigin>
<AllowedOrigin>http://*.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedHeader>x-auth-token</AllowedHeader>
<ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
</CORSRule>
</CORSConfiguration>
Response Elements
ResponseTypeDescription
CORSRuleStringCORS policy. One or more CORSRule entries can exist, up to 10.
AllowedOriginStringDomain that can send CORS requests to the bucket, up to 200 characters.
AllowedMethodStringHTTP methods to allow: GET, PUT, POST, DELETE, HEAD, *. Configure 1 to 5 methods in uppercase.
AllowedHeaderStringRequest headers that clients can use for preflight requests, such as Content-Type, Authorization, or *. Configure 0 to 10 headers, up to 200 characters each.
ExposeHeaderStringHeaders exposed to clients in server responses, such as ETag, Authorization, and X-Custom-Header. Configure 0 to 10 headers, up to 200 characters each.
MaxAgeSecondsIntegerTime in seconds that a browser caches the preflight request result. Range: 0 to 86400 seconds.

PutBucketCors

Adds or modifies the Cross-Origin Resource Sharing (CORS) configuration for a bucket.

API call method

MethodRequest URL
PUThttps://objectstorage.{Region_Name}.kakaocloud.com/{Bucket_Name}/?cors
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Request Syntax
PutBucketCors Response Syntax
curl --request PUT --location 'https://objectstorage.{Region_Name}.kakaocloud.com/{Bucket_Name}/?cors' \
--header 'X-Amz-Content-Sha256: {content_sha256}' \
--header 'X-Amz-Date: {amz_date}' \
--header 'Authorization: {authorization_header}' \
--header 'Content-Type: application/xml' \
--data-raw '<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>'
Request Header
KeyTypeRequiredDescription
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the AWS service request was sent
AuthorizationStringRequiredAWS Signature Version 4 header 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
PutBucketCors Response Syntax
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
<ExposeHeader>ETag</ExposeHeader>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
Request Elements
ResponseTypeRequiredDescription
CORSRuleStringRequiredCORS policy. One or more CORSRule entries can exist, up to 10.
AllowedOriginStringRequiredDomain that can send CORS requests to the bucket, up to 200 characters.
AllowedMethodStringRequiredHTTP methods to allow: GET, PUT, POST, DELETE, HEAD, *. Configure 1 to 5 methods in uppercase.
AllowedHeaderStringOptionalRequest headers that clients can use for preflight requests, such as Content-Type, Authorization, or *. Configure 0 to 10 headers, up to 200 characters each.
ExposeHeaderStringOptionalHeaders exposed to clients in server responses, such as ETag, Authorization, and X-Custom-Header. Configure 0 to 10 headers, up to 200 characters each.
MaxAgeSecondsIntegerOptionalTime in seconds that a browser caches the preflight request result. Range: 0 to 86400 seconds.
Response Syntax

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

DELETEBucketCors

Deletes the Cross-Origin Resource Sharing (CORS) configuration from a bucket.

API call method

MethodRequest URL
DELETEhttps://objectstorage.{Region_Name}.kakaocloud.com/{Bucket_Name}/?cors
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Bucket_NameTarget bucket name
Request Syntax
PutBucketCors Response Syntax
curl --request DELETE --location 'https://objectstorage.{Region_Name}.kakaocloud.com/{Bucket_Name}/?cors' \
--header 'X-Amz-Content-Sha256: {content_sha256}' \
--header 'X-Amz-Date: {amz_date}' \
--header 'Authorization: {authorization_header}'
Request Header
KeyTypeRequiredDescription
X-Amz-Content-Sha256StringRequiredSHA256 hash of the content
X-Amz-DateStringRequiredDate and time the AWS service request was sent
AuthorizationStringRequiredAWS Signature Version 4 header 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 returns an HTTP 204 response.

CORS Preflight

  1. Browsers can use CORS Preflight to receive CORS configuration information.
    No separate token is required when calling CORS Preflight from a browser.
    The preflight request must be called with the project ID before the bucket name in the request URL, in the {project_id}:{Bucket_Name} format.

API call method

MethodRequest URL
OPTIONShttps://objectstorage.{Region_Name}.kakaocloud.com/{Project-Id}:{Bucket_Name}/?cors
Path Parameters
VariableDescription
Region_NameService region name (example: kr-central-2)
Project-IdProject ID
Bucket_NameTarget bucket name
Request Syntax
CORS Preflight Response Syntax
curl --request OPTIONS --location 'https://objectstorage.{Region_Name}.kakaocloud.com/{Bucket_Name}/{Object_Key}' \
--header 'Origin: {request_origin_url}' \
--header 'Access-Control-Request-Method: {method_to_use}' \
--header 'Access-Control-Request-Headers: {headers_to_use}' \
--verbose
Request Header
KeyTypeRequiredDescription
OriginStringRequiredServer location including protocol, host, and port. Example: http://example.com
Access-Control-Request-HeadersListOptionalList of headers, such as X-Auth-Token and Content-Type
Access-Control-Request-MethodListOptionalList of methods, such as HEAD, GET, PUT, POST, and DELETE
Request Body

This request does not include a body.

Response Header
ResponseTypeDescription
Access-Control-Allow-CredentialsBooleanOption that allows cookies to be shared between different domains.
- true: Allowed
- false: Not allowed
Access-Control-Allow-HeadersListRequest headers allowed in the request
Access-Control-Allow-MethodsListAllowed HTTP methods: HEAD, GET, PUT, POST, DELETE
Access-Control-Allow-OriginStringOrigin allowed for CORS requests. Example: http://example.com or wildcard *
Access-Control-Max-AgeIntegerTime that a browser can cache the preflight request result
Response Syntax

For Preflight, success or failure is not determined by the response status code.
If a CORSRule exists, response header values are returned. If not, no meaningful header values are returned.

Common status codes

HTTP StatusMessageDescription
200OKSuccess
204No ContentSuccess
400BadRequestRequest information error
401UnauthorizedAuthentication failed
403ForbiddenNo permission
404Not FoundRequested resource not found