NHN Cloud CDN에서 제공하는 Public API v2.0을 설명합니다.
이름 | 도메인 |
---|---|
CDN Public API 도메인 | https://cdn.api.nhncloudservice.com |
API를 사용하려면 앱 키(Appkey)와 보안 키(SecretKey)가 필요합니다. 앱 키와 보안 키는 콘솔 오른쪽 위의 URL & Appkey 메뉴에서 확인할 수 있습니다.
이름 | 설명 |
---|---|
Authorization | 콘솔에서 발급받은 보안 키(SecretKey) |
모든 API는 앱 키를 path 파라미터로 지정해야 합니다. * 예) /v2.0/appKeys/{appKey}/distributions
이름 | 설명 |
---|---|
appKey | 콘솔에서 발급받은 앱 키(Appkey) |
모든 API 요청에 대해서 200 OK로 응답합니다. 자세한 응답 결과는 다음의 예와 같이 응답 본문의 헤더를 참고합니다.
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "Success"
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
다음은 CDN 서비스 상태를 나타내는 상태 코드로, 서비스 조회 시 서비스 상태를 확인할 수 있습니다.
값 | 설명 |
---|---|
OPENING | 서비스 시작 중 |
OPEN | 서비스 중 |
MODIFYING | 수정 중 |
RESUME | 시작 |
SUSPENDING | 정지 진행 중 |
SUSPEND | 정지 |
CLOSING | 사용 종료 중 |
CLOSE | 사용 종료 |
ERROR | 서비스 생성 중 오류 발생 |
다음은 도메인의 인증서 발급 상태를 나타내는 상태 코드로, 인증서 조회 시 발급 상태를 확인할 수 있습니다.
값 | 설명 |
---|---|
PENDING_NEW | 인증서 신규 발급이 요청되어 처리 대기 중 |
PENDING_CANCEL | 인증서 발급이 취소 요청되어 도메인 검증 취소 처리 대기 중 |
PENDING_DELETE | 발급된 인증서가 삭제 요청되어 처리 대기 중 |
PENDING_EXPIRE | 발급된 인증서가 만료되어 만료 처리 대기 중 |
VALIDATED | 도메인 검증 완료 |
DEPLOYED | 인증서 배포 완료 |
WAITING_VALIDATION | 도메인 검증 대기 중 |
CANCELED | 도메인 검증 취소 완료 |
DELETED | 도메인 인증서 삭제 완료 |
EXPIRED | 도메인 인증서 만료 |
[URI]
메서드 | URI |
---|---|
POST | /v2.0/appKeys/{appKey}/distributions |
[요청 본문]
{
"distributions" : [
{
"useOriginHttpProtocolDowngrade": false,
"forwardHostHeader": "ORIGIN_HOSTNAME",
"domainAlias": ["alias.test.net"],
"description" : "sample-cdn",
"useOriginCacheControl" : false,
"cacheType": "BYPASS",
"defaultMaxAge": 86400,
"cacheKeyQueryParam": "INCLUDE_ALL",
"referrerType" : "BLACKLIST",
"referrers" : ["cloud.nhn.com"],
"isAllowWhenEmptyReferrer" : true,
"isAllowPost" : true,
"isAllowPut" : false,
"isAllowPatch" : true,
"isAllowDelete" : false,
"useLargeFileOptimization" : false,
"origins" : [
{
"origin" : "static.origin.com",
"originPath" : "/resources",
"httpPort": 80,
"httpsPort": 443
}
],
"rootPathAccessControl" : {
"enable": true,
"controlType": "REDIRECT",
"redirectPath": "/default.png",
"redirectStatusCode": 302
},
"modifyOutgoingResponseHeaderControl" : {
"enable": true,
"headerList": [
{
"action": "ADD",
"standardHeaderName": "OTHER",
"customHeaderName": "custom-header-name",
"headerValue": "custom-header-value"
},
{
"action": "MODIFY",
"standardHeaderName": "ACCESS_CONTROL_ALLOW_ORIGIN",
"headerValue": "*"
}
]
},
"callback": {
"httpMethod": "GET",
"url": "http://test.callback.com/cdn?=appKey={appKey}&status={status}&domain={domain}"
}
}
]
}
[필드]
이름 | 타입 | 필수 여부 | 기본값 | 유효 범위 | 설명 |
---|---|---|---|---|---|
distributions | List | 필수 | 생성할 CDN의 오브젝트 목록 | ||
distributions[0].useOriginHttpProtocolDowngrade | Boolean | 필수 | false | true/false | 원본 서버가 HTTP 응답만 가능한 경우, CDN 서버에서 원본 서버로 요청 시 HTTPS 요청을 HTTP 요청으로 다운그레이드 하기 위한 설정 사용 여부 |
distributions[0].forwardHostHeader | String | 필수 | ORIGIN_HOSTNAME REQUEST_HOST_HEADER |
CDN 서버가 원본 서버로 콘텐츠 요청 시 전달할 호스트 헤더 설정("ORIGIN_HOSTNAME": 원본 서버의 호스트 이름으로 설정, "REQUEST_HOST_HEADER": 클라이언트 요청의 호스트 헤더로 설정) | |
distributions[0].useOriginCacheControl | Boolean | 선택 | true/false | 캐시 만료 설정(true: 원본 서버 설정 사용, false: 사용자 설정 사용). useOriginCacheControl이나 cacheType 중 하나는 반드시 입력해야 합니다. | |
distributions[0].cacheType | String | 선택 | BYPASS, NO_STORE | 캐시 타입 설정. useOriginCacheControl이나 cacheType 중 하나는 반드시 입력해야 합니다. | |
distributions[0].referrerType | String | 필수 | BLACKLIST/WHITELIST | 리퍼러 접근 관리("BLACKLIST": 블랙리스트, "WHITELIST": 화이트리스트) | |
distributions[0].referrers | List | 선택 | 정규 표현식 형태의 리퍼러 헤더 목록 | ||
distributions[0].isAllowWhenEmptyReferrer | Boolean | 선택 | true | true/false | 리퍼러 헤더가 없는 경우 콘텐츠 접근 허용(true)/거부(false) 여부 |
distributions[0].isAllowPost | Boolean | 선택 | false | true/false | POST 메서드 허용(true)/거부(false) 여부 |
distributions[0].isAllowPut | Boolean | 선택 | false | true/false | PUT 메서드 허용(true)/거부(false) 여부 |
distributions[0].isAllowPatch | Boolean | 선택 | false | true/false | PATCH 메서드 허용(true)/거부(false) 여부 |
distributions[0].isAllowDelete | Boolean | 선택 | false | true/false | DELETE 메서드 허용(true)/거부(false) 여부 |
distributions[0].useLargeFileOptimization | Boolean | 선택 | false | true/false | 대용량 파일 최적화 설정 사용 여부 |
distributions[0].description | String | 선택 | 최대 255자 | 설명 | |
distributions[0].domainAlias | List | 선택 | 도메인 별칭 목록(개인 혹은 회사가 소유한 도메인 사용) | ||
distributions[0].defaultMaxAge | Integer | 선택 | 0 | 0~2,147,483,647 | 캐시 만료 시간(초), 기본값 0은 604,800초입니다. |
distributions[0].cacheKeyQueryParam | String | 선택 | INCLUDE_ALL | INCLUDE_ALL/EXCLUDE_ALL | 캐시 키에 요청 쿼리 문자열 포함 여부 설정("INCLUDE_ALL": 전체 포함, "EXCLUDE_ALL": 전체 미포함) |
distributions[0].origins | List | 필수 | 원본 서버 오브젝트 목록 | ||
distributions[0].origins[0].origin | String | 필수 | 최대 255자 | 원본 서버(도메인 또는 IP) | |
distributions[0].origins[0].originPath | String | 선택 | 최대 8192자 | 원본 서버 하위 경로(/를 포함한 경로로 입력해 주세요.) | |
distributions[0].origins[0].httpPort | Integer | 선택 | 콘솔 사용 가이드 > 원본 서버의 '[표 2] 사용 가능한 원본 서버 포트 번호' 참고 | 원본 서버 HTTP 프로토콜 포트(origins[0].httpPort와 origins[0].httpsPort 중 하나는 반드시 입력해야 합니다.) | |
distributions[0].origins[0].httpsPort | Integer | 선택 | 콘솔 사용 가이드 > 원본 서버의 '[표 2] 사용 가능한 원본 서버 포트 번호' 참고 | 원본 서버 HTTPS 프로토콜 포트(origins[0].httpPort와 origins[0].httpsPort 중 하나는 반드시 입력해야 합니다.) | |
distributions[0].rootPathAccessControl | Object | 선택 | CDN 서비스의 루트 경로에 대한 접근 제어 설정 | ||
distributions[0].rootPathAccessControl.enable | Boolean | 필수 | true | true/false | 루트 경로에 대한 접근 제어 사용(true)/미사용(false) 여부 |
distributions[0].rootPathAccessControl.controlType | String | 선택 | DENY, REDIRECT | enable이 true일 경우 필수 입력. 루트 경로에 대한 접근 제어 방식("DENY": 접근 거부, "REDIRECT": 지정한 경로로 리다이렉트) | |
distributions[0].rootPathAccessControl.redirectPath | String | 선택 | controlType이 "REDIRECT"일 경우 필수 입력. 루트 경로에 대한 요청을 리다이렉트할 경로(/를 포함한 경로로 입력해 주세요.) | ||
distributions[0].rootPathAccessControl.redirectStatusCode | Integer | 선택 | 301, 302, 303, 307 | controlType이 "REDIRECT"일 경우 필수 입력. 리다이렉트시 전달되는 HTTP 응답 코드 | |
distributions[0].modifyOutgoingResponseHeaderControl | Object | 선택 | CDN에서 응답하는 HTTP 헤더를 추가/변경/삭제하는 설정 | ||
distributions[0].modifyOutgoingResponseHeaderControl.enable | Boolean | 필수 | true | true/false | HTTP 응답 헤더를 추가/변경/삭제하는 설정 사용(true)/미사용(false) 여부 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList | List | 선택 | HTTP 응답 헤더 목록 | ||
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].action | String | 선택 | ADD, MODIFY, DELETE | HTTP 응답 헤더 변경 방식 | |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].standardHeaderName | String | 선택 | ACCESS_CONTROL_ALLOW_CREDENTIALS ACCESS_CONTROL_ALLOW_HEADERS ACCESS_CONTROL_ALLOW_METHODS ACCESS_CONTROL_ALLOW_ORIGIN ACCESS_CONTROL_EXPOSE_HEADERS ACCESS_CONTROL_MAX_AGE CACHE_CONTROL CONTENT_DISPOSITION CONTENT_TYPE P3P PRAGMA OTHER |
일반 HTTP 응답 헤더 이름 | |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].customHeaderName | String | 선택 | standardHeaderName이 "OTHER"일 경우 필수 입력. 사용자 정의 HTTP 응답 헤더 이름 | ||
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].headerValue | String | 필수 | HTTP 응답 헤더 값 | ||
distributions[0].callback | Object | 선택 | CDN 생성 처리 결과를 통보받을 콜백 URL(콜백 설정은 선택 입력입니다.) | ||
distributions[0].callback.httpMethod | String | 필수 | GET/POST/PUT | 콜백의 HTTP 메서드 | |
distributions[0].callback.url | String | 필수 | 최대 1024자 | 콜백 URL |
[응답 본문]
{
"header": {
"resultCode": 0,
"resultMessage": "SUCCESS",
"isSuccessful": true
},
"distributions": [
{
"domain": "djwbjvqa.toastcdn.net",
"domainAlias": [
"alias.test1.net"
],
"region": "GLOBAL",
"description": "sample-cdn",
"status": "OPENING",
"defaultMaxAge": 0,
"cacheKeyQueryParam": "INCLUDE_ALL",
"referrerType": "BLACKLIST",
"referrers": [
"cloud.nhn.com"
],
"isAllowWhenEmptyReferrer" : true,
"isAllowPost" : true,
"isAllowPut" : false,
"isAllowPatch" : true,
"isAllowDelete" : false,
"useLargeFileOptimization" : false,
"useOriginCacheControl": true,
"cacheType": "BYPASS",
"origins": [
{
"origin": "static.origin.com",
"originPath": "/resources",
"httpPort": 80,
"httpsPort": 443
}
],
"forwardHostHeader": "ORIGIN_HOSTNAME",
"useOriginHttpProtocolDowngrade": false,
"rootPathAccessControl" : {
"enable": true,
"controlType": "REDIRECT",
"redirectPath": "/default.png",
"redirectStatusCode": 302
},
"modifyOutgoingResponseHeaderControl": {
"enable": true,
"headerList": [
{
"action": "ADD",
"standardHeaderName": "OTHER",
"customHeaderName": "custom-header-name",
"headerValue": "custom-header-value"
},
{
"action": "MODIFY",
"standardHeaderName": "ACCESS_CONTROL_ALLOW_ORIGIN",
"headerValue": "*"
}
]
},
"callback": {
"httpMethod": "GET",
"url": "http://test.callback.com/cdn?=appKey={appKey}&status={status}&domain={domain}"
}
}
]
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
distributions | List | 생성된 CDN 오브젝트 목록 |
distributions[0].domain | String | 생성된 도메인(서비스) 이름 |
distributions[0].domainAlias | List | 도메인 별칭 목록(개인 혹은 회사가 소유한 도메인 사용) |
distributions[0].region | String | 서비스 지역("GLOBAL": 글로벌) |
distributions[0].description | String | 설명 |
distributions[0].status | String | CDN 상태 코드([표] CDN 상태 코드 참고) |
distributions[0].defaultMaxAge | Integer | 캐시 만료 시간(초) |
distributions[0].cacheKeyQueryParam | String | 캐시 키에 요청 쿼리 문자열 포함 여부 설정("INCLUDE_ALL": 전체 포함, "EXCLUDE_ALL": 전체 미포함) |
distributions[0].referrerType | String | 리퍼러 접근 관리("BLACKLIST": 블랙리스트, "WHITELIST": 화이트리스트) |
distributions[0].referrers | List | 정규 표현식 형태의 리퍼러 헤더 목록 |
distributions[0].isAllowWhenEmptyReferrer | Boolean | 리퍼러 헤더가 없는 경우 콘텐츠 접근 허용(true)/거부(false) 여부 |
distributions[0].isAllowPost | Boolean | POST 메서드 허용(true)/거부(false) 여부 |
distributions[0].isAllowPut | Boolean | PUT 메서드 허용(true)/거부(false) 여부 |
distributions[0].isAllowPatch | Boolean | PATCH 메서드 허용(true)/거부(false) 여부 |
distributions[0].isAllowDelete | Boolean | DELETE 메서드 허용(true)/거부(false) 여부 |
distributions[0].useLargeFileOptimization | Boolean | 대용량 파일 최적화 설정 사용 여부 |
distributions[0].useOriginCacheControl | Boolean | 원본 서버 설정 사용 여부(true: 원본 서버 설정 사용, false: 사용자 설정 사용) |
distributions[0].cacheType | String | 캐시 타입 설정 |
distributions[0].origins | List | 원본 서버 오브젝트 목록 |
distributions[0].origins[0].origin | String | 원본 서버(도메인 또는 IP) |
distributions[0].origins[0].originPath | String | 원본 서버 하위 경로 |
distributions[0].origins[0].httpPort | Integer | 원본 서버 HTTP 프로토콜 포트 |
distributions[0].origins[0].httpsPort | Integer | 원본 서버 HTTPS 프로토콜 포트 |
distributions[0].useOriginHttpProtocolDowngrade | Boolean | 원본 서버가 HTTP 응답만 가능한 경우, CDN 서버에서 원본 서버로 요청 시 HTTPS 요청을 HTTP 요청으로 다운그레이드 하기 위한 설정 사용 여부 |
distributions[0].forwardHostHeader | String | CDN 서버가 원본 서버로 콘텐츠 요청 시 전달 할 호스트 헤더 설정("ORIGIN_HOSTNAME": 원본 서버의 호스트 이름으로 설정, "REQUEST_HOST_HEADER": 클라이언트 요청의 호스트헤더로 설정 |
distributions[0].rootPathAccessControl | Object | CDN 서비스의 루트 경로에 대한 접근 제어 설정 |
distributions[0].rootPathAccessControl.enable | Boolean | 루트 경로에 대한 접근 제어 사용(true)/미사용(false) 여부 |
distributions[0].rootPathAccessControl.controlType | String | enable이 true일 경우 필수 입력. 루트 경로에 대한 접근 제어 방식("DENY": 접근 거부, "REDIRECT": 지정한 경로로 리다이렉트) |
distributions[0].rootPathAccessControl.redirectPath | String | controlType이 "REDIRECT"일 경우 필수 입력. 루트 경로에 대한 요청을 리다이렉트할 경로(/를 포함한 경로로 입력해 주세요.) |
distributions[0].rootPathAccessControl.redirectStatusCode | Integer | controlType이 "REDIRECT"일 경우 필수 입력. 리다이렉트시 전달되는 HTTP 응답 코드 |
distributions[0].modifyOutgoingResponseHeaderControl | Object | CDN에서 응답하는 HTTP 헤더를 추가/변경/삭제하는 설정 |
distributions[0].modifyOutgoingResponseHeaderControl.enable | Boolean | HTTP 응답 헤더를 추가/변경/삭제하는 설정 사용(true)/미사용(false) 여부 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList | List | HTTP 응답 헤더 목록 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].action | String | HTTP 응답 헤더 변경 방식 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].standardHeaderName | String | 일반 HTTP 응답 헤더 이름 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].customHeaderName | String | standardHeaderName이 "OTHER"일 경우 필수 입력. 사용자 정의 HTTP 응답 헤더 이름 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].headerValue | String | HTTP 응답 헤더 값 |
distributions[0].callback | Object | 서비스 생성 처리 결과를 통보받을 콜백 |
distributions[0].callback.httpMethod | String | 콜백의 HTTP 메서드 |
distributions[0].callback.url | String | 콜백 URL |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appKeys/{appKey}/distributions |
[파라미터]
이름 | 타입 | 필수 여부 | 유효 범위 | 설명 |
---|---|---|---|---|
domain | String | 선택 | 최대 255자 | 조회할 도메인(서비스 이름) |
status | String | 선택 | CDN 상태 코드 | CDN 상태 코드([표] CDN 상태 코드 참고) |
[예]
curl -X GET "https://kr1-cdn.api.nhncloudservice.com/v2.0/appKeys/{appKey}/distributions?domain={domain}" \
-H "Authorization: {secretKey}" \
-H "Content-Type: application/json"
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
},
"domain" : "lhcsxuo0.toastcdn.net",
"domainAlias" : ["test.domain.com"],
"region" : "GLOBAL",
"status" : "OPEN",
"defaultMaxAge" : 86400,
"cacheKeyQueryParam": "INCLUDE_ALL",
"status" : "OPENING",
"referrerType" : "BLACKLIST",
"referrers" : ["test.com"],
"isAllowWhenEmptyReferrer" : true,
"isAllowPost" : true,
"isAllowPut" : false,
"isAllowPatch" : true,
"isAllowDelete" : false,
"useLargeFileOptimization" : false,
"useOriginCacheControl" : false,
"cacheType": "NO_STORE",
"origins" : [
{
"origin" : "static.resource.com",
"httpPort" : 80,
"httpsPort" : 443
}
],
"forwardHostHeader": "ORIGIN_HOSTNAME",
"useOriginHttpProtocolDowngrade": false,
"rootPathAccessControl" : {
"enable": true,
"controlType": "REDIRECT",
"redirectPath": "/default.png",
"redirectStatusCode": 302
},
"modifyOutgoingResponseHeaderControl" : {
"enable": true,
"headerList": [
{
"action": "ADD",
"standardHeaderName": "OTHER",
"customHeaderName": "custom-header-name",
"headerValue": "custom-header-value"
},
{
"action": "MODIFY",
"standardHeaderName": "ACCESS_CONTROL_ALLOW_ORIGIN",
"headerValue": "*"
}
]
},
"callback": {
"httpMethod": "GET",
"url": "http://test.callback.com/cdn?=appKey={appKey}&status={status}&domain={domain}"
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
distributions | List | 생성된 CDN 오브젝트 목록 |
distributions[0].domain | String | 도메인 이름(서비스 이름) |
distributions[0].domainAlias | List | 도메인 별칭 목록(개인 혹은 회사가 소유한 도메인 사용) |
distributions[0].region | String | 서비스 지역("GLOBAL": 글로벌) |
distributions[0].status | String | CDN 상태 코드([표] CDN 상태 코드 참고) |
distributions[0].defaultMaxAge | Integer | 캐시 만료 시간(초) |
distributions[0].cacheKeyQueryParam | String | 캐시 키에 요청 쿼리 문자열 포함 여부 설정("INCLUDE_ALL": 전체 포함, "EXCLUDE_ALL": 전체 미포함) |
distributions[0].referrerType | String | 리퍼러 접근 관리("BLACKLIST": 블랙리스트, "WHITELIST": 화이트리스트) |
distributions[0].referrers | List | 정규 표현식 형태의 리퍼러 헤더 목록 |
distributions[0].isAllowWhenEmptyReferrer | Boolean | 리퍼러 헤더가 없는 경우 콘텐츠 접근 허용(true)/거부(false) 여부 |
distributions[0].isAllowPost | Boolean | POST 메서드 허용(true)/거부(false) 여부 |
distributions[0].isAllowPut | Boolean | PUT 메서드 허용(true)/거부(false) 여부 |
distributions[0].isAllowPatch | Boolean | PATCH 메서드 허용(true)/거부(false) 여부 |
distributions[0].isAllowDelete | Boolean | DELETE 메서드 허용(true)/거부(false) 여부 |
distributions[0].useLargeFileOptimization | Boolean | 대용량 파일 최적화 설정 사용 여부 |
distributions[0].useOriginCacheControl | Boolean | 원본 서버 설정 사용 여부(true: 원본 서버 설정 사용, false: 사용자 설정 사용) |
distributions[0].cacheType | String | 캐시 타입 설정 |
distributions[0].origins | List | 원본 서버 오브젝트 목록 |
distributions[0].origins[0].origin | String | 원본 서버(도메인 또는 IP) |
distributions[0].origins[0].originPath | String | 원본 서버 하위 경로 |
distributions[0].origins[0].httpPort | Integer | 원본 서버 HTTP 프로토콜 포트 |
distributions[0].origins[0].httpsPort | Integer | 원본 서버 HTTPS 프로토콜 포트 |
distributions[0].forwardHostHeader | String | 서비스 배포 처리 결과를 통보받을 콜백 |
distributions[0].useOriginHttpProtocolDowngrade | Boolean | 원본 서버가 HTTP 응답만 가능한 경우, CDN 서버에서 원본 서버로 요청 시 HTTPS 요청을 HTTP 요청으로 다운그레이드 하기 위한 설정 사용 여부 |
distributions[0].forwardHostHeader | String | CDN 서버가 원본 서버로 콘텐츠 요청 시 전달 할 호스트 헤더 설정("ORIGIN_HOSTNAME": 원본 서버의 호스트 이름으로 설정, "REQUEST_HOST_HEADER": 클라이언트 요청의 호스트헤더로 설정 |
distributions[0].rootPathAccessControl | Object | CDN 서비스의 루트 경로에 대한 접근 제어 설정 |
distributions[0].rootPathAccessControl.enable | Boolean | 루트 경로에 대한 접근 제어 사용(true)/미사용(false) 여부 |
distributions[0].rootPathAccessControl.controlType | String | enable이 true일 경우 필수 입력. 루트 경로에 대한 접근 제어 방식("DENY": 접근 거부, "REDIRECT": 지정한 경로로 리다이렉트) |
distributions[0].rootPathAccessControl.redirectPath | String | controlType이 "REDIRECT"일 경우 필수 입력. 루트 경로에 대한 요청을 리다이렉트할 경로(/를 포함한 경로로 입력해 주세요.) |
distributions[0].rootPathAccessControl.redirectStatusCode | Integer | controlType이 "REDIRECT"일 경우 필수 입력. 리다이렉트시 전달되는 HTTP 응답 코드 |
distributions[0].modifyOutgoingResponseHeaderControl | Object | CDN에서 응답하는 HTTP 헤더를 추가/변경/삭제하는 설정 |
distributions[0].modifyOutgoingResponseHeaderControl.enable | Boolean | HTTP 응답 헤더를 추가/변경/삭제하는 설정 사용(true)/미사용(false) 여부 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList | List | HTTP 응답 헤더 목록 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].action | String | HTTP 응답 헤더 변경 방식 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].standardHeaderName | String | 일반 HTTP 응답 헤더 이름 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].customHeaderName | String | standardHeaderName이 "OTHER"일 경우 필수 입력. 사용자 정의 HTTP 응답 헤더 이름 |
distributions[0].modifyOutgoingResponseHeaderControl.headerList[0].headerValue | String | HTTP 응답 헤더 값 |
distributions[0].callback | Object | 서비스 배포 처리 결과를 통보받을 콜백 |
distributions[0].callback.httpMethod | String | 콜백의 HTTP 메서드 |
distributions[0].callback.url | String | 콜백 URL |
[URI]
메서드 | URI |
---|---|
PUT | /v2.0/appKeys/{appKey}/distributions |
[요청 본문]
{
"distributions" : [
{
"domain" : "sample.toastcdn.net",
"useOriginCacheControl" : false,
"cacheType": "BYPASS",
"defaultMaxAge": 86400,
"cacheKeyQueryParam": "INCLUDE_ALL",
"referrerType" : "BLACKLIST",
"referrers" : ["test.com"],
"isAllowWhenEmptyReferrer" : true,
"isAllowPost" : true,
"isAllowPut" : false,
"isAllowPatch" : true,
"isAllowDelete" : false,
"useLargeFileOptimization" : true,
"origins" : [
{
"origin" : "static.resource.com",
"httpPort" : 80,
"httpsPort" : 443,
"originPath" : "/latest/resources"
}
],
"useOriginHttpProtocolDowngrade": false,
"forwardHostHeader": "ORIGIN_HOSTNAME",
"rootPathAccessControl" : {
"enable": true,
"controlType": "REDIRECT",
"redirectPath": "/default.png",
"redirectStatusCode": 302
},
"modifyOutgoingResponseHeaderControl" : {
"enable": true,
"headerList": [
{
"action": "ADD",
"standardHeaderName": "OTHER",
"customHeaderName": "custom-header-name",
"headerValue": "custom-header-value"
},
{
"action": "MODIFY",
"standardHeaderName": "ACCESS_CONTROL_ALLOW_ORIGIN",
"headerValue": "*"
}
]
},
"callback": {
"httpMethod": "GET",
"url": "http://test.callback.com/cdn?=appKey={appKey}&status={status}&domain={domain}"
},
"description" : "change contents"
}
]
}
[필드]
이름 | 타입 | 필수 여부 | 기본값 | 유효 범위 | 설명 |
---|---|---|---|---|---|
domain | String | 필수 | 최대 255자 | 수정할 도메인(서비스 이름) | |
useOriginCacheControl | Boolean | 선택 | true/false | 캐시 만료 설정(true: 원본 서버 설정 사용, false: 사용자 설정 사용). useOriginCacheControl이나 cacheType 중 하나는 반드시 입력해야 합니다. | |
cacheType | String | 선택 | BYPASS, NO_STORE | 캐시 타입 설정. useOriginCacheControl이나 cacheType 중 하나는 반드시 입력해야 합니다. | |
referrerType | String | 필수 | BLACKLIST/WHITELIST | 리퍼러 접근 관리("BLACKLIST": 블랙리스트, "WHITELIST": 화이트리스트) | |
referrers | List | 선택 | 정규 표현식 형태의 리퍼러 헤더 목록 | ||
isAllowWhenEmptyReferrer | Boolean | 선택 | true | true/false | 리퍼러 헤더가 없는 경우 콘텐츠 접근 허용(true)/거부(false) 여부 |
isAllowPost | Boolean | 선택 | false | true/false | POST 메서드 허용(true)/거부(false) 여부 |
isAllowPut | Boolean | 선택 | false | true/false | PUT 메서드 허용(true)/거부(false) 여부 |
isAllowPatch | Boolean | 선택 | false | true/false | PATCH 메서드 허용(true)/거부(false) 여부 |
isAllowDelete | Boolean | 선택 | false | true/false | DELETE 메서드 허용(true)/거부(false) 여부 |
useLargeFileOptimization | Boolean | 선택 | false | true/false | 대용량 파일 최적화 설정 사용 여부 |
description | String | 선택 | 최대 255자 | 설명 | |
domainAlias | List | 선택 | 최대 255자 | 도메인 별칭(개인 혹은 회사가 소유한 도메인 사용) | |
defaultMaxAge | Integer | 선택 | 0 | 0~2,147,483,647 | 캐시 만료 시간(초), 기본값 0은 604,800초입니다. |
cacheKeyQueryParam | String | 선택 | INCLUDE_ALL | INCLUDE_ALL/EXCLUDE_ALL | 캐시 키에 요청 쿼리 문자열 포함 여부 설정("INCLUDE_ALL": 전체 포함, "EXCLUDE_ALL": 전체 미포함) |
origins | List | 필수 | 원본 서버 | ||
origins[0].origin | String | 필수 | 최대 255자 | 원본 서버(도메인 또는 IP) | |
origins[0].originPath | String | 선택 | 최대 8192자 | 원본 서버 하위 경로 | |
origins[0].httpPort | Integer | 선택 | 콘솔 사용 가이드 > 원본 서버의 '[표 2] 사용 가능한 원본 서버 포트 번호' 참고 | 원본 서버 HTTP 프로토콜 포트(origins[0].httpPort와 origins[0].httpsPort 중 하나는 반드시 입력해야 합니다.) | |
origins[0].httpsPort | Integer | 선택 | 콘솔 사용 가이드 > 원본 서버의 '[표 2] 사용 가능한 원본 서버 포트 번호' 참고 | 원본 서버 HTTPS 프로토콜 포트(origins[0].httpPort와 origins[0].httpsPort 중 하나는 반드시 입력해야 합니다.) | |
useOriginHttpProtocolDowngrade | Boolean | 필수 | false | true/false | 원본 서버가 HTTP 응답만 가능한 경우, CDN 서버에서 원본 서버로 요청 시 HTTPS 요청을 HTTP 요청으로 다운그레이드 하기 위한 설정 사용 여부 |
forwardHostHeader | String | 필수 | ORIGIN_HOSTNAME REQUEST_HOST_HEADER |
CDN 서버가 원본 서버로 콘텐츠 요청 시 전달할 호스트 헤더 설정("ORIGIN_HOSTNAME": 원본 서버의 호스트 이름으로 설정, "REQUEST_HOST_HEADER": 클라이언트 요청의 호스트 헤더로 설정) | |
useOrigin | String | 필수 | Y/N | 캐시 만료 설정(Y: 원본 설정 사용, "N":사용자 설정 사용) | |
rootPathAccessControl | Object | 선택 | CDN 서비스의 루트 경로에 대한 접근 제어 설정 | ||
rootPathAccessControl.enable | Boolean | 필수 | false | true/false | 루트 경로에 대한 접근 제어 사용(true)/미사용(false) 여부 |
rootPathAccessControl.controlType | String | 선택 | DENY, REDIRECT | enable이 true일 경우 필수 입력. 루트 경로에 대한 접근 제어 방식("DENY": 접근 거부, "REDIRECT": 지정한 경로로 리다이렉트) | |
rootPathAccessControl.redirectPath | String | 선택 | controlType이 "REDIRECT"일 경우 필수 입력. 루트 경로에 대한 요청을 리다이렉트할 경로(/를 포함한 경로로 입력해 주세요.) | ||
rootPathAccessControl.redirectStatusCode | Integer | 선택 | 301, 302, 303, 307 | controlType이 "REDIRECT"일 경우 필수 입력. 리다이렉트시 전달되는 HTTP 응답 코드 | |
modifyOutgoingResponseHeaderControl | Object | 선택 | CDN에서 응답하는 HTTP 헤더를 추가/변경/삭제하는 설정 | ||
modifyOutgoingResponseHeaderControl.enable | Boolean | 필수 | true | true/false | HTTP 응답 헤더를 추가/변경/삭제하는 설정 사용(true)/미사용(false) 여부 |
modifyOutgoingResponseHeaderControl.headerList | List | 선택 | HTTP 응답 헤더 목록 | ||
modifyOutgoingResponseHeaderControl.headerList[0].action | String | 선택 | ADD, MODIFY, DELETE | HTTP 응답 헤더 변경 방식 | |
modifyOutgoingResponseHeaderControl.headerList[0].standardHeaderName | String | 선택 | ACCESS_CONTROL_ALLOW_CREDENTIALS ACCESS_CONTROL_ALLOW_HEADERS ACCESS_CONTROL_ALLOW_METHODS ACCESS_CONTROL_ALLOW_ORIGIN ACCESS_CONTROL_EXPOSE_HEADERS ACCESS_CONTROL_MAX_AGE CACHE_CONTROL CONTENT_DISPOSITION CONTENT_TYPE P3P PRAGMA OTHER |
일반 HTTP 응답 헤더 이름 | |
modifyOutgoingResponseHeaderControl.headerList[0].customHeaderName | String | 선택 | standardHeaderName이 "OTHER"일 경우 필수 입력. 사용자 정의 HTTP 응답 헤더 이름 | ||
modifyOutgoingResponseHeaderControl.headerList[0].headerValue | String | 필수 | HTTP 응답 헤더 값 | ||
callback | Object | 선택 | CDN 서비스 배포 결과를 통보받을 콜백 URL(콜백 설정은 선택 입력입니다.) | ||
callback.httpMethod | String | 필수 | GET/POST/PUT | 콜백의 HTTP 메서드 | |
callback.url | String | 필수 | 최대 1024자 | 콜백 URL |
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
[URI]
메서드 | URI |
---|---|
DELETE | /v2.0/appKeys/{appKey}/distributions |
[요청 본문]
{
"domains" : [
"lhcsxuo0.toastcdn.net"
]
}
[필드]
이름 | 타입 | 필수 여부 | 기본값 | 유효 범위 | 설명 |
---|---|---|---|---|---|
domains | String | 필수 | 삭제할 도메인, 여러 도메인 입력 가능 |
* 여러 도메인 입력 시, 해당하는 서비스는 모두 종료됩니다.
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
[URI]
메서드 | URI |
---|---|
POST | /v2.0/appKeys/{appKey}/auth-token |
[요청 본문]
{
"encryptKey" : "AUTH_TOKEN_ENCRYPT_KEY",
"durationSeconds": 3600,
"singlePath": "/sample.png",
"singleWildcardPath": "/dir/*",
"multipleWildcardPath": ["/dir/*", "/dir2/*"],
"sessionId": "sampleSessionId"
}
[필드]
이름 | 타입 | 필수 여부 | 기본값 | 유효 범위 | 설명 |
---|---|---|---|---|---|
encryptKey | String | 필수 | NHN Cloud CDN 콘솔에 표시된 Auth Token 인증 제어 관리 > 토큰 암호화 키 | ||
durationSeconds | Integer | 필수 | 0~2,147,483,647 | 생성된 토큰이 유효한 시간(초) | |
singlePath | String | 선택 | 생성된 토큰을 이용하여 접근할 단일 경로 | ||
singleWildcardPath | String | 선택 | 생성된 토큰을 이용하여 접근할 단일 와일드카드 경로 | ||
multipleWildcardPath | String | 선택 | 생성된 토큰을 이용하여 접근할 여러 개의 와일드카드 경로 | ||
sessionId | String | 선택 | 문자열 길이 최대 36바이트 | 단일 접근 요청에 대해 sessionId를 포함하여 토큰을 생성 |
[응답 본문]
{
"header": {
"resultCode": 0,
"resultMessage": "SUCCESS",
"isSuccessful": true
},
"authToken": {
"singlePathToken": "exp=1652247396~id=fjdklfjklsdfjklsdjflksdjfkls~hmac=c743fcdb2c35c7c97455c18f6d354eef89743f556d3b82df3861ef9cb67eec94",
"singleWildcardPathToken": "exp=1652247396~acl=%2fdir%2f*~id=fjdklfjklsdfjklsdjflksdjfkls~hmac=160acb24795daf63a7b0628420f8d7f4a37f014c01b73ad388ee5efaca17d663",
"multipleWildcardPathToken": "exp=1652247396~acl=%2fdir%2f*~id=fjdklfjklsdfjklsdjflksdjfkls~hmac=160acb24795daf63a7b0628420f8d7f4a37f014c01b73ad388ee5efaca17d663"
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
authToken | Object | 생성된 Auth Token 오브젝트 |
authToken.singlePathToken | String | 단일 경로에 접근할 수 있도록 생성된 인증 토큰 |
authToken.singleWildcardPathToken | String | 단일 와일드카드 경로에 접근할 수 있도록 생성된 인증 토큰 |
authToken.multipleWildcardPathToken | String | 여러 개의 와일드카드 경로에 접근할 수 있도록 생성된 인증 토큰 |
[URI]
메서드 | URI |
---|---|
POST | /v2.0/appKeys/{appKey}/purge/item |
[요청 본문]
{
"domain": "sample.toastcdn.net",
"purgeList":["http://sample.toastcdn.net/img_01.png",
"http://sample.toastcdn.net/img_02.png"]
}
[필드]
이름 | 타입 | 필수 여부 | 기본값 | 유효 범위 | 설명 |
---|---|---|---|---|---|
domain | String | 필수 | 최대 255자 | 재배포할 도메인(서비스) 이름 | |
purgeList | List | 필수 | 재배포 대상 URL 목록 |
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
[URI]
메서드 | URI |
---|---|
POST | /v2.0/appKeys/{appKey}/purge/all |
[요청 본문]
{
"domain": "sample.toastcdn.net"
}
[필드]
이름 | 타입 | 필수 여부 | 기본값 | 유효 범위 | 설명 |
---|---|---|---|---|---|
domain | String | 필수 | 최대 255자 | 재배포할 도메인(서비스) 이름 |
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
[URI]
메서드 | URI |
---|---|
POST | /v2.0/appKeys/{appKey}/certificates |
[요청 본문]
{
"certificateDomain": "example.domain.com",
"callbackHttpMethod": "POST",
"callbackUrl": "http://test.callback.com/cdn-certificate?appKey={appKey}&status={status}&domain={domain}"
}
[필드]
이름 | 타입 | 필수 여부 | 기본값 | 유효 범위 | 설명 |
---|---|---|---|---|---|
certificateDomain | String | 필수 | 최대 255자 | 신규 인증서를 발급하고자 하는 도메인(전체 도메인 주소 형식으로 입력) | |
callbackHttpMethod | String | 선택 | GET/POST/PUT | 인증서 생성 처리 결과를 통보받을 콜백의 HTTP 메서드 | |
callbackUrl | String | 선택 | 최대 1024자 | 인증서 생성 처리 결과를 통보받을 콜백 URL |
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
},
"certificates": [
{
"sanDnsId": "628bb15d-fe0a-46cf-9b63-8cdba80cbc1a",
"dnsName": "example.domain.com",
"dnsStatus": "PENDING_NEW",
"callbackHttpMethod": "POST",
"callbackUrl": "http://test.callback.com/cdn-certificate?appKey={appKey}&status={status}&domain={domain}",
"createDatetime": "2022-06-07T16:51:32.000+09:00",
"updateDatetime": "2022-06-07T16:51:32.000+09:00",
"hasCname": false,
"hasDistributionDomain": false,
"renewalStartDate": "2022-08-26T00:00:00.000+09:00",
"renewalEndDate": "2022-08-30T00:00:00.000+09:00"
}
]
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
certificates | List | 발급된 인증서 목록 |
certificates[0].sanDnsId | String | 인증서 ID |
certificates[0].dnsName | String | 인증서 도메인 |
certificates[0].dnsStatus | String | 인증서 발급 상태 코드([표] 인증서 발급 상태 코드 참고) |
certificates[0].callbackHttpMethod | String | 인증서 생성 처리 결과를 통보받을 콜백의 HTTP 메서드 |
certificates[0].callbackUrl | String | 인증서 생성 처리 결과를 통보받을 콜백 URL |
certificates[0].createDatetime | DateTime | 인증서 생성 일시 |
certificates[0].updateDatetime | DateTime | 인증서 변경 일시 |
certificates[0].hasCname | Boolean | CNAME 레코드 설정 여부 |
certificates[0].hasDistributionDomain | Boolean | CDN 서비스 연동 여부 |
certificates[0].renewalStartDate | DateTime | 인증서 갱신 시작 일시 |
certificates[0].renewalEndDate | DateTime | 인증서 갱신 종료 일시 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appKeys/{appKey}/certificates |
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
},
"certificates": [
{
"sanDnsId": "628bb15d-fe0a-46cf-9b63-8cdba80cbc1a",
"dnsName": "example.domain.com",
"dnsStatus": "PENDING_NEW",
"callbackHttpMethod": "POST",
"callbackUrl": "http://test.callback.com/cdn-certificate?appKey={appKey}&status={status}&domain={domain}",
"createDatetime": "2022-06-07T16:51:32.000+09:00",
"updateDatetime": "2022-06-07T16:51:32.000+09:00",
"hasCname": false,
"hasDistributionDomain": false,
"renewalStartDate": "2022-08-26T00:00:00.000+09:00",
"renewalEndDate": "2022-08-30T00:00:00.000+09:00"
}
]
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
certificates | List | 발급된 인증서 목록 |
certificates[0].sanDnsId | String | 인증서 ID |
certificates[0].dnsName | String | 인증서 도메인 |
certificates[0].dnsStatus | String | 인증서 발급 상태 코드([표] 인증서 발급 상태 코드 참고) |
certificates[0].callbackHttpMethod | String | 인증서 생성 처리 결과를 통보받을 콜백의 HTTP 메서드 |
certificates[0].callbackUrl | String | 인증서 생성 처리 결과를 통보받을 콜백 URL |
certificates[0].createDatetime | DateTime | 인증서 생성 일시 |
certificates[0].updateDatetime | DateTime | 인증서 변경 일시 |
certificates[0].hasCname | Boolean | CNAME 레코드 설정 여부 |
certificates[0].hasDistributionDomain | Boolean | CDN 서비스 연동 여부 |
certificates[0].renewalStartDate | DateTime | 인증서 갱신 시작 일시 |
certificates[0].renewalEndDate | DateTime | 인증서 갱신 종료 일시 |
[URI]
메서드 | URI |
---|---|
DELETE | /v2.0/appKeys/{appKey}/certificates |
[파라미터]
이름 | 타입 | 필수 여부 | 유효 범위 | 설명 |
---|---|---|---|---|
dnsIdList | String | 필수 | 삭제할 인증서 ID(sanDnsId) 목록(,로 연결된 인증서 ID 목록) |
[예]
curl -X GET "https://kr1-cdn.api.nhncloudservice.com/v2.0/appKeys/{appKey}/certificates?dnsIdList={dnsIdList}" \
-H "Authorization: {secretKey}" \
-H "Content-Type: application/json"
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appKeys/{appKey}/statistics/traffic |
[파라미터]
이름 | 타입 | 필수 여부 | 유효 범위 | 설명 |
---|---|---|---|---|
domain | String | 필수 | 최대 255자 | 조회할 도메인(서비스 이름) |
fromDate | DateTime | 필수 | 통계 조회 시작 일시 | |
toDate | DateTime | 필수 | 통계 조회 종료 일시 |
[예]
curl -X GET "https://kr1-cdn.api.nhncloudservice.com/v2.0/appKeys/{appKey}/statistics/traffic?domain={domain}&fromDate={fromDate}&toDate={toDate}" \
-H "Authorization: {secretKey}" \
-H "Content-Type: application/json"
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
},
"statistics": [
{
"dateTime": "2022-05-01T09:00:00.000+09:00",
"bandwidth": 0.0,
"transferred": 0.0
}
]
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
statistics | List | 트래픽 통계 데이터 목록 |
statistics[0].dateTime | DateTime | 통계 시간 |
statistics[0].bandwidth | String | 통계 시간의 대역폭(Mbps) |
statistics[0].transferred | String | 통계 시간의 전송량(bytes) |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appKeys/{appKey}/statistics/http |
[파라미터]
이름 | 타입 | 필수 여부 | 유효 범위 | 설명 |
---|---|---|---|---|
domain | String | 필수 | 최대 255자 | 조회할 도메인(서비스 이름) |
fromDate | DateTime | 필수 | 통계 조회 시작 일시 | |
toDate | DateTime | 필수 | 통계 조회 종료 일시 |
[예]
curl -X GET "https://kr1-cdn.api.nhncloudservice.com/v2.0/appKeys/{appKey}/statistics/http?domain={domain}&fromDate={fromDate}&toDate={toDate}" \
-H "Authorization: {secretKey}" \
-H "Content-Type: application/json"
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
},
"statistics": [
{
"dateTime": "2022-05-01T09:00:00.000+09:00",
"successHits": 10,
"notModifiedHits": 2,
"redirectsHits": 0,
"notFoundHits": 5,
"permissionHits": 0,
"serverErrorHits": 0,
"etcHits": 0
}
]
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
statistics | List | 트래픽 통계 데이터 목록 |
statistics[0].dateTime | DateTime | 통계 시간 |
statistics[0].successHits | Long | 응답 HTTP 상태 코드가 2xx인 호출 수 |
statistics[0].notModifiedHits | Long | 응답 HTTP 상태 코드가 304인 호출 수 |
statistics[0].redirectsHits | Long | 응답 HTTP 상태 코드가 301, 302인 호출 수 |
statistics[0].notFoundHits | Long | 응답 HTTP 상태 코드가 404인 호출 수 |
statistics[0].permissionHits | Long | 응답 HTTP 상태 코드가 401, 403, 415인 호출 수 |
statistics[0].serverErrorHits | Long | 응답 HTTP 상태 코드가 5xx인 호출 수 |
statistics[0].etcHits | Long | 2xx, 3xx, 4xx, 5xx 외 응답 HTTP 상태 코드 API 호출 수 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appKeys/{appKey}/statistics/topcontent |
[파라미터]
이름 | 타입 | 필수 여부 | 유효 범위 | 설명 |
---|---|---|---|---|
domain | String | 필수 | 최대 255자 | 조회할 도메인(서비스 이름) |
fromDate | DateTime | 필수 | 통계 조회 시작 일시 | |
toDate | DateTime | 필수 | 통계 조회 종료 일시 |
[예]
curl -X GET "https://kr1-cdn.api.nhncloudservice.com/v2.0/appKeys/{appKey}/statistics/topcontent?domain={domain}&fromDate={fromDate}&toDate={toDate}" \
-H "Authorization: {secretKey}" \
-H "Content-Type: application/json"
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
},
"statistics": [
{
"rank": 1,
"contentName": "top.png",
"successHits": 700,
"succDataTransferred": 4696.546738176
}
]
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
statistics | List | 트래픽 통계 데이터 목록 |
statistics[0].rank | Integer | 통계 시간 |
statistics[0].successHits | Long | 응답 HTTP 상태 코드가 2xx인 호출 수 |
statistics[0].succDataTransferred | Long | 응답 HTTP 상태 코드가 2xx인 호출 트래픽 전송량(MBytes) |
CDN 서비스에 콜백 기능이 설정된 경우, 생성, 수정, 일시 정지, 재개, 삭제 변경이 완료되면 설정된 콜백 URL을 호출합니다. 콜백 호출 시 요청 본문에는 다음과 같은 CDN 서비스 설정 정보가 포함됩니다.
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
},
"distribution":{
"appKey": "wXDdIjJRcZDtY9F7",
"domain" : "lhcsxuo0.toastcdn.net",
"domainAlias" : ["test.domain.com"],
"region" : "GLOBAL",
"defaultMaxAge" : 86400,
"cacheKeyQueryParam": "INCLUDE_ALL",
"status" : "OPENING",
"referrerType" : "BLACKLIST",
"referrers" : ["test.com"],
"useOriginCacheControl" : false,
"createTime" : 1498613094692,
"deleteTime": 1498613094692,
"origins" : [
{
"origin" : "static.resource.com",
"httpPort" : 80,
"httpsPort" : 443
}
],
"forwardHostHeader": "ORIGIN_HOSTNAME",
"useOriginHttpProtocolDowngrade": false,
"rootPathAccessControl" : {
"enable": true,
"controlType": "REDIRECT",
"redirectPath": "/default.png",
"redirectStatusCode": 302
},
"modifyOutgoingResponseHeaderControl" : {
"enable": true,
"headerList": [
{
"action": "ADD",
"standardHeaderName": "OTHER",
"customHeaderName": "custom-header-name",
"headerValue": "custom-header-value"
},
{
"action": "MODIFY",
"standardHeaderName": "ACCESS_CONTROL_ALLOW_ORIGIN",
"headerValue": "*"
}
]
},
"callback": {
"httpMethod": "GET",
"url": "http"
}
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
distribution | Object | 변경 작업이 완료된 CDN 오브젝트 |
distribution.appKey | String | 앱키 |
distribution.domain | String | 도메인 이름(서비스 이름) |
distribution.domainAlias | List | 도메인 별칭 목록(개인 혹은 회사가 소유한 도메인 사용) |
distribution.region | String | 서비스 지역("GLOBAL": 글로벌) |
distribution.status | String | CDN 상태 코드([표] CDN 상태 코드 참고) |
distribution.defaultMaxAge | Integer | 캐시 만료 시간(초) |
distribution.cacheKeyQueryParam | String | 캐시 키에 요청 쿼리 문자열 포함 여부 설정("INCLUDE_ALL": 전체 포함, "EXCLUDE_ALL": 전체 미포함) |
distribution.referrerType | String | 리퍼러 접근 관리("BLACKLIST": 블랙리스트, "WHITELIST": 화이트리스트) |
distribution.referrers | List | 정규 표현식 형태의 리퍼러 헤더 목록 |
distribution.useOriginCacheControl | Boolean | 원본 서버 설정 사용 여부(true: 원본 서버 설정 사용, false: 사용자 설정 사용) |
distribution.createTime | DateTime | 생성 일시 |
distribution.deleteTime | DateTime | 삭제 일시 |
distribution.origins | List | 원본 서버 오브젝트 목록 |
distribution.origins[0].origin | String | 원본 서버(도메인 또는 IP) |
distribution.origins[0].originPath | String | 원본 서버 하위 경로 |
distribution.origins[0].httpPort | Integer | 원본 서버 HTTP 프로토콜 포트 |
distribution.origins[0].httpsPort | Integer | 원본 서버 HTTPS 프로토콜 포트 |
distribution.useOriginHttpProtocolDowngrade | Boolean | 원본 서버가 HTTP 응답만 가능한 경우, CDN 서버에서 원본 서버로 요청 시 HTTPS 요청을 HTTP 요청으로 다운그레이드 하기 위한 설정 사용 여부 |
distribution.forwardHostHeader | String | CDN 서버가 원본 서버로 콘텐츠 요청 시 전달 할 호스트 헤더 설정("ORIGIN_HOSTNAME": 원본 서버의 호스트 이름으로 설정, "REQUEST_HOST_HEADER": 클라이언트 요청의 호스트헤더로 설정 |
distribution.rootPathAccessControl | Object | CDN 서비스의 루트 경로에 대한 접근 제어 설정 |
distribution.rootPathAccessControl.enable | Boolean | 루트 경로에 대한 접근 제어 사용(true)/미사용(false) 여부 |
distribution.rootPathAccessControl.controlType | String | enable이 true일 경우 필수 입력. 루트 경로에 대한 접근 제어 방식("DENY": 접근 거부, "REDIRECT": 지정한 경로로 리다이렉트) |
distribution.rootPathAccessControl.redirectPath | String | controlType이 "REDIRECT"일 경우 필수 입력. 루트 경로에 대한 요청을 리다이렉트할 경로(/를 포함한 경로로 입력해 주세요.) |
distribution.rootPathAccessControl.redirectStatusCode | Integer | controlType이 "REDIRECT"일 경우 필수 입력. 리다이렉트시 전달되는 HTTP 응답 코드 |
distribution.modifyOutgoingResponseHeaderControl | Object | CDN에서 응답하는 HTTP 헤더를 추가/변경/삭제하는 설정 |
distribution.modifyOutgoingResponseHeaderControl.enable | Boolean | HTTP 응답 헤더를 추가/변경/삭제하는 설정 사용(true)/미사용(false) 여부 |
distribution.modifyOutgoingResponseHeaderControl.headerList | List | HTTP 응답 헤더 목록 |
distribution.modifyOutgoingResponseHeaderControl.headerList[0].action | String | HTTP 응답 헤더 변경 방식 |
distribution.modifyOutgoingResponseHeaderControl.headerList[0].standardHeaderName | String | 일반 HTTP 응답 헤더 이름 |
distribution.modifyOutgoingResponseHeaderControl.headerList[0].customHeaderName | String | standardHeaderName이 "OTHER"일 경우 필수 입력. 사용자 정의 HTTP 응답 헤더 이름 |
distribution.modifyOutgoingResponseHeaderControl.headerList[0].headerValue | String | HTTP 응답 헤더 값 |
distribution.callback | Object | 서비스 배포 처리 결과를 통보받을 콜백 |
distribution.callback.httpMethod | String | 콜백의 HTTP 메서드 |
distribution.callback.url | String | 콜백 URL |
인증서 발급 요청 시 콜백 정보가 설정된 경우, 도메인 검증/도메인 검증 완료/인증서 발급 완료로 상태 변경이 완료되면 설정된 콜백 URL을 호출합니다. 콜백 호출 시 요청 본문에는 다음과 같은 인증서 설정 정보가 포함됩니다.
[응답 본문]
{
"header" : {
"resultCode" : 0,
"resultMessage" : "SUCCESS",
"isSuccessful" : true
},
"certificate": {
"sanDnsId": "628bb15d-fe0a-46cf-9b63-8cdba80cbc1a",
"distributionSeq": null,
"dnsName": "example.domain.com",
"dnsStatus": "WAITING_VALIDATION",
"validationDnsRecordName": "_acme-challenge.example.domain.com.",
"validationDnsToken": "16WKuUX7ebmYEREEU1CqnPWx0I7wY04EvtF-QL2n-lU",
"validationHtmlUrl": "http://example.domain.com/.well-known/acme-challenge/NDUxotnSnKAIJQrhDOUp1s3AC4zjyU1i_BEvLI3wmvg",
"validationHtmlToken": "NDUxotnSnKAIJQrhDOUp1s3AC4zjyU1i_BEvLI3wmvg.tL4C5fu32Q5A81pbFTAgUeNiv9rorD-rUQYb7kQJvHc",
"validationExpireDatetime": null,
"createDatetime": 1654588292000,
"updateDatetime": 1654588758056,
"deleteDatetime": null,
"callbackHttpMethod": "POST",
"callbackUrl": "http://test.callback.com/cdn-certificate?appKey={appKey}&status={status}&domain={domain}"
}
}
[필드]
필드 | 타입 | 설명 |
---|---|---|
header | Object | 헤더 영역 |
header.isSuccessful | Boolean | 성공 여부 |
header.resultCode | Integer | 결과 코드 |
header.resultMessage | String | 결과 메시지 |
certificate | Object | 변경 작업이 완료된 인증서 오브젝트 |
certificate.sanDnsId | String | 인증서 ID |
certificate.distributionSeq | String | 연동된 CDN 서비스 ID |
certificate.dnsName | String | 인증서 도메인 |
certificate.dnsStatus | String | 인증서 발급 상태 코드([표] 인증서 발급 상태 코드 참고) |
certificate.validationDnsRecordName | String | 도메인 검증 정보(DNS TXT 레코드 추가 방식의 레코드 이름) |
certificate.validationDnsToken | String | 도메인 검증 정보(DNS TXT 레코드 추가 방식의 레코드 값) |
certificate.validationHtmlUrl | String | 도메인 검증 정보(HTTP 페이지 추가 방식의 HTTP 페이지 URL) |
certificate.validationHtmlToken | String | 도메인 검증 정보(HTTP 페이지 추가 방식의 HTTP 페이지 본문 콘텐츠 값) |
certificate.validationExpireDatetime | DateTime | 도메인 검증 만료 일시 |
certificate.createDatetime | DateTime | 인증서 생성 일시 |
certificate.updateDatetime | DateTime | 인증서 변경 일시 |
certificate.deleteDatetime | DateTime | 인증서 삭제 일시 |
certificate.callbackHttpMethod | String | 인증서 생성 처리 결과를 통보받을 콜백의 HTTP 메서드 |
certificate.callbackUrl | String | 인증서 생성 처리 결과를 통보받을 콜백 URL |