Object_File & Folder
Object:File&Folder API를 사용하여 파일/폴더의 생성과 관련 정보 및 정책을 관리할 수 있습니다.
API 사용 준비
API를 호출하기 위해 필요한 사전 작업은 API 사용 준비 문서를 참고하시기 바랍니다.
API 엔드포인트 URL
API 요청을 위한 Object Storage API 엔드포인트 URL은 다음과 같습니다.
- kr-central-1
- kr-central-2
https://objectstorage.kr-central-1.kakaocloud.com
https://objectstorage.kr-central-2.kakaocloud.com
지원 사양
Object REST-API는 Openstack의 Swift API 사양을 지원합니다.
Object REST-API | Swift API 사양 |
---|---|
Account | 버킷 계정 |
Container | 버킷 이름 |
Object | 폴더(Folder)와 파일(File) - 폴더 예시: images/small - 파일 예시: image/small/icon.jpg |
폴더 생성
Owner
, Read-Write
권한이 있는 사용자는 버킷 안에 폴더를 생성할 수 있습니다.
Request Syntax
curl --location --request PUT 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Type: application/directory' \
--header 'X-Object-Meta-Company: kakao enterprise'
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | 리전 명 : kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Content-Type | String | 필수 | application/directory 로 고정 |
X-Object-Meta-{key_name} | String | 선택 | 버킷 메타 정보로, 사용자가 지정할 메타 데이터 이름을 {key_name} 에 입력 - Swift API의 경우, 해당 prefix 적용 |
X-Object-Meta-{key_name} | String | 선택 | 버킷 메타 정보로, 사용자가 지정할 메타 데이터 이름을 {key_name} 에 입력 - S3 API의 경우, 해당 prefix 적용 |
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
파일 생성 및 업로드
Owner
, Read-Write
권한이 있는 사용자는 버킷 안에 파일을 생성하거나 업로드할 수 있습니다.
Request Syntax
curl --location --request PUT 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}/{file}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Type: text/plain' \
--data-raw '{Content}'
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}/{file} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | 리전 명 : kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
file | String | 필수 | 파일명 - 예시: icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Content-Type | String | 선택 | Put(업로드)하는 오브젝트가 파일인 경우 mime type 문자열을 입력 - 콘텐츠 유형을 입력하지 않은 Put(업로드) 경우, Object Storage 내부적으로 현재 업로드하는 파일의 유형을 application/octet-stream 으로 처리 |
X-Object-Meta-{name} | String | 선택 | 버킷 메타 정보로, 사용자가 지정할 메타 데이터 이름을 {name} 에 입력 |
Content-Length | int | 선택 | 콘텐츠 길이 |
Transfer-Encoding | String | 선택 | 인코딩 방식 - chunked : 데이터가 일련의 청크 내에서 분할하여 전송하는 방식으로, chunked 값이 지정된 경우는 Content-Length Header는 전송되면 안 됨- compress : LZW 알고리즘을 사용하는 압축 방식- deflate : deflate 알고리즘을 사용하는 압축 방식- gzip : LZ77 알고리즘을 사용하는 압축 방식- identity : 압축이나 수정이 없는 전송 방식 |
Request body Elements
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Content | Raw data | 필수 | 파일의 콘텐츠 |
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
대용량 파일 업로드
HTTP 프로토콜은 연결 유지 기능이 없기 때문에 TCP 연결이 끊어지면 데이터 전송이 끝납니다. 따라서 대용량의 파일을 한 번의 Connection으로 업로드 시, Connection이 불안하거나 접속이 끊어진 경우에는 업로드가 중단될 수 있습니다. KakaoCloud Object Storage에서는 대용량 파일을 업로드하기 위해 다음의 대용량 오브젝트(Large Object) 업로드 방식을 지원합니다.
- kr-central-2의 암호화 버킷에서는 사용할 수 없습니다.
- 같은 이름의 파일이지만 다른 용량의 파일을 덮어쓰기로 업로드 시, 세그먼트 파일이 남아 있을 수 있습니다.
- 객체 조회를 통해 남아 있는 세그먼트 파일을 삭제하시길 권장합니다.
대용량 오브젝트(Large Object) 업로드 방식
방식 | 설명 |
---|---|
DLO(Dynamic Large Object) | 분할된 Segment Object가 하나의 단일 Large Object로 인식되도록 함 - Swift 프로토콜 |
SLO(Static Large Object) | Segment를 분할해 업로드하지만, Segment Naming 제약이 없고 사이즈가 동일하지 않아도 됨 - Swift 프로토콜 |
DLO(Dynamic Large Object) 방식
DLO 방식은 나누어진 Segment Object가 하나의 단일 Large Object로 인식될 수 있도록 합니다. 또한, 각 Segment Object의 integrity를 보장하지 않습니다. 다운로드(GET) 시, 사용자는 Manifest Object 다운로드 요청을 합니다. 그리고 Object Storage 서버에서는 Manifest Object에 입력된 X-Object-Manifest를 인지하고, Segment Object를 단일 대용량 오브젝트로 인식될 수 있게 합니다.
- 하나의 단일 대용량 오브젝트(Large Object)를 일정한 크기로 분할(Segment)합니다.
- 분할한 오브젝트를 Object Manifest 하위에 업로드합니다.
- X-Object-Manifest 헤더의 항목이 기입된 Manifest Object 업로드합니다. 이때 Manifest Object를 먼저 업로드할 수 있습니다.
DLO Segment Object 업로드
Request Syntax
curl --location --request PUT 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{DLO Manifest Object}/{Segment Objects...}' \
--header 'X-Auth-Token: {x-auth-token}' \
--data-raw '{segment_content}'
curl -X PUT -H 'X-Auth-Token: <token>' https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/test-bucket/DLO/00000001 --data-binary '1'
curl -X PUT -H 'X-Auth-Token: <token>' https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/test-bucket/DLO/00000002 --data-binary '2'
curl -X PUT -H 'X-Auth-Token: <token>' https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/test-bucket/DLO/00000003 --data-binary '3'
API 호출 방식
메서드 | URL |
---|---|
PUT | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{DLO Manifest Object}/{Segment Objects…} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
DLO Manifest Object | String | 필수 | Manifest Object 이름 |
Segment Objects… | String | 필수 | 다수의 Segment Objects 업로드 가능 - 오름차순 Sequence Number Naming 필요함 (예시: segment_0001 ... segment_0002 ) |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Request Elements
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
segment_content | Data-raw | 필수 | segment object의 콘텐츠 |
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
DLO Manifest Object 업로드
Request Syntax
curl --location --request PUT 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{DLO Manifest Object}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'X-Object-Manifest: {bucket_name}/{DLO Manifest Object}' \
curl -X PUT -H 'X-Auth-Token: <token>' -H 'X-Object-Manifest: test-bucket/DLO' https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/test-bucket/DLO --data-binary ''
API 호출 방식
메서드 | URL |
---|---|
PUT (Segment된 Object를 업로드) | https:/objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{DLO Manifest Object}/{Segment Object…} |
PUT (Manifest Object 자체를 업로드) | https:/objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{DLO Manifest Object} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
DLO Manifest Object | String | 필수 | Manifest Object 이름 |
Segment Object… | String | 필수 | 다수의 Segment Objects 업로드 가능 |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
X-Object-Manifest | String | 필수 | 분할한 Segment Objects를 업로드한 경로 - {bucket_name}/{DLO Manifest Object} 형식 |
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
DLO 다운로드
Request Syntax
curl --location --request GET 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{DLO Manifest Object}' \
--header 'X-Auth-Token: {x-auth-token}' \
curl -H 'X-Auth-Token: <token>' https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/test-bucket/DLO
API 호출 방식
메서드 | URL |
---|---|
PUT | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{DLO Manifest Object} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
DLO Manifest Object | String | 필수 | Manifest Object 이름 |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
SLO(Static Large Object) 방식
SLO 방식은 DLO와 동일하게 Segment를 분할해 업로드하지만, Segment Naming 제약이 없고 사이즈가 동일하지 않아도 된다는 차이점이 있습니다. 또한, Manifest를 제일 마지막에 업로드해야 합니다. SLO Manifest Object는 Segment Object 목록을 순서대로 작성하여 입력해야 합니다. 현재 KC Object Storage에서는 최대 1,000개의 Segment Object를 하나의 Manifest에 입력할 수 있습니다.
SLO Manifest Object 생성 요청을 하면 각 Segment Object가 입력된 경로에 있는지, etag Value와 Segment object Size가 일치하는지 확인합니다. 정보가 일치하지 않으면 Manifest Object가 생성되지 않습니다. 또한, Manifest에 etag를 통해 Segment Object의 무결성을 보장합니다.
- 하나의 단일 대용량 오브젝트(Large Object)를 사용자가 원하는 크기로 분할(Segment)합니다.
- 각 Segment를 접근 권한이 있는 버킷에 업로드합니다. 동일한 버킷이 아니어도 되나, 접근 권한이 있는 프로젝트(account) 버킷이어야 합니다.
- 위의 업로드된 Segment 오브젝트의 Path, Etag, Size가 기록된 Manifest를 Body로 입력하여, SLO Manifest Object를 업로드합니다.
Manifest에 대한 자세한 예제는 https://objectstorage.kr-central-1.kakaocloud.com/info에서 참고하시기 바랍니다.
SLO Segment Object 업로드
Request Syntax
curl --location --request PUT 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}/{segment_object}' \
--header 'X-Auth-Token: {x-auth-token}' \
--data-raw '{segment_content}'
curl -X PUT -H 'X-Auth-Token: <token>' https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/test-bucket/slo_test_1.txt --data-binary '@./slo_test_1.txt'
curl -X PUT -H 'X-Auth-Token: <token>' https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/other-bucket/slo_test_2.txt --data-binary '@./slo_test_2.txt'
curl -X PUT -H 'X-Auth-Token: <token>' https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/other1-bucket/slo_test_3.txt --data-binary '@./slo_test_3.txt'
API 호출 방식
메서드 | URL |
---|---|
PUT | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}/{segment_object} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | Segment Object를 업로드한 경로 |
segment_object | String | 필수 | Segment Object 이름 |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Request Elements
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
segment_content | Raw-data | 필수 | segment Object의 콘텐츠 |
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
SLO Manifest 업로드
Request Syntax
curl --location --request PUT 'https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{SLO Manifest Object}?multipart-manifest=put' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Type: "application/json"' \
--data '[ \
{
"path": "{path}/{Segment Object}",
"etag": "{Segment Object의 etag 값}",
"size_bytes": "{Segment Object Size}"
},
....
]
}'
curl -X PUT -H 'X-Auth-Token: <token>' -H 'Content-Type: application/json' https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/bucket/SLO?multipart-manifest=put
--data
'
[
{
"path": "test-bucket/slo_test_1.txt",
"etag": "ba1f2511fc30423bdbb183fe33f3dd0f",
"size_bytes": 4
},
{
"path": "other-bucket/slo_test_2.txt",
"etag": "441295deac01cf5d6bdc7db3173adfdf",
"size_bytes": 1369
},
{
"path": "other1-bucket/slo_test_3.txt",
"etag": "aa3f5bb8c988fa9b75a1cdb1dc4d93fc",
"size_bytes": 4
}
]
'
API 호출 방식
메서드 | URL |
---|---|
PUT | https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{SLO Manifest Object}?multipart-manifest=put |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
SLO Manifest Object | String | 필수 | Manifest Object 이름 |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Content-Type | String | 필수 | 콘텐츠의 유형 |
Request Elements
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
path | String | 필수 | {path}/{Segment Object} 형식으로 입력 - {path} : Object를 업로드할 경로 - {Segment Object} : path 하위의 Segment object |
etag | String | 선택 | Segment Object의 etag 값 |
size_bytes | Int | 선택 | Segment Object 사이즈 |
Manifest PUT 시 etag
와 size_bytes
를 입력한 후, 기존의 업로드된 segment object의 etag
와 size_bytes
값을 비교하여 일치하지 않을 시 오류를 발생시킴
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
SLO 다운로드
Request Syntax
curl --location --request GET 'https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{SLO Manifest Object}' \
--header 'X-Auth-Token: {x-auth-token}' \
curl -H 'X-Auth-Token: <token>' https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/bucket/SLO
API 호출 방식
메서드 | URL |
---|---|
PUT | https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{SLO Manifest Object} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
SLO Manifest Object | String | 필수 | Manifest Object 이름 |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
SLO Manifest 다운로드
SLO는 SLO Manifest Object만 별도로 다운로드를 할 수 있습니다. query param으로 multipart-manifest=get
을 요청하면, manifest만 다운로드할 수 있습니다
Request Syntax
curl --location --request GET 'https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{SLO Manifest Object}?multipart-manifest=get' \
--header 'X-Auth-Token: {x-auth-token}' \
curl -H 'X-Auth-Token: <token>' https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/test-bucket/SLO?multipart-manifest=get
API 호출 방식
메서드 | URL |
---|---|
PUT | https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{SLO Manifest Object}?multipart-manifest=get |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
SLO Manifest Object | String | 필수 | Manifest Object 이름 |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
멀티 파트 업로드
- kr-central-1
- kr-central-2
kr-central-1에서는 지원하지 않습니다.
- OpenStack Swift Object API의 Multipart-upload API 확장 기능을 제공합니다. 이를 통해 S3 Multipart-upload API와 유사한 방식으로 대용량 파일을 업로드할 수 있습니다.
- S3 Multipart-upload API는 AWS에서 제공하는 기능으로, 파일을 여러 조각으로 분할해서 업로드하고, 다시 조합하는 방식으로 대용량 파일을 업로드하는 기능입니다. S3 Multipart-upload API에 대한 자세한 내용은 S3 멀티 파트 업로드 API 문서를 참조하시기 바랍니다.
- Object Storage에서는 Swift SLO(static large object), DLO(dynamic large object) API를 지원하지 않습니다.
멀티 파트 업로드는 다음 3단계로 구성됩니다.
Step 1. 멀티 파트 업로드 생성
Request Syntax
curl --location --request POST 'https://objectstorage.kr-central-2.kakaocloud.com/v1/{account}/{bucket_name}/{path}?uploads' \
--header 'X-Auth-Token: {x-auth-token}'
API 호출 방식
메서드 | 요청 URL |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/v1/{account}/{bucket_name}/{path}?uploads |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Response Syntax
<?xml version="1.0" encoding="UTF-8"?>
<InitiateMultipartUploadResult>
<Tenant>{tenant-id}</Tenant>
<Bucket>{bucket-name}</Bucket>
<Key>{object-path}</Key>
<UploadId>{upload-id}</UploadId>
</InitiateMultipartUploadResult>
Response Elements
Response | 유형 | 설명 |
---|---|---|
tenant-id | String | 프로젝트 ID |
bucket-name | String | 버킷 이름 |
object-path | String | 파일 경로 |
upload-id | String | 서버에서 할당된 Large Object의 고유 ID |
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
Step 2. 부분 파트 업로드
부분 파트가 5MB 이상이어야 업로드가 가능합니다.
Request Syntax
curl --location --request PUT 'https://objectstorage.kr-central-2.kakaocloud.com/v1/{account}/{bucket_name}/{path}?uploadId={upload-id}&partNumber={part-number}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Type: application/octet-stream' \
--data '{path_name}'
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/v1/{account}/{bucket_name}/{path}?uploadId={upload-id}&partNumber={part-number} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Query
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
uploadId | Query | 필수 | CreateMultipartUpload에서 반환된 large object의 고유 upload id |
partNumber | Query | 필수 | 현재 업로드하는 부분 파일의 large object 상 부분 순번 (1~10000) |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Response Header
Response | 유형 | 설명 |
---|---|---|
etag | String | 현재 업로드한 부분 파일의 etag |
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
200 | Created | 성공 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
Step 3. 멀티 파트 업로드 완료
Request Syntax
curl --location --request PUT 'https://objectstorage.kr-central-2.kakaocloud.com/v1/{account}/{bucket_name}/{path}?uploadId={upload-id}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Content-Type: application/xml' \
--data '<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUpload>
<Part>
<ETag>"<etag of 5MB_1.file>"</ETag>
<PartNumber>1</PartNumber>
</Part>
<Part>
<ETag>"<etag of 5MB_2.file>"</ETag>
<PartNumber>2</PartNumber>
</Part>
<Part>
<ETag>"<etag of remain.file>"</ETag>
<PartNumber>3</PartNumber>
</Part>
</CompleteMultipartUpload>'
API 호출 방식
메서드 | 요청 URL |
---|---|
PUT | https://objectstorage.kr-central-2.kakaocloud.com/v1/{account}/{bucket_name}/{path}?uploadId={upload-id} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Query
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
uploadId | Query | 필수 | CreateMultipartUpload에서 반환된 large object의 고유 upload id |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Response Elements
Response | 유형 | 설명 |
---|---|---|
ETag | String | 현재 업로드한 부분 파일의 ETag |
PartNumber | Integer | 현재 업로드한 부분 파일의 번호 |
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
Object 관리
Object Meta 조회
Owner
, Read-Only
, Read-Write
권한이 있는 사용자는 버킷에 대해 조회할 수 있습니다. 버킷에 저장된 오브젝트(파일, 폴더) Meta 데이터를 제공합니다.
Request Syntax
curl --location --request HEAD 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}' \
--header 'X-Auth-Token: {x-auth-token}'
API 호출 방식
메서드 | 요청 URL |
---|---|
HEAD | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | 리전 명 : kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Response Syntax
상태 코드
HTTP Status | 응답 내용 | 설명 |
---|---|---|
200 | Success | 성공 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
Object Meta 변경
Owner
, Read-Write
권한이 있는 사용자는 버킷에 대해 변경할 수 있습니다.
버킷에 저장된 오브젝트(파일, 폴더)의 메타 데이터를 변경합니다.
Request Syntax
curl --location --request POST 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'X-Object-Meta-Company: kakao enterprise'
API 호출 방식
메서드 | 요청 URL |
---|---|
POST | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | 리전 명 : kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
X-Object-Meta-{name} | String | 선택 | 버킷 메타 정보로, 사용자가 지정할 메타 데이터 이름을 {name} 에 입력 |
Response Syntax
상태 코드
HTTPS Status | 응답 내용 | 설명 |
---|---|---|
200 | Success | 성공 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
Object 목록 조회
Owner
, Read-Write
, Read-Only
권한이 있는 사용자는 버킷에 대해 조회할 수 있습니다. 버킷에 저장된 오브젝트(파일, 폴더) 목록을 조회합니다.
Request Syntax
curl --location --request GET 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}?format=json' \
--header 'X-Auth-Token: {x-auth-token}'
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | 리전 명 : kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Request Query
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
prefix | Query | 선택 | Directory path - 예시: image/small |
delimiter | Query | 선택 | delimiter를 key로 사용할 경우에는 / 입력 필요 |
limit | Query | 선택 | 목록 개수 - 기본값: 1000 (최대 1,000개 까지 조회 가능) |
marker | Query | 선택 | 검색 조건 - (Object name > Marker ) |
format | Query | 선택 | response 받을 포맷 - plain (기본값)- json - xml |
Response Syntax
{
name: String
content_type: String
bytes: int
hash: String
last_modified: String // 최종 수정일시 RFC3339 예시: 2020-07-01T00:00:00Z
subdir: String // pseudo-directory인 경우 이 값만 제공
}
[
{
"name": "document",
"content_type": "application/directory",
"bytes": 0,
"hash": "d41d8cd98f00b204e9800998ecf8427e",
"last_modified": "2020-06-26T11:12:03+09:00"
},
{
"name": "document/hello.txt",
"content_type": "application/octet-stream",
"bytes": 7,
"hash": "083d9fe8506415ba02f2f86e0531527f",
"last_modified": "2020-06-26T11:14:50+09:00"
}
]
Response Elements
Response | 유형 | 설명 |
---|---|---|
name | String | 오브젝트 이름 |
content_type | String | 해당 오브젝트를 PUT할 때 입력받았던 Content-Type 값이 반환 - 유형: directory / 이미지 / 구분 바이너리 등 |
bytes | int | 오브젝트 크기 |
hash | String | 파일 고유값 |
last_modified | String | 최종 수정일시 - 형식: RFC3339 - 예시: 2020-07-01T00:00:00Z |
subdir | String | pseudo-directory 인 경우 이 값만 제공됨 |
상태 코드
HTTPS Status | 응답 내용 | 설명 |
---|---|---|
200 | OK | 성공 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
Object 다운로드
Owner
, Read-Write
, Read-Only
권한이 있는 사용자는 버킷의 오브젝트를 다운로드할 수 있습니다.
Path가 Folder
인 경우, 사이즈가 0
인 Content를 응답받습니다. Folder의 하부 목록을 조회하기 위해서는 Object 목록 조회 API를 사용해야 합니다.
Request Syntax
curl --location --request GET 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}' \
--header 'X-Auth-Token: {x-auth-token}'
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/:path |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | 리전 명 : kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Response Syntax
{
Content-Length (Header)
Content-Type (Header)
Last-Modified (Header)
ETag (Header)
Content (Body)
}
Response Header
Response | 유형 | 설명 |
---|---|---|
Content-Length | int | 오브젝트의 크기 값 - 파일인 경우 파일 크기 값이 전달됨 - 폴더인 경우에는 메타 정보만 있어 0 값이 전달됨 |
Content-Type | String | 콘텐츠의 유형 |
Last-Modified | String | 최종 수정일시 |
ETag | String | ETag는 바이너리에 대한 MD5 해쉬값으로 바이너리가 존재하지 않는 폴더의 경우에는 의미 없는 값을 전달됨 |
Response Elements
Response | 유형 | 설명 |
---|---|---|
Content | Raw data | 콘텐츠 유형이 폴더인 경우 전달 안 됨 |
상태 코드
상태 코드 | 응답 내용 | 설명 |
---|---|---|
200 | OK | 성공 |
401 | Unauthorized | 권한 없음 |
404 | Not found | File not found |
Object 삭제
Owner
, Read-Write
권한이 있는 사용자는 버킷의 오브젝트를 삭제할 수 있습니다.
Request Syntax
curl --location --request DELETE 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}' \
--header 'X-Auth-Token: {x-auth-token}'
API 호출 방식
메서드 | 요청 URL |
---|---|
DELETE | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | 리전 명 : kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Response Syntax
상태 코드
HTTPS Status | 응답 내용 | 설명 |
---|---|---|
204 | No Content | 성공 |
401 | Unauthorized | 권한 없음 |
404 | Not found | File not found |
Object 복사
복사할 오브젝트에 대한 읽기 권한과 복사될 오브젝트에 대한 쓰기 권한(Read-Write
권한)이 있어야 합니다.
Request Syntax
curl --location --request COPY 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Destination: /{target-bucket-name}/{target-path}'
API 호출 방식
메서드 | 요청 URL |
---|---|
COPY | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | 리전 명 : kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Destination | String | 필수 | 복사할 목적지의 경로명 - 예시: {target-bucket-name}/{target-path} |
Response Syntax
상태 코드
HTTPS Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
401 | Unauthorized | 권한 없음 |
404 | Not found | File not found |
Object 이동
이동할 오브젝트를 포함하는 버킷의 storage.objects.get 권한과 이동될 오브젝트를 포함하는 버킷의 storage.objects.create 권한이 있어야 합니다.
kr-central-2 암호화 버킷에서는 사용할 수 없습니다.
Request Syntax
curl --location --request MOVE 'https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{path}' \
--header 'X-Auth-Token: {x-auth-token}' \
--header 'Destination: /{target-bucket-name}/{target-path}'
API 호출 방식
메서드 | 요청 URL |
---|---|
MOVE | https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{path} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Destination | String | 필수 | 이동할 목적지의 경로 - 예시: {target-bucket-name}/{target-path} |
Response Syntax
상태 코드
HTTPS Status | 응답 내용 | 설명 |
---|---|---|
201 | Created | 성공 |
401 | Unauthorized | 권한 없음 |
404 | Not found | File not found |
Object 다운로드용 Temp URL 생성
오브젝트에 대한 접근 권한이 있는 사용자는 특정 기간 유효한 다운로드용 Temp URL을 생성합니다. temp_url_expires
는 유효 시간으로 사용자가 지정한 시간까지 다운로드 받을 수 있도록 설정합니다.
- kr-central-1
- kr-central-2
Request Syntax
curl --location --request TEMP 'https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{path}?temp_url_expires={temp_url_expires}' \
--header 'X-Auth-Token: {x-auth-token}'
API 호출 방식
메서드 | 요청 URL |
---|---|
TEMP | https://objectstorage.kr-central-1.kakaocloud.com/v1/{account}/{bucket_name}/{path}?temp_url_expires={temp_url_expires} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Request Query
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
temp_url_expires | int | 필수 | 발급된 Temp URL의 유효시간 - 단위: Unix epoch time |
Response Syntax
{
url : 해당 오브젝트를 다운로드 받을 수 있는 temp url
sig : 해당 url의 signature이며 url에 포함됨
MeteringInfo : 버킷의 정보
}
{
"url": "/v1/my-account/my-bucket/hello.txt?temp_url_sig=d4be653107de1053fb682bbc855d971bee935d54&temp_url_expires=1647918000",
"sig": "d4be653107de1053fb682bbc855d971bee935d54",
"MeteringInfo": {
"BucketName": "my-bucket",
"BucketType": "hot",
"BucketCreatedAt": 1622788405000
}
}
Response Elements
Response | 유형 | 설명 |
---|---|---|
url | String | 해당 오브젝트를 다운로드 받을 수 있는 temp url |
sig | String | 해당 url의 signature이며 url에 포함됨 |
MeteringInfo ▼ | - | 버킷의 정보 |
BucketName | String | 버킷 이름 |
BucketType | String | 버킷 유형 |
BucketCreatedAt | String | 버킷 생성일 |
상태 코드
HTTPS Status | 응답 내용 | 설명 |
---|---|---|
200 | Success | 성공 |
401 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
Request Syntax
curl --location --request GET 'https://objectstorage.kr-central-2.kakaocloud.com/v1/{account}/{bucket_name}/{path}?temp_url&temp_url_expires={temp_url_expires}' \
--header 'X-Auth-Token: {x-auth-token}'
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.kr-central-2.kakaocloud.com/v1/{account}/{bucket_name}/{path}?temp_url&temp_url_expires={temp_url_expires} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
account | string | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | string | 필수 | 버킷 이름 |
path | string | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Header
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
X-Auth-Token | String | 필수 | 사용자 인증 토큰 |
Request Query
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
temp_url | String | 필수 | TempUrl 발급 요청을 나타내는 키 |
temp_url_expires | timestamp | 필수 | 발급된 TempUrl의 유효시간 - sec 단위 |
Response Syntax
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Thu, 09 Mar 2023 04:44:00 GMT
Content-Length: 209
{
"url": "/v1/{project_id}/object-reg-test-1/test.txt?temp_url_sig={temp_url_sig}&temp_url_expires={temp_url_expires}",
"sig": "{sig}"
}
Response Elements
Response | 유형 | 설명 |
---|---|---|
url | string | 해당 오브젝트를 expire 시간 안에 다운로드 받을 수 있는 임시 URL |
sig | string | 해당 URL의 signature이며 object의 expire 시간 안에서 유효한 signature |
상태 코드
HTTPS Status | 응답 내용 | 설명 |
---|---|---|
200 | Unauthorized | 인증 실패 |
403 | Forbidden | 권한 없음 |
404 | Not found | 버킷이 없음 |
Temp URL을 사용한 Object 다운로드
생성된 Temp URL을 사용하면 발급 시 신청한 유효 시간 동안 해당 오브젝트를 다운로드할 수 있습니다. Temp URL을 사용할 경우, X-Auth-Token
없이 다운로드받을 수 있으므로 Temp URL의 발급자는 신뢰할 수 있는 사용자에게 전달해야 합니다.
Request Syntax
curl --location --request GET 'https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}?temp_url_sig={temp_url_sig}&temp_url_expires={temp_url_expires}'
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://objectstorage.{region_name}.kakaocloud.com/v1/{account}/{bucket_name}/{path}?temp_url_sig=value&temp_url_expires={temp_url_sig}&filename={temp_url_expires} |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
region_name | String | 필수 | 리전 명 : kr-central-1 또는 kr-central-2 |
account | String | 필수 | 프로젝트 ID - 토큰 발급 시 확인 가능 (토큰 발급 과정에서 사용/확인된 프로젝트 ID) - Swift API에서 Account 값으로 사용 |
bucket_name | String | 필수 | 버킷 이름 |
path | String | 필수 | 폴더 전체 경로 - 예시: image/small, images/small/icon.jpg |
Request Query
Request | 유형 | 필수 여부 | 설명 |
---|---|---|---|
temp_url_sig | Query | 필수 | 발급받은 Temp URL Response의 signature 정보 |
temp_url_expires | Query | 필수 | 발급받은 Temp URL Response의 유효시간 정보 - 단위: Unix epoch time |
filename | Query | 선택 | 오브젝트를 브라우저에서 다운로드받을 때 사용할 custom 파일명 - utf-8 percent encoding된 문자열 |
Response Syntax
{
Content-Length (Header)
Content-Type (Header)
Last-Modified (Header)
ETag (Header)
Content-Disposition (Header)
Content (Body)
}
Response Header
Response | 유형 | 설명 |
---|---|---|
Content-Length | int | 오브젝트의 크기값 - 파일인 경우 파일 크기값이 전달됨 - 폴더인 경우에는 메타 정보만 있어 0 값이 전달됨 |
Content-Type | String | 미디어 유형 |
Last-Modified | String | 최종 수정일시 |
ETag | String | ETag는 바이너리에 대한 MD5 해쉬값으로, 바이너리가 존재하지 않는 폴더의 경우에는 의미 없는 값을 전달됨 |
Content-Disposition | String | Object 다운로드 시 브라우저가 로컬에 저장할 파일명 - 기본값: Object Name - utf-8 percent encoding된 문자열이 전달됨 |
Response Elements
Response | 유형 | 설명 |
---|---|---|
Content | Body | 콘텐츠 유형이 폴더인 경우 전달 안 됨 |
상태 코드
HTTPS Status | 응답 내용 | 설명 |
---|---|---|
200 | Success | 성공 |
403 | Forbidden | Temp URL의 유효시간 만료 |