네이버 클라우드 플랫폼[공공기관용] Archive Storage는 스토리지 관리와 사용에 필요한 OpenStack Swift API를 제공합니다.
버전: 2.15.1 (Pike)
Subaccount의 경우 일부 API는 기존 호출 도메인이 아닌 Subaccount 전용 External API Gateway를 통해 사용할 수 있습니다.
호출 도메인(Endpoint)
HTTP/HTTPS 프로토콜을 모두 지원하지만 데이터 보호를 위해 HTTPS 사용을 권장합니다.
리전별 URL
| 리전 | 인증 URL | 서비스 URL |
|---|---|---|
| 공공 | https://kr.archive.gov-ncloudstorage.com:5000 | https://kr.archive.gov-ncloudstorage.com |
| 공공 | https://archivestorage.apigw.gov-ntruss.com | https://archivestorage.apigw.gov-ntruss.com |
인증
네이버 클라우드 플랫폼[공공기관용] Archive Storage는 인증 정보를 통해 토큰을 생성하고, 발급된 토큰으로 서비스를 이용할 수 있습니다.
토큰 생성에 필요한 유저 정보는 콘솔의 My Account > 계정 및 보안 관리 > 보안 관리 > 접근 관리 메뉴에서 생성한 API 인증키를 사용합니다. (Access Key ID는 user name, Secret Key는 user password)
유저가 속한 Project ID와 Domain ID 정보는 Archive Storage 콘솔에서 이용 신청 후 [API 이용 정보 확인] 버튼을 통해 확인할 수 있습니다.
토큰 생성
네이버 클라우드 플랫폼 Archive Storage는 OpenStack Keystone V3 API를 이용하여 인증을 하고 토큰을 생성할 수 있습니다. 생성된 토큰은 어카운트, 컨테이너, 오브젝트 오퍼레이션 이용 시 X-Auth-Token 헤더 값으로 입력하여 사용합니다.
OpenStack Keystone V3 API에 대한 자세한 내용은 https://developer.openstack.org/api-ref/identity/v3/를 참고해 주십시오.
password 인증 방식을 사용하여 토큰을 생성하고, 네이버 클라우드 플랫폼 콘솔의 My Account > 계정 및 보안 관리 > 보안 관리 > 접근 관리 메뉴에서 생성한 API 인증키 정보 중 Access Key ID는 user name, Secret Key는 user password로 사용합니다.
토큰 생성 시 project 범위로 한정(scope)은 필수이며 project ID와 domain ID는 Archive Storage 콘솔에서 이용 신청 후 [API 이용 정보 확인] 버튼을 클릭하여 확인할 수 있습니다.
토큰의 유효 시간은 24시간이고 토큰 삭제 요청을 통해 이용을 중지시킬 수 있습니다.
구문
구문은 다음과 같습니다.
POST /v3/auth/tokens
요청
요청 파라미터는 다음과 같습니다.
| Name | In | Type | Description |
|---|---|---|---|
| auth | body | object | auth 오브젝트 |
| identity | body | object | identity 오브젝트 |
| methods | body | array | 인증 방식. password 인증 방식 사용 |
| password | body | object | password 오브젝트 |
| user | body | object | user 오브젝트. id, password, domain 입력 필수 |
| domain | body | object | domain 오브젝트. id를 입력해서 사용하고, domain ID는 Archive Storage 콘솔의 [API 이용 정보 확인] 버튼을 클릭하여 확인 |
| scope | body | object | scope 오브젝트. 토큰 사용 범위를 project로 지정하여 사용 |
| project | body | object | project 오브젝트. id를 입력해서 사용하고, project ID는 Archive Storage 콘솔의 [API 이용 정보 확인] 버튼을 클릭하여 확인 |
요청 예시는 다음과 같습니다.
curl -i -X POST -H "Content-Type: application/json" https://kr.archive.ncloudstorage.com:5000/v3/auth/tokens -d '
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"name": "{access_key_id}",
"password": "{secret_key}",
"domain": {
"id": "{domain_id}"
}
}
}
},
"scope": {
"project": {
"id": "{project_id}"
}
}
}
}'
응답
응답 파라미터는 다음과 같습니다.
| Name | In | Type | Description |
|---|---|---|---|
| X-Subject-Token | header | string | 생성된 토큰. 토큰 값은 request body가 아닌 헤더로 전달 |
| token | body | object | token 오브젝트 |
| methods | body | array | 인증 방식. password 인증 방식 사용 |
| roles | body | array | role 정보 목록. id, name 정보 포함 |
| expires_at | body | string | 토큰 만료 일시. YYYY-MM-DDThh:mm:ss.sssZ (ISO 8601). 토큰 만료 일시가 null 일 경우 만료되지 않음 |
| issued_at | body | string | 토큰 생성 일시. YYYY-MM-DDThh:mm:ss.sssZ (ISO 8601) |
| project | body | object | project 오브젝트. domain, id, name 정보 포함 |
| catalog | body | array | catalog 오브젝트 |
| endpoints | body | array | endpoint 정보 목록 |
| region_id | body | string | 서비스 endpoint가 속한 리전 정보 |
| url | body | string | endpoint URL. |
| interface | body | string | 인터페이스 타입. admin 타입은 admin 권한이 있는 유저만 사용 가능 |
| type | body | string | endpoint 타입 |
| audit_ids | body | array | 랜덤으로 생성되는 고유의 값으로 토큰 정보를 조회할 때 사용 |
응답 예시는 다음과 같습니다.
HTTP/1.1 201 Created
Date: Mon, 17 Sep 2018 23:46:11 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_wsgi/3.4 Python/2.7.5
X-Subject-Token: gAAAAABboDzDOzds2V_2uzR9xn-AQkg5RRejRkGD9L5NuhwezSqqxpmY8ZNl48vYnC1GCn21AiffNtRrDedbvVq2usnPDH2qIp-Cq2Rx54fnH406NhhW9OiaKMzFwRzS7-js3j4xGMvEk2bPErmolAT4E1Du0vsF2azycC6sNcIMsVWcvd
Vary: X-Auth-Token
x-openstack-request-id: req-40a163b1-1fcc-423d-8ec3-3f40fd413ab6
Content-Length: 1759
Content-Type: application/json
{
"token": {
"is_domain": false,
"methods": [
"password"
],
"roles": [
{
"id": "488fac210a714fcc91b61a32525b5693",
"name": "user"
}
],
"expires_at": "2018-09-18T23:46:11.000000Z",
"project": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "0a11d053d4804b4c86d26ae1ff48dc1e",
"name": "ncp-test-0"
},
"catalog": [
{
"endpoints": [
{
"region_id": null,
"url": "https://kr.archive.ncloudstorage.com:5000/v3",
"region": null,
"interface": "public",
"id": "3bf62632266c4be0880cd7170ca90f55"
},
{
"region_id": null,
"url": "https://kr.archive.ncloudstorage.com:35357/v3",
"region": null,
"interface": "admin",
"id": "a29ce505b6cb429ea9ca15cb126251f7"
},
{
"region_id": null,
"url": "https://kr.archive.ncloudstorage.com:35357/v3",
"region": null,
"interface": "internal",
"id": "e524bcde8c5a4eec8750acf3e5819d69"
}
],
"type": "identity",
"id": "ae1a92e6b64f4e9886517aaca2540b26",
"name": "keystone"
},
{
"endpoints": [
{
"region_id": "RegionOne",
"url": "https://kr.archive.ncloudstorage.com/v1/AUTH_0a11d053d4804b4c86d26ae1ff48dc1e",
"region": "RegionOne",
"interface": "internal",
"id": "80773860110449b9b78dc3a05f3f6360"
},
{
"region_id": "RegionOne",
"url": "https://kr.archive.ncloudstorage.com/v1/AUTH_0a11d053d4804b4c86d26ae1ff48dc1e",
"region": "RegionOne",
"interface": "public",
"id": "40f7102a57024603a53f41c4d8cb7cf3"
},
{
"region_id": "RegionOne",
"url": "https://kr.archive.ncloudstorage.com",
"region": "RegionOne",
"interface": "admin",
"id": "5297ae442163478e82f6f9630919b93f"
}
],
"type": "object-store",
"id": "fb4cbd0bf18f4beb9ac29b09f0862ce2",
"name": "swift"
}
],
"user": {
"password_expires_at": null,
"domain": {
"id": "default",
"name": "Default"
},
"id": "ac1eca9c1b9f4900a0b1c4a82be49686",
"name": "qQXiRLju7XHMXpmEskHn"
},
"audit_ids": [
"U-O5n4rBSoO5jBykNXYNsw"
],
"issued_at": "2018-09-17T23:46:11.000000Z"
}
}
토큰 삭제
생성한 토큰을 삭제할 수 있습니다.
구문
구문은 다음과 같습니다.
DELETE /v3/auth/tokens
요청
요청 파라미터는 다음과 같습니다.
| Name | In | Type | Description |
|---|---|---|---|
| X-Auth-Token | header | string | 인증을 위한 유효한 토큰 |
| X-Subject-Token | header | string | 삭제 대상 토큰. 요청이 성공하는 즉시 이용할 수 없게 됨 |
요청 예시는 다음과 같습니다.
curl -i -X DELETE -H "X-Auth-Token: $token" -H "X-Subject-Token: $token_to_delete" https://kr.archive.ncloudstorage.com:5000/v3/auth/tokens
응답
요청이 성공하게 되면 No Content (204) 상태 코드로 응답합니다. 응답 예시는 다음과 같습니다.
HTTP/1.1 204 No Content
Date: Tue, 18 Sep 2018 05:44:00 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_wsgi/3.4 Python/2.7.5
Vary: X-Auth-Token
x-openstack-request-id: req-b6e8efbe-c3f2-41bc-8ca5-1067753318d4
Content-Type: text/plain; charset=UTF-8
오퍼레이션
어카운트 오퍼레이션
어카운트에 속한 컨테이너(버킷) 목록 조회, 메타데이터 조회, 메타데티어 설정을 조회하는 오퍼레이션을 설명합니다.
어카운트는 고유의 project ID를 사용하고 Archive Storage 콘솔에서 이용 신청 후 [API 이용 정보 확인] 버튼을 통해 확인할 수 있습니다.
| 오퍼레이션 | 설명 |
|---|---|
| GET | 어카운트에 속한 컨테이너(버킷) 목록 조회 |
| HEAD | 어카운트의 메타데이터 조회 |
| POST | 어카운트에 메타데이터 설정 및 변경 |
컨테이너(버킷) 오퍼레이션
컨테이너(버킷)을 생성, 삭제, 조회, 제어하는 오퍼레이션을 설명합니다.
| 오퍼레이션 | 설명 |
|---|---|
| PUT | 컨테이너(버킷) 생성 |
| GET | 컨테이너(버킷)에 속한 오브젝트 목록 조회 |
| HEAD | 컨테이너(버킷)의 메타데이터 조회 |
| POST | 컨테이너(버킷)에 메타데이터 설정 및 변경 |
| DELETE | 빈 컨테이너(버킷) 삭제 |
오브젝트 오퍼레이션
오브젝트를 생성, 삭제, 조회, 제어하는 오퍼레이션을 설명합니다.
| 오퍼레이션 | 설명 |
|---|---|
| PUT | 오브젝트를 업로드하며 동일한 이름의 오브젝트가 있을 경우 덮어쓰기를 함 |
| COPY | 다른 위치에 있는 오브젝트 복제 |
| GET | 오브젝트를 다운로드함 |
| HEAD | 오브젝트의 메타데이터 조회 |
| POST | 오브젝트에 메타데이터 설정 및 변경 |
| DELETE | 오브젝트 삭제 |