API 개요
Object Storage API는 코 드 기반의 프로그래밍 방식으로 자원들을 관리하기 위한 인터페이스입니다.
Object Storage에서 제공하는 API를 활용 시, 많은 양의 버킷 및 객체 제어 또는 반복적이고 자동화된 작업 등 콘솔로 수행하기 어려운 작업을 처리할 수 있습니다. REST API, Openstack Swift Client를 통해 코드 기반으로 카카오클라우드의 Object Storage를 사용할 수 있습니다.
안내
- API 요청에 대한 응답은
JSON
형태로 제공합니다. - API 사용을 위해서는 액세스 키와 사용자 인증 토큰(API 인증 토큰)이 필요합니다.
- API 사용 전 액세스 키를 먼저 생성 후, 이를 통해 사용자 인증 토큰(API 인증 토큰)을 받아야 합니다.
- Object Storage API 사용법에 대한 예제는 CURL 클라이언트로 작성되어 있습니다. Curl에 대한 자세한 설명은 CURL 가이드에서 참조하시길 바랍니다.
API 사용 준비
API를 호출하기 위해 필요한 사전 작업은 API 사용 준비 문서를 참고하시기 바랍니다.
API Model
Object Storage의 API Model은 다음의 5개 요소로 구성됩니다.
Model - Bucket
- kr-central-1
- kr-central-2
Bucket(kr-central-1)
{
account: String // project ID | Swift API에서 account 값으로 사용
name: String // 버킷 이름 | object storage에서 유일한 값
type: String // 버킷 유형 | hot | cold
bytes: int // 총 사용량 | 단위: Byte
objectCount: int // 해당 버킷에 속한 오브젝트 개수
policyCount: int // 해당 버킷의 라이프사이클이 적용된 정책의 개수
createdAt: String // 생성일로 RFC3339 형식 | 예시)2020-07-01T00:00:00Z
lastModified: String // 수정일로 RFC3339 형식 | 예시)2020-07-01T00:00:00Z
owner: [SimpleUser] // 버킷 생성자 | 생성자는 버킷에 대한 Admin 권한 가짐
acl: [AccessControlList] // 버킷에 대한 접근 권한
use_encryption: boolean // 버킷 암호화 여부
}
SimpleUser(kr-central-1)
{
id: String // 사용자 ID. 예시) a0cd4299ed99458f9679c89a27e1a52d
name: String // 사용자 name. 예시) reuben.b@kakkaoenterprise.com
}
AccessControlList(kr-central-1)
{
acl : [Permission] // 버킷에 대한 접근 권한
publicAcl : String // 버킷 공개 여부 | Deny(기본값): 공개하지 않음, Read-Only: 읽기 권한 공개
}
Permission(kr-central-1)
{
user : SimplelUser // 버킷에 접근할 수 있는 사용자
permission: String // 버킷 접근 권한 | read-only, read-write
}
Bucket(kr-central-2)
{
project:String // 프로젝트 ID | S3 API에서 project id 값으로 사용
name:String // 버킷 이름 | Object storage에서 유일한 값
type:String // 버킷 유형 | STANDARD
bytes:int // 총 사용량 | 단위: Byte
objectCount:int // 해당 버킷에 속한 오브젝트 개수
createdAt:String // 생성일로 RFC3339 형식 | 예시) 2020-07-01T00:00:00Z
use_encryption:boolean // 버킷 암호화 여부
encryption_type // 암호화 유형 | managed
lastModified:String // 수정일로 RFC3339 형식 | 예시) 2020-07-01T00:00:00Z
storageClass // 스토리지 클래스 | STANDARD
storagePolicy // 스토리지 클래스의 존
acl: [AccessControlList] // 버킷에 대한 접근 권한
}
AccessControlList(kr-central-2)
{
acl : [Permission] // 버킷에 대한 접근 권한
publicAcl : String // 버킷 공개 여부 | deny(기본값): 공개하지 않음, read-only: 읽기 권한 공개
}
Data | Type | 설명 |
---|---|---|
account | String | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
name | String | 버킷 이름 - Object Storage 내 유일한 값 |
type | String | 버킷 유형 - Standard |
bytes | Int | 총 사용량 - 단위: Byte |
objectCount | Int | 버킷에 속한 오브젝트의 개수 |
policyCount | Int | 해당 버킷의 라이프사이클이 적용된 정책의 개수 |
createdAt | String | 생성일 - 형식: RFC3339 - 예시: 2020-07-01T00:00:00Z |
lastModified | String | 수정일 - 형식: RFC3339 - 예시: 2020-07-01T00:00:00Z |
owner | SimpleUser | 버킷 생성자 - 생성자는 버킷에 대한 Admin 권한 가짐 |
acl | AccessControlList | 접근 권한 정보 |
use_encryption | Boolean | 버킷 암호화 여부 - false (기본값): 암호화하지 않음 - true : 암호화 함 |
Model - Simple Bucket
- kr-central-1
- kr-central-2
SimpleBucket (kr-central-1)
{
account: String // 프로젝트 ID | Swift API에서 account 값으로 사용
name: String // 버킷 이름 | Object storage에서 유일한 값
type: String // 버킷 유형 | hot/cold
bytes: int // 총 사용량 | 단위: Byte
objectCount: int // 해당 버킷에 속한 오브젝트 개수
policyCount: int // 해당 버킷의 라이프사이클이 적용된 정책의 개수
createdAt: String // 생성일로 RFC3339 형식 | 예시) 2020-07-01T00:00:00Z
lastModified: String // 수정일로 RFC3339 형식 | 예시) 2020-07-01T00:00:00Z
owner: [SimpleUser] // 버킷 생성자 | 해당 버킷에 대해 생성자는 admin 권한을 가짐
use_encryption: boolean // 버킷 암호화 여부
}
Data | Type | 설명 |
---|---|---|
account | String | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
name | String | 버킷 이름 - Object Storage 내 유일한 값 |
type | String | 버킷 유형 - Hot (기본값): Hot 버킷 - Cold (지원 예정): Cold 버킷 |
bytes | Int | 총 사용량 - 단위: Byte |
objectCount | Int | 버킷에 속한 오브젝트의 개수 |
policyCount | Int | 해당 버킷의 라이프사이클이 적용된 정책의 개수 |
createdAt | String | 생성일 - 형식: RFC3339 - 예시: 2020-07-01T00:00:00Z |
lastModified | String | 수정일 - 형식: RFC3339 - 예시: 2020-07-01T00:00:00Z |
owner | SimpleUser | 버킷 생성자 - 생성자는 버킷에 대한 Admin 권한 가짐 |
use_encryption | Boolean | 버킷 암호화 여부 - false (기본값): 암호화하지 않음 - true : 암호화 함 |
SimpleBucket (kr-central-2)
{
project: String // 프로젝트 ID | S3 API에서 project id 값으로 사용
name: String // 버킷 이름 | Object storage에서 유일한 값
type: String // 버킷 유형 | STANDARD
bytes: int // 총 사용량 | 단위: Byte
objectCount: int // 해당 버킷에 속한 오브젝트 개수
createdAt: String // 생성일로 RFC3339 형식 | 예시) 2020-07-01T00:00:00Z
use_encryption: boolean // 버킷 암호화 여부
encryption_type // 암호화 유형 | managed
lastModified: String // 수정일로 RFC3339 형식 | 예시) 2020-07-01T00:00:00Z
storageClass // 스토리지 클래스 | STANDARD
storagePolicy // 스토리지 클래스의 존
}
Data | Type | 설명 |
---|---|---|
project | String | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - S3 API에서 사용 |
name | String | 버킷 이름 - Object Storage 내 유일한 값 |
type | String | 버킷 유형 - STANDARD (기본값): standard 버킷 |
bytes | Int | 총 사용량 - 단위: Byte |
objectCount | Int | 버킷에 속한 오브젝트의 개수 |
createdAt | String | 생성일 - 형식: RFC3339 - 예시: 2020-07-01T00:00:00Z |
use_encryption | Boolean | 버킷 암호화 여부 - false (기본값): 암호화하지 않음 - true : 암호화 함 |
encryption_type | String | 버킷 암호화 유형 |
lastModified | String | 수정일 - 형식: RFC3339 - 예시: 2020-07-01T00:00:00Z |
storageClass | String | 스토리지 클래스 - STANDARD (기본값): standard 버킷 |
acl | Access Control List | 버킷 접근 관리 정책 - Model - Access Control List 참고 |
Model - Simple User
SimpleUser
{
id: String // 사용자 ID. 예시) a0cd4299ed99458f9679c89a27e1a52d
name: String // 사용자 name. 예시) reuben.b@kakkaoenterprise.com
}
Data | Type | 설명 |
---|---|---|
id | String | 사용자 고유 ID - 예시: a0cd4299ed99458f9679c89a27e1a52d |
name | String | ID - 예시: username@domain.com |
Model - Access Control List
Data | Type | 설명 |
---|---|---|
acl | [Permission] | 버킷에 대한 접근 권한 - 리스트(list)로 작성 가능 - Model - Permission 참고 |
publicAcl | String | 버킷 공개 여부 - Deny (기본값): 공개하지 않음- Read-Only : 읽기 권한 공개 |
Model - Permission
Data | Type | 설명 |
---|---|---|
user | SimpleUser | 버킷에 접근할 수 있는 사용자 - Model - Simple User 참고 |
permission | String | 버킷 접근 권한 - Read-Only : 읽기 권한 공개 - Read-Write : 읽기 및 쓰기 권한 공개 |