개요
새로운 CDN Edge를 생성합니다.
- Edge는 계정당 최대 100개를 생성할 수 있습니다.
요청
요청 URL
POST
https://edge.apigw.ntruss.com/api/v1/cdn-edge
요청 바디
EdgeConfig
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
profileId | Yes | Long | | 프로필 아이디 |
edgeName | Yes | String | 영어, 숫자 그리고 특수문자 '-', '_' 만 사용가능 | |
distributionConfig | Yes | CdnDistributionConfig | | 배포 설정 |
originalCopyConfig | Yes | CdnOriginalCopyConfig | | 원본 설정 |
cachingConfig | Yes | CdnCachingConfig | | 캐시 설정 |
managedRule | Yes | ManagedRule | | 매니지드 룰 설정 |
headerPolicies | Yes | List<HeaderPolicy> | | 헤더 설정 |
optimizationConfig | Yes | OptimizationConfig | | 최적화 설정 |
accessControl | Yes | AccessControl | | 접근 제어 설정 |
CdnDistributionConfig
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
protocolType | Yes | String | HTTP, HTTPS, ALL | 서비스 프로토콜 |
regionType | Yes | String | KOREA, JAPAN, GLOBAL(성능 우선), GLOBAL(가용성 우선) | 서비스 지역 |
serviceDomain | Yes | ServiceDomain | | 서비스 도메인 |
edgeLogging | Yes | EdgeLogging | | Edge 로깅 설정 |
ServiceDomain
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
domainType | Yes | String | NCP_DOMAIN_AUTO, NCP_DOMAIN_CUSTOM, CUSTOM_DOMAIN | 도메인 사용 유형 |
domainName | Yes | String | domainType을 custom domain 사용시 도메인 형식 사용 | |
certificate | No | Certificate | HTTPS와 개인 도메인을 같이 사용시 필수 | |
Certificate
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
id | Yes | Long | | Certificate Manager에 등록된 인증서의 certificateNo |
EdgeLogging
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부 |
bucketPrefix | No | String | | |
objectStorage | No | ObjectStorage | enabled을 true로 설정시 필수 | |
ObjectStorage
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
region | Yes | String | KR, USWN, SGN, JPN, DEN | 한국(KR), 미국서부(USWN), 싱가포르(SGN), 일본(JPN), 독일(DEN) |
bucketName | Yes | String | | Object Storage 버킷 이름 |
CdnOriginalCopyConfig
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
originalCopyLocation | Yes | OriginalCopyLocation | | 원본 도메인 설정 |
forwardHostHeader | Yes | ForwardHostHeader | | Forward Host Header |
originalCopyProtocol | Yes | OriginalCopyProtocol | | 원본 프로토콜 설정 |
originalCopyPath | No | String | | 원본 경로 |
originShield | Yes | OriginShield | | 오리진 쉴드 설정 |
originFailoverConfig | No | OriginFailoverConfig | | 페일 오버 정책 설정 |
OriginalCopyLocation
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
type | Yes | String | OBJECT_STORAGE, CUSTOM, NONE | 원본 타입 |
region | No | String | KR, SGN, JPN, USWN, DEN | 한국(KR), 싱가포르(SGN), 일본(JPN), 미국서부(USWN), 독일(DEN), Object Storage 사용시 필수 |
bucketName | No | String | type이 Object Storage면 필수 | Object Storage 버킷 이름 |
customLocation | No | String | type이 custom이면 필수 | bucketName, customLocation은 type에 따라 한개만 사용 가능 |
ForwardHostHeader
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
type | Yes | String | INCOMING_HOST_HEADER, ORIGIN_HOSTNAME, CUSTOM | |
customHostHeader | No | String | type이 custom이면 필수 | |
OriginalCopyProtocol
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
type | Yes | String | HTTP, HTTPS | 원본 프로토콜 |
port | Yes | Integer | | 원본 포트 |
OriginShield
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부 |
region | No | String | KR, SGN, JPN, USWN, DEN | 한국(KR), 싱가포르(SGN), 일본(JPN), 미국서부(USWN), 독일(DEN), enabled을 true로 설정시 필수 |
OriginFailoverConfig
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
ruleName | Yes | String | | |
statusCodes | Yes | List<Integer> | 404, 500, 502, 503, 504 | |
originalCopyLocation | Yes | OriginalCopyLocation | | |
CdnCachingConfig
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
defaultCaching | Yes | DefaultCaching | | 기본 캐시 설정 |
negativeTtl | Yes | boolean | true, false | 사용여부, 오류 응답 캐시 설정 |
bypassQueryString | Yes | BypassQueryString | | |
cacheKeyHostname | Yes | String | INCOMING_HOST_HEADER, ORIGIN_HOSTNAME | |
cacheKeyIgnoreQueryString | Yes | CacheKeyIgnoreQueryString | | |
removeVaryHeader | Yes | boolean | true, false | 사용여부 |
edgeAuth | Yes | EdgeAuth | | 토큰을 이용하여 사용자의 요청을 검증 |
cachingRules | Yes | List<CachingRule> | | 캐시 상세 설정 |
DefaultCaching
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부 |
ruleDefinitionType | Yes | String | CACHING, BYPASS_CACHE, ORIGIN_CACHE_CONTROL_HEADER | |
cacheRevalidateConfig | Yes | CacheRevalidateConfig | | |
CacheRevalidateConfig
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
type | Yes | String | IF_POSSIBLE, ALWAYS | Serve stale if unable to validate(IF_POSSIBLE), Always revalidate with origin(ALWAYS) |
ageType | Yes | String | SECONDS, MINUTES, HOURS, DAYS | |
age | Yes | Integer | | ageType에 따라 시간 단위 변경 |
BypassQueryString
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부 |
queryStrings | No | List<String> | enabled을 true로 설정시 필수 | |
CacheKeyIgnoreQueryString
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
type | Yes | String | ALL_IGNORED, ALL_ALLOWED, ALLOW_SPECIFIC_STRING | |
queryStrings | No | List<String> | type을 ALLOW_SPECIFIC_STRING 사용시 필수 | |
EdgeAuth
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부 |
type | Yes | String | SIGNED_URL, JWT, MEDIA_VAULT | 서비스 지역 글로벌 선택시 MEDIA_VAULT만 사용 가능 서비스지역 한국/일본은 모두 사용 가능 |
tokenName | No | String | 공백없이 영어 소문자만 사용 가능, enabled을 true로 설정시 필수 | |
tokenKey | No | String | enabled을 true로 설정시 필수 | |
bypassValues | No | List<String> | MEDIA_VAULT 지원 안함 | 인증 제외할 확장자(최대 20개) 예) .ts, .jpg, .exe |
tokenBypassValues | No | List<String> | MEDIA_VAULT 지원 안함 | 인증값을 원본으로 전달할 확장자(최대 20개) 예) playlist.m3u8, index.m3u8, .ts, .png |
CachingRule
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
ruleName | Yes | String | | |
ruleType | Yes | String | DIRECTORY, FILE_EXTENSION, ADVANCED | |
ruleConditions | Yes | List<String> | | |
ruleDefinitionType | Yes | String | CACHING, BYPASS_CACHE, ORIGIN_CACHE_CONTROL_HEADER | |
cacheRevalidateConfig | Yes | CacheRevalidateConfig | | |
ruleBasedRoutingConfig | Yes | RuleBasedRoutingConfig | | |
browserCache | Yes | BrowserCache | | |
cacheKeyQueryParameter | Yes | CacheKeyQueryParameter | | |
accessDeny | Yes | boolean | true, false | |
urlRedirect | Yes | UrlRedirect | | |
urlRewrite | Yes | UrlRewrite | | |
RuleBasedRoutingConfig
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부 |
originalCopyLocation | No | OriginalCopyLocation | enabled을 true로 설정시 필수 | |
BrowserCache
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부 |
type | No | String | ALLOW_CACHE, NO_CACHE, enabled을 true로 설정시 필수 | |
ageType | No | String | SECONDS, MINUTES, HOURS, DAYS, enabled을 true로 설정시 필수 | |
age | No | Integer | enabled을 true로 설정시 필수 | |
CacheKeyQueryParameter
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부 |
type | Yes | String | ALL_IGNORED, ALL_ALLOWED, ALLOW_SPECIFIC_STRING, IGNORE_SPECIFIC_STRING | |
queryParameters | No | List<String> | type을 ALLOW_SPECIFIC_STRING, IGNORE_SPECIFIC_STRING 사용시 필수 | |
UrlRedirect
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부, UrlRedirect와 UrlRewrite는 동시 사용 불가능 |
destinationProtocol | No | String | HTTP, HTTPS, enabled을 true로 설정시 필수 | |
destinationHostname | No | String | enabled을 true로 설정시 필수 | |
destinationPath | No | String | enabled을 true로 설정시 필수 | |
responseCode | No | String | MOVED_PERMANENTLY_301, FOUND_302, enabled을 true로 설정시 필수 | |
UrlRewrite
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
enabled | Yes | boolean | true, false | 사용여부, UrlRedirect와 UrlRewrite는 동시 사용 불가능 |
rewriteTarget | No | String | enabled을 true로 설정시 필수 | |
ManagedRule
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
cors | Yes | boolean | true, false | 사용여부 |
http2 | Yes | boolean | true, false | 사용여부 |
trueClientIpHeader | Yes | boolean | true, false | 사용여부 |
hsts | Yes | boolean | true, false | 사용여부 |
HeaderPolicy
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
type | Yes | String | ORIGIN_REQUEST, CLIENT_RESPONSE | |
ruleName | Yes | String | | |
header | Yes | Header | | |
Header
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
type | Yes | String | ADD, MODIFY, REMOVE | |
name | Yes | String | | |
value | Yes | String | | |
OptimizationConfig
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
httpCompression | Yes | boolean | true, false | 사용여부 |
largeFileOptimization | Yes | boolean | true, false | 사용여부 |
AccessControl
파라미터명 | 필수 여부 | 타입 | 제약 사항 | 설명 |
---|
type | Yes | WHITELIST, BLACKLIST | 모든 접근 제어 규칙은 한가지 정책만 사용 가능 | |
ipPolicies | Yes | List<String> | IP 형식만 사용 가능 | |
geoPolicies | Yes | List<String> | ISO 3166-1 alpha-2 국가 코드 사용 가능 | |
refererPolicies | Yes | List<String> | 도메인 형식만 사용 가능 | |
응답
모든 응답은 HTTP Status Code로 성공 또는 실패를 반환합니다.
HTTP 상태 코드 | 코드 메시지 | 설명 |
---|
200 | Success | 조회 성공 |
401 | Unauthorized | 인증 실패 |
500 | Internal Server Error | 서버 오류 |
예시
요청 예시
https://edge.apigw.ntruss.com/api/v1/cdn-edge
{
"profileId": 234,
"edgeName": "sample-edge",
"distributionConfig": {
"protocolType": "ALL",
"regionType": "KOREA",
"serviceDomain": {
"domainType": "NCP_DOMAIN_AUTO",
"domainName": null,
"certificate": null
},
"edgeLogging": {
"enabled": true,
"objectStorage": {
"region": "KR",
"bucketName": "sample-bucket"
},
"bucketPrefix": "log/sample"
}
},
"originalCopyConfig": {
"originalCopyLocation": {
"type": "OBJECT_STORAGE",
"region": "KR",
"bucketName":"sample-bucket",
"customLocation": null
},
"forwardHostHeader": {
"type": "ORIGIN_HOSTNAME",
"customHostHeader": null
},
"originalCopyProtocol": {
"type": "HTTP",
"port": 80
},
"originalCopyPath": null,
"originShield": {
"enabled": true,
"region": "USWN"
},
"originFailoverConfig": null
},
"cachingConfig": {
"defaultCaching": {
"enabled": true,
"ruleDefinitionType": "CACHING",
"cacheRevalidateConfig": {
"type": "IF_POSSIBLE",
"ageType": "HOURS",
"age": "10"
}
},
"negativeTtl": true,
"bypassQueryString": {
"enabled": true,
"queryStrings": ["aaa", "bbb", "ccc"]
},
"cacheKeyHostname": "INCOMING_HOST_HEADER",
"cacheKeyIgnoreQueryString": {
"type": "ALL_ALLOWED",
"queryStrings": []
},
"removeVaryHeader": true,
"edgeAuth": {
"enabled": true,
"type": "SIGNED_URL",
"tokenName": "name",
"tokenKey": "902bceb96b2139771716910ff0b9befb"
},
"cachingRules": [{
"ruleName": "sample",
"ruleType": "DIRECTORY",
"ruleConditions": ["/sample/*"],
"ruleDefinitionType": "CACHING",
"cacheRevalidateConfig": {
"type": "IF_POSSIBLE",
"ageType": "SECONDS",
"age": 100
},
"ruleBasedRoutingConfig": {
"enabled": true,
"originalCopyLocation": {
"type": "OBJECT_STORAGE",
"region": "KR",
"bucketName": "sample-bucket",
"customLocation": null
}
},
"browserCache": {
"enabled": true,
"type": "ALLOW_CACHE",
"age": 100,
"ageType": "SECONDS"
},
"cacheKeyQueryParameter": {
"enabled": true,
"type": "IGNORE_SPECIFIC_STRING",
"queryParameters": ["aaa", "bbb", "ccc"]
},
"accessDeny": false,
"urlRedirect": {
"enabled": true,
"destinationProtocol": "HTTP",
"destinationHostname": "ncloud.com",
"destinationPath": "/home",
"responseCode": "FOUND_302"
},
"urlRewrite": {
"enabled": false,
"rewriteTarget": null
}
}]
},
"managedRule": {
"cors": true,
"http2": true,
"trueClientIpHeader": true,
"hsts": false
},
"headerPolicies": [{
"type": "ORIGIN_REQUEST",
"ruleName": "Modify Origin Reqeust Header",
"header": {
"type": "ADD",
"name": "name",
"value": "value"
}
}, {
"type": "CLIENT_RESPONSE",
"ruleName": "Modify Client Response Header",
"header": {
"type": "MODIFY",
"name": "name",
"value": "value"
}
}],
"optimizationConfig": {
"httpCompression": true,
"largeFileOptimization": true
},
"accessControl": {
"type": "WHITELIST",
"ipPolicies": ["1.1.1.1", "2.2.2.2", "3.3.3.3"],
"geoPolicies": ["AL", "SK", "ZM"],
"refererPolicies": ["ncloud.com", "naver.com"]
}
}
응답 예시
{
"code": "0000",
"message": "Success",
"result": {
"edgeId": 123
}
}
오류 코드
Error 코드 | 설명 |
---|
0032 | 허용되지 않은 요청 |
9999 | 서버 오류 발생 |
의견을 보내 주셔서 감사합니다! 우리 팀이 당신에게 돌아갈 것입니다.