S3
카카오클라우드의 Object Storage는 S3 API와 호환성을 제공합니다.
API 사용 준비
API를 호출하기 위해 필요한 사전 작업은 API 사용 준비 문서를 참고하시기 바랍니다.
호환 가능한 S3 Tools 버전
카카오클라우드에서 호환 가능한 SDK 및 S3 CLI 최신 버전 정보를 안내드립니다.
보다 높은 버전을 사용할 경우, 요청이 정상적으로 동작하지 않을 수 있습니다.
구분 | 호환 가능한 최대 버전 |
---|---|
S3 CLI | 2.22.0 |
python boto3 | 1.35.99 |
javascript | v3.726.1 |
Authentication
S3 Access Key 발급
S3 Access Key를 발급하여 AWS Signature의 Credential로 이용할 수 있습니다.
S3 Access Key는 서비스 계정과 사용자 계정으로 발급할 수 있습니다. 자세한 사항은 아래 가이드 링크를 통해서 확인해 주세요.
임시 자격 증명 key 발급
현재는 AssumeRoleWithWebIdentity
만 지원합니다.
Openstack Token을 이용하여 token 사용자의 권한으로 임시 자격 증명을 만들 수 있습니다.
생성된 임시 자격 증명은 사용자 token이 발급된 project의 role을 동일하게 부여받습니다.
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}"
}'
메서드 | 요청 URL |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/ |
Request Elements
Query | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Action | string | 필수 | 수행하려는 Action의 종류 - AssumeRoleWithWebIdentity 만 지원됨 |
DurationSeconds | integer | 선택 | 임시 자격 증명이 유효한 지속 기간 |
ProviderId | string | 선택 | WebIdentity를 제공하는 주체 현재는 iam.kakaocloud.com 만 제공함 |
WebIdentityToken | string | 필수 | Openstack에서 발급한 토큰 |
Response Syntax
<AssumeRoleWithWebIdentityResponse>
<AssumeRoleWithWebIdentityResult>
<SubjectFromWebIdentityToken>{user_id}</SubjectFromWebIdentityToken>
<Credentials>
<SessionToken>{session_token}</SessionToken>
<SecretAccessKey>{session_secret_key}</SecretAccessKey>
<Expiration>{expiration}</Expiration>
<AccessKeyId>{session_access_key}</AccessKeyId>
</Credentials>
<Provider>iam.kakaocloud.com</Provider>
</AssumeRoleWithWebIdentityResult>
<ResponseMetadata>
<RequestId>{request_id}</RequestId>
</ResponseMetadata>
</AssumeRoleWithWebIdentityResponse>
Response Elements
Response | 유형 | 설명 |
---|---|---|
user_id | String | 임시자격 증명이 사용할 사용자 ID |
session_token | String | 임시 자격 증명의 보안 토큰 |
session_secret_key | String | 임시 자격 증명의 보안 액세스 키 |
session_access_key | String | 임시 자격 증명의 보안 액세스 키 ID |
expiration | Timestamp | 임시 자격 증명의 만료 시간 |
AWS Signature
AWS Signature는 사용자가 S3 API를 호출할 때 요청을 인증하기 위해 필요한 디지털 서명입니다. S3 API처럼 HTTP 요청으로 직접 접근하는 경우, AWS는 요청의 유효성을 검증하기 위해 Signature Version 4 (SigV4) 서명을 요구합니다.
AWS SDK 또는 CLI를 사용할 경우 서명이 자동으로 처리되지만, HTTP로 직접 S3 API 호출할 경우에는 (curl, Postman 등) AWS Signature를 수동으로 생성해야 합니다.
AWS Signature는 S3 API Authorization 헤더
에 포함되어 요청 됩니다.
Authorization 헤더의 구성요소는 다음과 같습니다.
Authorization: AWS4-HMAC-SHA256 Credential=<AccessKeyID>/<Scope>, SignedHeaders=<SignedHeaders>, Signature=<Signature>
구성 요소 | 설명 |
---|---|
AWS4-HMAC-SHA256 | 서명 알고리즘 (Signature Version 4를 의미) |
Credential | AccessKeyID , Scope 로 구성된 자격 증명 범위 |
AccessKeyID : S3 액세스 키의 인증 키 (AccessKey) | |
Scope : - 요청 날짜 : YYYYMMDD - 리전 : kr-gov-central-1 - 서비스 : s3 | |
SignedHeaders | 서명에 포함된 HTTP 헤더 목록 (예: host, content-type 등) |
Signature | 요청 전체에 대해 해시 기반 메시지 인증 코드 (HMAC-SHA256)로 생성된 서명 값 |
Signature 생성
Signature 생성에 필요한 구성요소는 다음과 같습니다.
구성 요소 | 설명 |
---|---|
SecretKey | S3 액세스 키의 보안 액세스 키 (Secret Key) |
Date | YYYYMMDD 포맷 |
Region | kr-gov-central-1 리전 |
Service | s3 |
Signing | aws4_request : Signature Version 4 (SigV4) 인증을 나타내는 문자열 |
AWS4-HMAC-SHA256는 AWS Signature Version 4 에서 사용하는 서명 알고리즘 이름입니다. 즉, Signature 구성 요소들을 SHA256 해시 함수를 기반으로 HMAC(해시 기반 메시지 인증 코드)를 계산하여 API 요청을 서명합니다.
`Signature` = Hex(HMAC-SHA256(<SigningKey>, <StringToSign>))
S3 API 리전별 지원 여부
카카오클라우드 Object Storage의 bucket CORS 기능을 사용하거나 Public Access가 설정된 버킷에 s3 엔드포인트 url로 접근하려면 project id를 다음과 같이 함께 명기해야 합니다.
https://objectstorage.kr-central-2.kakaocloud.com/{project-id}:{bucket-name}/{object-path}
ExpectedOwner
기능은 현재 지원하지 않습니다.
Feature | API 지원 현황 | 설명 |
---|---|---|
ListBuckets | Supported | |
SecurityTokenService | Partially supported | AssumeRoleWithWebIdentity 만 지원 |
HeadBucket | Supported | |
GetBucketAccelerateConfiguration | ||
GetBucketAcl | Supported | |
GetBucketAnalyticsConfiguration | ||
ListBucketAnalyticsConfigurations | ||
GetBucketCors | Supported | |
GetBucketEncryption | Supported | |
GetBucketIntelligentTieringConfiguration | ||
ListBucketIntelligentTieringConfigurations | ||
GetBucketInventoryConfiguration | ||
ListBucketInventoryConfigurations | ||
GetBucketLifecycle | Supported | |
GetBucketLifecycleConfiguration | Supported | |
GetBucketLocation | Supported | |
GetBucketLogging | Supported | |
GetBucketMetricsConfiguration | ||
ListBucketMetricsConfigurations | ||
GetBucketNotification | ||
GetBucketNotificationConfiguration | ||
GetBucketOwnershipControls | ||
GetBucketPolicy | ||
GetBucketPolicyStatus | ||
GetBucketReplication | ||
GetBucketRequestPayment | ||
GetBucketTagging | ||
GetBucketVersioning | ||
GetBucketWebsite | ||
ListObjectVersions | ||
ListObjectsV2 | Supported | |
GetObjectLockConfiguration | ||
GetPublicAccessBlock | ||
ListMultipartUploads | Supported | |
ListObjects | Supported | |
PutBucketAccelerateConfiguration | ||
PutBucketAcl | Partially supported | 사용자 ID와 AllUsers URI 기반의 설정만 가능 |
PutBucketAnalyticsConfiguration | ||
PutBucketCors | Supported | |
PutBucketEncryption | Partially supported | 버킷이 비어있는 경우에만 설정 가능 |
PutBucketIntelligentTieringConfiguration | ||
PutBucketInventoryConfiguration | ||
PutBucketLifecycle | Partial Supported | |
PutBucketLifecycleConfiguration | Partial Supported | |
PutBucketLogging | Supported | |
PutBucketMetricsConfiguration | ||
PutBucketNotification | ||
PutBucketNotificationConfiguration | ||
PutBucketOwnershipControls | ||
PutBucketPolicy | ||
PutBucketReplication | ||
PutBucketRequestPayment | ||
PutBucketTagging | ||
PutBucketVersioning | ||
PutBucketWebsite | ||
PutObjectLockConfiguration | ||
PutPublicAccessBlock | ||
CreateBucket | Supported | |
DeleteBucketAnalyticsConfiguration | ||
DeleteBucketCors | Supported | |
DeleteBucketEncryption | ||
DeleteBucketIntelligentTieringConfiguration | ||
DeleteBucketInventoryConfiguration | ||
DeleteBucketLifecycle | Supported | |
DeleteBucketMetricsConfiguration | ||
DeleteBucketOwnershipControls | ||
DeleteBucketPolicy | ||
DeleteBucketReplication | ||
DeleteBucketTagging | ||
DeleteBucketWebsite | ||
DeletePublicAccessBlock | ||
DeleteBucket | Supported | |
DeleteObjects | Supported | |
HeadObject | Supported | |
GetObjectAcl | ||
GetObjectAttributes | ||
GetObjectLegalHold | ||
GetObjectRetention | ||
GetObjectTagging | Supported | |
GetObjectTorrent | ||
ListParts | Supported | |
GetObject | Supported | |
PutObjectAcl | ||
PutObjectLegalHold | ||
PutObjectRetention | ||
PutObjectTagging | Supported | |
UploadPartCopy | Supported | |
UploadPart | Supported | |
CopyObject | Supported | |
PutObject | Supported | |
AbortMultipartUpload | Supported | |
DeleteObjectTagging | Supported | |
DeleteObject | Supported | |
CompleteMultipartUpload | Supported | |
CreateMultipartUpload | Supported | |
RestoreObject | ||
SelectObjectContent | ||
WriteGetObjectResponse |
API 사용 가이드
ListBuckets
프로젝트에 생성된 모든 버킷을 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/ |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<DisplayName>String</DisplayName>
<ID>String</ID>
</Owner>
<Buckets>
<Bucket>
<Name>String</Name>
<CreationDate>Timestamp</CreationDate>
</Bucket>
</Buckets>
</ListAllMyBucketsResult>
Response Elements
Response | 유형 | 설명 |
---|---|---|
DisplayName | String | 사용자 ID |
ID | String | 사용자 고유 ID |
Name | String | 버킷 이름 |
CreationDate | Timestamp | 생성 날짜 |
HeadBucket
버킷의 존재 여부나 접근 권한이 있는지 확인하기 위해 HeadBucket API를 사용할 수 있습니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
Head | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
Response Headers
Key | 설명 |
---|---|
Date | Response 생성 시간 |
Content-Length | response의 body 크기 |
Connection | Connection 재사용 여부 |
X-Amz-Request-Id | Request 고유 ID |
X-Rgw-Bytes-Used | 생성 날짜 |
X-Rgw-Object-Count | Bucket 내 오브젝트 수 |
X-Rgw-Quota-Bucket-Objects | 미사용 |
X-Rgw-Quota-Bucket-Size | 미사용 |
X-Rgw-Quota-Max-Buckets | 미사용 |
X-Rgw-Quota-User-Objects | 미사용 |
X-Rgw-Quota-User-Size | 미사용 |
X-Content-Type-Options | MIME type sniffing을 막기 위한 보안용 헤더 |
X-Frame-Options | click-jacking을 막기 위한 보안용 헤더 |
X-XSS-Protection | Browser에서 XSS attack이 detection 되었을 때는 동작 방식을 나타내기 위한 보안용 헤더 |
Strict-Transport-Security | https 통신만 허용하게 하는 보안용 헤더 |
CreateBucket
버킷을 생성합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
DeleteBucket
버킷을 삭제합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 204 응답을 받습니다.
GetBucketAcl
버킷의 접근 가능한 역할 권한 정보를 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<AccessControlPolicy>
<Owner>
<ID>string</ID>
<DisplayName>string</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
<ID>string</ID>
<DisplayName>string</DisplayName>
</Grantee>
<Permission>string</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
Response Elements
Response | 유형 | 설명 |
---|---|---|
DisplayName | String | 사용자 ID |
ID | String | 사용자 고유 ID |
xsi | String | - CanonicalUser - Group : 'AllUsers' 만 가능 |
Permission | String | - FULL_CONTROL - WRITE - WRITE_ACP - READ - READ_ACP |
PutBucketAcl
버킷의 역할 권한을 설정합니다. Header 또는 Body를 통해 버킷에 역할 권한을 설정할 수 있습니다. 단, Header와 Body에 모두 역할 권한을 설정하였다면, Body에 설정한 내용으로 API가 적용 됩니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?acl |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Content-Type | String | 필수 | text/html |
x-amz-acl | String | 선택 | 버킷에 적용할 canned ACL - private : public 공개하지 않음. 초기 역할 및 storage.owner를 제외한 모든 사용 허가 제거- public-read : 모든 사용자에게 storage.objectReader 역할 부여- public-read-write : 모든 사용자에게 storage.objectCreator 역할 부여- authenticated-read : 모든 IAM 사용자 storage.objectReader 역할 부여 |
Content-MD5 | String | 필수 | Request Body 내용을 서버 측 암호화 구성에 대한 MD5 다이제스트를 Base64로 인코딩한 값 |
x-amz-grant-full-control | String | 선택 | 지정된 사용자에게 storage.admin 역할을 부여(사용자 ID 또는 Alluser 만 입력 가능) - 사용자 ID : id=사용자 uuid - AllUsers : uri=http://acs.amazonaws.com/groups/global/AllUsers |
x-amz-grant-read | String | 선택 | 지정된 사용자에게 storage.objectReader 역할을 부여(사용자 ID 또는 Alluser 만 입력 가능) - 사용자 ID : id=사용자 uuid - AllUsers : uri=http://acs.amazonaws.com/groups/global/AllUsers |
x-amz-grant-read-acp | String | 선택 | 지정된 사용자에게 storage.policyReader 역할을 부여(사용자 ID 또는 Alluser 만 입력 가능) - 사용자 ID : id=사용자 uuid - AllUsers : uri=http://acs.amazonaws.com/groups/global/AllUsers |
x-amz-grant-write | String | 선택 | 지정된 사용자에게 storage.objectCreator 역할을 부여(사용자 ID 또는 Alluser 만 입력 가능) - 사용자 ID : id=사용자 uuid - AllUsers : uri=http://acs.amazonaws.com/groups/global/AllUsers |
x-amz-grant-write-acp | String | 선택 | 지정된 사용자에게 storage.policyWriter 역할을 부여(사용자 ID 또는 Alluser 만 입력 가능) - 사용자 ID : id=사용자 uuid - AllUsers : uri=http://acs.amazonaws.com/groups/global/AllUsers |
Request Body
<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
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
ID | String | 선택 | 사용자 UUID - ID 와 URI 중 하나는 입력이 되어야 함 |
URI | String | 선택 | AllUsers 그룹에 권한 부여 - ID 와 URI 중 하나는 입력이 되어야 함 |
xsi | String | 필수 | - CanonicalUser - Group : 'AllUsers' 만 가능 |
Permission | String | 선택 | - FULL_CONTROL : storage.admin 역할- WRITE : storage.objectCreator 역할- WRITE-ACP : storage.policyWriter 역할- READ : storage.objectReader 역할- READ-ACP : storage.policyReader 역할 |
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
GetBucketEncryption
버킷의 암호화 설정 정보를 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<?xml version="1.0" encoding="UTF-8"?>
<ServerSideEncryptionConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<ApplyServerSideEncryptionByDefault>
<SSEAlgorithm>String</SSEAlgorithm>
</ApplyServerSideEncryptionByDefault>
</Rule>
</ServerSideEncryptionConfiguration>
Response Elements
Response | 유형 | 설명 |
---|---|---|
SSEAlgorithm | String | AES256 |
PutBucketEncryption
버킷 암호화를 설정합니다. (버킷에 오브젝트가 비어 있는 경우에만 설정이 가능합니다.)
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?encryption |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Content-MD5 | String | 필수 | Request Body 내용을 서버 측 암호화 구성에 대한 MD5 다이제스트를 Base64로 인코딩한 값 |
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
<ServerSideEncryptionConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<ApplyServerSideEncryptionByDefault>
<SSEAlgorithm>String</SSEAlgorithm>
</ApplyServerSideEncryptionByDefault>
</Rule>
</ServerSideEncryptionConfiguration>
Request Elements
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
SSEAlgorithm | String | 필수 | AES256 |
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
GetBucketLifecycle
버킷 라이프 사이클 설정 정보를 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<Status>string</Status>
<Expiration>
<Days>integer</Days>
</Expiration>
<Filter>
<And>
<Prefix>string</Prefix>
<Tag>
<Key>string</Key>
<Value>string</Value>
</Tag>
</And>
</Filter>
<ID>string</ID>
</Rule>
</LifecycleConfiguration>
Response Elements
Response | 유형 | 설명 |
---|---|---|
Status | String | - Enabled - Disabled |
Days | integer | 객체 유지 기간 |
Prefix | String | 객체 이름 Prefix |
Key | String | 태그 키 |
Value | String | 태그 값 |
ID | String | Lifecycle 정책명 |
PutBucketLifecycle
버킷 라이프 사이클 규칙을 설정합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Content-MD5 | String | 필수 | Request Body 내용을 서버 측 암호화 구성에 대한 MD5 다이제스트를 Base64로 인코딩한 값 |
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<Expiration>
<Days>Integer</Days>
</Expiration>
<Filter>
<And>
<Prefix>String</Prefix>
<Tag>
<Key>String</Key>
<Value>String</Value>
</Tag>
</And>
</Filter>
<ID>String</ID>
<Status>String</Status>
</Rule>
</LifecycleConfiguration>
Request Elements
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Status | String | 필수 | - Enabled - Disabled |
Days | Integer | 선택 | 객체 유지 기간 |
Prefix | String | 필수 | 객체 이름 Prefix |
Key | String | 필수 | 태그 키 |
Value | String | 필수 | 태그값 |
ID | String | 선택 | Lifecycle 정책 명 |
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
DeleteBucketLifecycle
버킷의 모든 라이프 사이클 설정을 삭제합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?lifecycle |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 204 응답을 받습니다.
GetBucketLocation
버킷의 리전 정보를 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?location |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<?xml version="1.0" encoding="UTF-8"?>
<LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">String</LocationConstraint>
Response Elements
Response | 유형 | 설명 |
---|---|---|
Region | String | 리전 정보 |
Getobject
버킷에 저장된 객체를 가져옵니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다. 요청된 객체를 불러옵니다.
ListObjectsV2
버킷의 객체 리스트를 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?list-type=2 |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Name>String</Name>
<Prefix>String</Prefix>
<MaxKeys>Integer</MaxKeys>
<IsTruncated>Boolean</IsTruncated>
<Contents>
<Key>String</Key>
<LastModified>Timestamp</LastModified>
<ETag>String</ETag>
<Size>Long</Size>
<StorageClass>String</StorageClass>
</Contents>
<KeyCount>Integer</KeyCount>
</ListBucketResult>
Response Elements
Response | 유형 | 설명 |
---|---|---|
Tenant | String | 프로젝트 ID |
Name | String | 버킷 이름 |
Prefix | String | 접두사 |
MaxKeys | Integer | 응답에 반환되는 Key의 최대 수를 설정하는 매개 변수 |
IsTruncated | Boolean | false : Key가 모두 반환됨, true : 더 많은 Key가 반환 가능함 |
Key | String | 객체 키 |
LastModified | Timestamp | 객체 생성 일시 |
ETag | String | 객체의 해시값 |
Size | Long | 객체 크기 |
StorageClass | String | 객체를 저장하고 있는 스토리지 클래스 |
KeyCount | Integer | 요청으로 반환된 키의 개수 |
HeadObject
객체 Head 정보를 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
HEAD | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
Response Header
Key | 설명 |
---|---|
Date | response 생성 시간 |
Content-Type | body에 담긴 content의 형식 |
Content-Length | Object 크기 |
Connection | connection 재활용 여부 |
Accept-Ranges | 클라이언트가 원하는 파일의 일부분을 바이트 단위로 요청할 수 있음 |
Etag | 웹 서버가 리소스의 내용이나 메타데이터가 변경되었는지를 식별하기 위한 식별자 |
Last-Modified | 마지막 수정일 |
X-Amz-Expiration | Lifecycle에 의해 지정된 만료일 |
X-Amz-Request-Id | Request 고유 ID |
X-Rgw-Object-Type | RGW에서 처리하는 Object 유형 : normal만 사용 |
X-Content-Type-Options | MIME type sniffing을 막기 위한 보안용 헤더 |
X-Frame-Options | click-jacking을 막기 위한 보안용 헤더 |
X-XSS-Protection | Browser에서 XSS attack이 detection 되었을 때는 동작 방식을 나타내기 위한 보안용 헤더 |
Strict-Transport-Security | https 통신만 허용하게 하는 보안용 헤더 |
PutObject
버킷에 단일 객체를 업로드합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
X-Amz-Tagging | String | 필수 | 객체 태그값 (선택) ex) Key1=Value1&Key2=Value2 |
X-Amz-meta-key | String | 필수 | 메타 데이터값 (선택) ex) key = 메타데이터 Key 이름, Value = 메타 데이터값 |
Request Body
업로드할 파일의 Binary Data
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
CopyObject
버킷에 객체를 복사합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
x-amz-copy-source | String | 필수 | 복사 대상이 되는 객체 키 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<CopyObjectResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<ETag>String</ETag>
<LastModified>Timestamp</LastModified>
</CopyObjectResult>
Response Elements
Response | 유형 | 설명 |
---|---|---|
ETag | String | 객체의 해시값 |
LastModified | Timestamp | 객체 생성 일시 |
DeleteObject
단일 객체를 삭제합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 204 응답을 받습니다.
DeleteObjects
객체를 벌크 삭제합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?delete |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
삭제할 객체 키를 Body에 입력합니다.
<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Object>
<Key>String</Key>
</Object>
<Object>
<Key>String</Key>
</Object>
</Delete>
Request Elements
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Key | String | 필수 | 객체 키 |
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Deleted>
<Key>String</Key>
</Deleted>
<Deleted>
<Key>String</Key>
</Deleted>
</DeleteResult>
Response Elements
Response | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Key | String | 필수 | 객체 키 |
CreateMultipartUpload
멀티파트 업로드를 시작하고, Upload ID를 응답합니다. Upload ID는 멀티파트 업로드의 모든 파트와 연관시키는데 사용합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}/?uploads |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<InitiateMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<Key>multipart2</Key>
<UploadId>2~7HdUyr3lqN3Ze9MwWxCyxqGBVc_2BoU</UploadId>
</InitiateMultipartUploadResult>
Response Elements
Response | 유형 | 설명 |
---|---|---|
Tenant | String | 프로젝트 ID |
Bucket | String | 버킷 이름 |
Key | String | 업로드할 객체 키 |
UploadId | String | 멀티파트 업로드 ID |
UploadPart
멀티파트 업로드에 하나의 파트를 업로드합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?partNumber={Number}&uploadId={UploadID} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
ListParts
특정 멀티파트 업로드에 업로드된 파트들을 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?uploadId={UploadID} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<ListPartsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<Key>String</Key>
<UploadId>String</UploadId>
<StorageClass>String</StorageClass>
<PartNumberMarker>Integer</PartNumberMarker>
<NextPartNumberMarker>Integer</NextPartNumberMarker>
<MaxParts>Integer</MaxParts>
<IsTruncated>Boolean</IsTruncated>
<Owner>
<ID>String</ID>
<DisplayName>String</DisplayName>
</Owner>
<Part>
<LastModified>Timestamp</LastModified>
<PartNumber>Integer</PartNumber>
<ETag>String</ETag>
<Size>Long</Size>
</Part>
<Part>
<LastModified>Timestamp</LastModified>
<PartNumber>Integer</PartNumber>
<ETag>String</ETag>
<Size>Long</Size>
</Part>
<Part>
<LastModified>Timestamp</LastModified>
<PartNumber>Integer</PartNumber>
<ETag>String</ETag>
<Size>Long</Size>
</Part>
</ListPartsResult>
Response Elements
Response | 유형 | 설명 |
---|---|---|
Tenant | String | 프로젝트 ID |
Bucket | String | 버킷 이름 |
Key | String | 업로드할 객체 키 |
UploadId | String | 멀티파트 업로드 ID |
StorageClass | String | 스토리지 클래스 |
PartNumberMarker | String | 나열의 시작되는 값, PartNumber가 더 높은 part만 나열됨 |
NextPartNumberMarker | String | 목록의 마지막 part를 지정하는 값 |
MaxParts | String | 응답에 허용된 최대 part 수 |
IsTruncated | String | Part 목록이 잘렸는지 여부 |
ID | String | 프로젝트 ID |
DisplayName | String | 프로젝트 이름 |
LastModified | Timestamp | Part의 업로드된 시간 |
PartNumber | String | Part 식별 번호, 1 ~ 10000의 양의 정수 |
ETag | String | 업로드된 Part의 Entity Tag |
Size | String | 업로드된 Part의 크기 |
ListMultipartUploads
버킷에 진행 중인 멀티파트 업로드들을 리스팅합니다. 진행 중인 멀티파트 업로드는 CreateMultipartUpload 요청으로 시작되었고 아직 완료 또는 중지되지 않은 MultipartUpload입니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{Buckets}?uploads&max-uploads={number} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<?xml version="1.0" encoding="UTF-8"?>
<ListMultipartUploadsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<NextKeyMarker>String</NextKeyMarker>
<NextUploadIdMarker>String</NextUploadIdMarker>
<MaxUploads>Integer</MaxUploads>
<IsTruncated>Boolean</IsTruncated>
<Upload>
<Key>String</Key>
<UploadId>String</UploadId>
<Initiator>
<ID>String</ID>
<DisplayName>String</DisplayName>
</Initiator>
<Owner>
<ID>String</ID>
<DisplayName>String</DisplayName>
</Owner>
<StorageClass>String</StorageClass>
<Initiated>Timestamp</Initiated>
</Upload>
</ListMultipartUploadsResult>
Response Elements
Response | 유형 | 설명 |
---|---|---|
Tenant | String | 프로젝트 ID |
Bucket | String | 버킷 이름 |
NextKeyMarker | String | 다음 요청에서 key-marker 요청 매개변수에 사용해야 하는 값 |
NextUploadIdMarker | String | 다음 요청에서 upload-id-marker 요청 매개변수에 사용해야 하는 값 |
MaxUploads | Integer | 멀티파트 업로드의 최대 수 |
IsTruncated | String | Part 목록이 잘렸는지 여부 |
Key | String | 업로드할 객체 키 |
UploadId | String | 멀티파트 업로드 ID |
ID | String | 프로젝트 ID |
DisplayName | String | 프로젝트 이름 |
StorageClass | String | 스토리지 클래스 |
Initiated | Timestamp | 멀티파트 업로드 시작 일시 |
UploadPartCopy
CreateMultipartUpload에 업로드 Part시 Bucket에 있는 오브젝트를 다음 PartNumber에 업로드할 수 있습니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?partNumber={number}&uploadId={UploadID} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
x-amz-copy-source | String | 필수 | Upload Part 대상의 객체 키 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<?xml version="1.0" encoding="UTF-8"?>
<CopyPartResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<LastModified>Timestamp</LastModified>
<ETag>String</ETag>
</CopyPartResult>
Response Elements
Response | 유형 | 설명 |
---|---|---|
LastModified | Timestamp | 객체 업로드 일시 |
ETag | String | 객체의 해시값 |
CompleteMultipartUpload
CreateMultipartUpload에 업로드 Part가 완료 되었다면 CompleteMultipartUpload를 통하여 완료 시킬 수 있다. 이전에 업로드된 Part들을 조립하여 멀티파트 업로드를 완료 한다.
API 호출 방식
메서드 | 요청 URL |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?&uploadId={UploadID} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Part>
<ETag>String</ETag>
<PartNumber>Integer</PartNumber>
</Part>
...
</CompleteMultipartUpload>
Request Elements
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
ETag | String | 선택 | 객체의 해시값 |
PartNumber | Integer | 선택 | 파트 식별 번호 (1 - 10,000 사이의 양의 정수) |
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Location>String</Location>
<Tenant>String</Tenant>
<Bucket>String</Bucket>
<Key>String</Key>
<ETag>String</ETag>
</CompleteMultipartUploadResult>
Response Elements
Response | 유형 | 설명 |
---|---|---|
Location | String | 새로 생성된 객체를 식별하는 URI 값 |
Tenant | String | 프로젝트 ID |
Bucket | String | 버킷 이름 |
Key | String | 객체 키 |
ETag | String | 객체의 해시값 |
AbortMultipartUpload
Multipart Upload를 중단합니다. Multipart Upload가 중단된 후에는 해당 Upload ID를 사용하여 추가 Part를 업로드할 수 없습니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?&uploadId={UploadID} |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 204 응답을 받습니다.
GetObjectTagging
오브젝트의 태그를 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{BucketName}/{ObjectKey}?tagging |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<?xml version="1.0" encoding="UTF-8"?>
<Tagging xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>String</Key>
<Value>String</Value>
</Tag>
</TagSet>
</Tagging>
Response Elements
Response | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Key | String | 필수 | 객체 태그 키 |
Value | String | 필수 | 객체 태그 키의 값 |
PutObjectTagging
오브젝트의 태그를 추가합니다. 기존 태그값을 덮어씁니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
<Tagging xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>String</Key>
<Value>String</Value>
</Tag>
</TagSet>
</Tagging>
Request Elements
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Key | String | 필수 | 객체 태그 키 |
Value | String | 필수 | 객체 태그 키의 값 |
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
DeleteObjectTagging
오브젝트의 태그를 삭제합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/{ObjectKey}?tagging |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
GetBucketCors
버킷에 설정된 Cross-Origin Resource Sharing(CORS) 설정 정보를 조회합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?cors |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
<?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
Response | 유형 | 설명 |
---|---|---|
CORSRule | String | CORS 정책. 하나 이상의 CORSRule이 존재 가능 (최대 10개) |
AllowedOrigin | String | 버킷에 CORS 요청을 보낼 수 있는 도메인 (최대 200자) |
AllowedMethod | String | 허용할 HTTP 메서드 : GET , PUT , POST , DELETE , HEAD , * (1~5개) (대문자) |
AllowedHeader | String | Preflight 요청 시, 클라이언트가 사용할 수 있도록 허용할 요청 헤더 : Content-Type , Authorization * (0~10개) (최대 200자) |
ExposeHeader | String | 서버 응답에서 브라우저가 클라이언트에서 접근할 수 있도록 노출할 헤더 목록 예) ETag , Authorization , X-Custom-Header 등 (0~10개) (최대 200자) |
MaxAgeSeconds | Integer | 브라우저가 Preflight 요청 결과를 캐싱할 시간(초) (0~86400초) |
PutBucketCors
버킷에 Cross-Origin Resource Sharing(CORS) 설정을 추가 또는 변경 합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?cors |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Request Body
<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
Response | 유형 | 필수 여부 | 설명 |
---|---|---|---|
CORSRule | String | 필수 | CORS 정책. 하나 이상의 CORSRule이 존재 가능 (최대 10개) |
AllowedOrigin | String | 필수 | 버킷에 CORS 요청을 보낼 수 있는 도메인 (최대 200자) |
AllowedMethod | String | 필수 | 허용할 HTTP 메서드 : GET , PUT , POST , DELETE , HEAD , * (1~5개) (대문자) |
AllowedHeader | String | 선택 | Preflight 요청 시, 클라이언트가 사용할 수 있도록 허용할 요청 헤더 : Content-Type , Authorization * (0~10개) (최대 200자) |
ExposeHeader | String | 선택 | 서버 응답에서 브라우저가 클라이언트에서 접근할 수 있도록 노출할 헤더 목록 예) ETag , Authorization , X-Custom-Header 등 (0~10개) (최대 200자) |
MaxAgeSeconds | Integer | 선택 | 브라우저가 Preflight 요청 결과를 캐싱할 시간(초) (0~86400초) |
Response Syntax
동작에 성공하면, 서비스는 HTTP 200 응답을 받습니다.
DELETEBucketCors
버킷에 Cross-Origin Resource Sharing(CORS) 설정을 삭제 합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
DELETE | https://objectstorage.kr-central-2.kakaocloud.com/{BucketName}/?cors |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Amz-Content-Sha256 | String | 필수 | 콘텐츠의 SHA256 해시값 |
X-Amz-Date | String | 필수 | AWS 서비스 요청을 보낸 날짜와 시간 |
Authorization | String | 필수 | 요청에 서명된 AWS 서명 버전 4 헤더 - Credential: AWS 액세스 키 ID 및 자격 증명 범위 (필수) - SignedHeaders: 서명된 헤더 이름 목록 (필수) - Signature: 서명 값 (필수) |
Response Syntax
동작에 성공하면, 서비스는 HTTP 204 응답을 받습니다.
CORS Preflight
- 브라우저는 CORS Preflight를 통해 , CORS 설정 정보를 반환할 수 있습니다.
브라우저에서 CORS Preflight를 호출 할때는 별도의 토큰이 필요하지 않습니다.
Preflight 요청은 요청 URL의 버킷이름 앞에{project_id}:{BucketName}
형태로 호출이 필요합니다.
API 호출 방식
메서드 | 요청 URL |
---|---|
OPTIONS | https://objectstorage.kr-central-2.kakaocloud.com/{project-id}:{BucketName}/?cors |
Request Syntax
Request Header
Key | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Origin | String | 필수 | Protocol과 Host, Port까지 모두 합친 서버의 위치 http://example.com |
Access-Control-Request-Headers | List | 선택 | 헤더의 리스트 - X-Auth-Token, Content-Type |
Access-Control-Request-Method | List | 선택 | 메서드의 리스트 - HEAD , GET , PUT , POST , DELETE |
Request Body
이 요청은 Body 값을 가지지 않습니다.
Response Header
Response | 유형 | 설명 |
---|---|---|
Access-Control-Allow-Credentials | Boolean | 서로 다른 도메인 간 쿠키 공유를 허락하는 옵션 - true: 허용 false: 허용하지 않음 |
Access-Control-Allow-Headers | List | 요청에서 허용할 요청 헤더들을 명시 |
Access-Control-Allow-Methods | List | 요청에서 허용할 HTTP 메서드 목록 : HEAD , GET , PUT , POST , DELETE |
Access-Control-Allow-Origin | String | CORS 요청을 허용되는 Origin ex) http://example.com 또는 와일드 카드 * |
Access-Control-Max-Age | Integer | 브라우저가 preflight request 요청 결과를 캐시할 수 있는 시간 |
Response Syntax
Preflight의 경우 응답 상태 코드로 요청 성공여부를 확인하지 않습니다.
CORSRule이 있는 경우 Response Header 값을 반환, 없으면 의미 있는 헤더 값이 없습니다.
공통 상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
200 | OK | 성공 |
204 | No Content | 성공 |
400 | BadRequest | 요청 정보 오류 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
404 | Not Found | 요청한 리소스를 찾을 수 없음 |