--- title: "엣지 생성" slug: "edge-create" tags: ["Global Edge"] updated: 2026-09-17T09:16:20Z published: 2026-09-17T09:16:20Z canonical: "api.ncloud-docs.com/edge-create" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # 엣지 생성 Classic/VPC 환경에서 이용 가능합니다. 프로필에 엣지를 생성합니다. 참고 계정당 엣지는 최대 100개까지 생성할 수 있습니다. 한도 상향 필요 시 고객 문의를 통해서 요청해 주십시오. ## 요청 요청 형식을 설명합니다. 요청 형식은 다음과 같습니다. | 메서드 | URI | | --- | --- | | POST | /api/v1/cdn-edge | ### 요청 헤더 Global Edge API에서 공통으로 사용하는 헤더에 대한 정보는 [Global Edge 요청 헤더](/docs/edge-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오. ### 요청 바디 요청 바디에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `profileId` | Long | Required | 프로필 아이디 - [프로필 목록 조회](/docs/profile-listing) 참조 | | `edgeName` | String | Required | 엣지 이름 - 영문자, 숫자, 특수 문자 '-', '_'를 조합하여 3~35자 이내로 입력 | | `distributionConfig` | Object | Required | 배포 설정: [CdnDistributionConfig](/docs/edge-create#CdnDistributionConfig) | | `originalCopyConfig` | Object | Required | 오리진 설정: [CdnOriginalCopyConfig](/docs/edge-create#CdnOriginalCopyConfig) | | `cachingConfig` | Object | Required | 캐시 설정: [CdnCachingConfig](/docs/edge-create#CdnCachingConfig) | | `managedRule` | Object | Required | 매니지드 룰: [ManagedRule](/docs/edge-create#ManagedRule) | | `headerPolicies` | Array | Required | 헤더 설정: [HeaderPolicy](/docs/edge-create#HeaderPolicy) - 미설정 시 빈 값 `[]` 입력 | | `optimizationConfig` | Object | Required | 최적화 설정: [OptimizationConfig](/docs/edge-create#OptimizationConfig) | | `accessControl` | Object | Required | 접근 제어 설정: [AccessControl](/docs/edge-create#AccessControl) | #### `CdnDistributionConfig` `CdnDistributionConfig`에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `protocolType` | String | Required | 서비스 프로토콜 - `HTTPS` \| `ALL` | | `regionType` | String | Required | 서비스 지역 - `KOREA` \| `JAPAN` \| `GLOBAL` - `KOREA`: 한국 - `JAPAN`: 일본 - `GLOBAL`: 글로벌 | | `serviceDomain` | Object | Required | 서비스 도메인 설정 | | `serviceDomain.domainType` | String | Required | 서비스 도메인 유형 - `NCP_DOMAIN_AUTO` \| `NCP_DOMAIN_CUSTOM` \| `CUSTOM_DOMAIN` - `NCP_DOMAIN_AUTO`: 자동 생성된 네이버 클라우드 플랫폼 도메인 - `NCP_DOMAIN_CUSTOM`: 사용자 입력값을 포함한 네이버 클라우드 플랫폼 도메인 - `CUSTOM_DOMAIN`: 사용자 보유 도메인 | | `serviceDomain.domainName` | String | Conditional | 도메인 이름 - `serviceDomain.domainType`이 `NCP_DOMAIN_CUSTOM`이거나 `CUSTOM_DOMAIN`인 경우, 필수 입력 | | `serviceDomain.certificate` | Object | Conditional | 인증서 - 사용자 보유 도메인(`CUSTOM_DOMAIN`)을 HTTPS로 서비스하는 경우, 하위 정보 포함하여 필수 입력 | | `serviceDomain.certificate.id` | Number | Conditional | 인증서 슬롯 아이디 - [인증서 목록 조회](/docs/edge-getcertificatelist) 참조 | | `edgeLogging` | Object | Required | 엣지 로그 설정 | | `edgeLogging.enabled` | Boolean | Required | 기능 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 | | `edgeLogging.bucketPrefix` | String | Optional | 로그 저장 경로 | | `edgeLogging.objectStorage` | Object | Conditional | 로그 스토리지 정보 - Object Storage에 등록된 버킷만 사용 가능 - `edgeLogging.enabled`가 `true`인 경우, 하위 정보 포함하여 필수 입력 | | `edgeLogging.objectStorage.region` | String | Conditional | 서비스 리전 - `KR` \| `USWN` \| `SGN` \| `JPN` \| `DEN` - `KR`: 한국 - `USWN`: 미국 - `SGN`: 싱가포르 - `JPN`: 일본 - `DEN`: 독일 | | `edgeLogging.objectStorage.bucketName` | String | Conditional | 버킷 이름 | #### `CdnOriginalCopyConfig` `CdnOriginalCopyConfig`에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `originalCopyLocation` | Object | Required | 오리진 서버 설정 | | `originalCopyLocation.type` | String | Required | 오리진 유형 - `OBJECT_STORAGE` \| `LOAD_BALANCER` \| `API_GATEWAY` \| `CUSTOM` - `OBJECT_STORAGE`: 네이버 클라우드 플랫폼의 Object Storage - `LOAD_BALANCER`: 네이버 클라우드 플랫폼의 Load Balancer - `API_GATEWAY`: 네이버 클라우드 플랫폼의 API Gateway - `CUSTOM`: 외부 오리진 도메인 | | `originalCopyLocation.region` | String | Conditional | 서비스 리전 - `KR` \| `USWN` \| `SGN` \| `JPN` \| `DEN` - `KR`: 한국 - `USWN`: 미국 - `SGN`: 싱가포르 - `JPN`: 일본 - `DEN`: 독일 - `originalCopyLocation.type`이 `OBJECT_STORAGE`이거나 `LOAD_BALANCER`인 경우, 필수 입력 | | `originalCopyLocation.bucketName` | String | Conditional | 버킷 이름 - `originalCopyLocation.type`이 `OBJECT_STORAGE`인 경우, 필수 입력 | | `originalCopyLocation.customLocation` | String | Conditional | 오리진 도메인 이름 - `originalCopyLocation.type`이 `LOAD_BALANCER`, `API_GATEWAY`, `CUSTOM`인 경우, 필수 입력 | | `forwardHostHeader` | Object | Required | 호스트 헤더 포워딩 설정 | | `forwardHostHeader.type` | String | Required | 포워딩 유형 - `INCOMING_HOST_HEADER` \| `ORIGIN_HOSTNAME` \| `CUSTOM` - `INCOMING_HOST_HEADER`: 클라이언트에서 전달받은 헤더 사용 - `ORIGIN_HOSTNAME`: 특정 값으로 헤더 치환 - `CUSTOM`: 헤더 값 지정 | | `forwardHostHeader.customHostHeader` | String | Conditional | 호스트 헤더 값 - `forwardHostHeader.type`이 `CUSTOM`인 경우, 필수 입력 | | `originalCopyProtocol` | Object | Required | 오리진 프로토콜 설정 | | `originalCopyProtocol.type` | String | Required | 프로토콜 유형 - `HTTP` \| `HTTPS` | | `originalCopyProtocol.port` | Integer | Required | 포트 번호 | | `originalCopyPath` | String | Optional | 오리진 경로 - 오리진 요청 시 추가할 URL - `/{경로}/` 형식: 영문자, 숫자, 특수 문자 '_' 허용 | | `originFailoverConfig` | Object | Optional | 오리진 페일오버 설정 | | `originFailoverConfig.ruleName` | String | Conditional | 페일오버 규칙 이름 | | `originFailoverConfig.statusCodes` | Array | Conditional | 오리진 응답 코드 목록 - `404` \| `500` \| `502` \| `503` \| `504` | | `originFailoverConfig.originalCopyLocation` | Object | Conditional | 요청을 포워딩할 백업 오리진 서버 정보 | | `originFailoverConfig.originalCopyLocation.type` | String | Conditional | 백업 오리진 유형 - `OBJECT_STORAGE` \| `CUSTOM` - `OBJECT_STORAGE`: Object Storage - `CUSTOM`: 외부 도메인 | | `originFailoverConfig.originalCopyLocation.region` | String | Conditional | 서비스 리전 - `KR` \| `USWN` \| `SGN` \| `JPN` \| `DEN` - `KR`: 한국 - `USWN`: 미국 - `SGN`: 싱가포르 - `JPN`: 일본 - `DEN`: 독일 - `originFailoverConfig.originalCopyLocation.type`이 `OBJECT_STORAGE`인 경우, 필수 입력 | | `originFailoverConfig.originalCopyLocation.bucketName` | String | Conditional | 버킷 이름 - `originFailoverConfig.originalCopyLocation.type`이 `OBJECT_STORAGE`인 경우, 필수 입력 | | `originFailoverConfig.originalCopyLocation.customLocation` | String | Conditional | 오리진 도메인 이름 - `originFailoverConfig.originalCopyLocation.type`이 `CUSTOM`인 경우, 필수 입력 | #### `CdnCachingConfig` `CdnCachingConfig`에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `defaultCaching` | Object | Required | 캐시 기본 설정 | | `defaultCaching.enabled` | Boolean | Required | 기능 사용 여부 - `true` - `true`만 사용 가능 | | `defaultCaching.ruleDefinitionType` | String | Required | 캐시 옵션 - `CACHING` \| `BYPASS_CACHE` \| `ORIGIN_CACHE_CONTROL_HEADER` - `CACHING`: 캐시 - `BYPASS_CACHE`: 오리진 서버로 바이패스 - `ORIGIN_CACHE_CONTROL_HEADER`: 오리진 Cache-Control 헤더 기준으로 처리 | | `defaultCaching.cacheRevalidateConfig` | Object | Required | 오래된 객체 재검증 설정 - 캐시 수명이 만료되고 오리진 사용 불가 시 수행 동작 지정 | | `defaultCaching.cacheRevalidateConfig.type` | String | Required | 재검증 유형 - `IF_POSSIBLE` \| `ALWAYS` - `IF_POSSIBLE`: 확인 불가 시 오래된 객체 서비스 제공 - `ALWAYS`: 오리진 항상 검증 | | `defaultCaching.cacheRevalidateConfig.ageType` | String | Required | 캐시 최대 보관 기간 단위 - `SECONDS` \| `MINUTES` \| `HOURS` \| `DAYS` - `SECONDS`: 초 - `MINUTES`: 분 - `HOURS`: 시간 - `DAYS`: 일 | | `defaultCaching.cacheRevalidateConfig.age` | String | Required | 캐시 최대 보관 기간 - 1초~365일 | | `negativeTtl` | Boolean | Required | 네거티브 TTL 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - 오리진 서버에서 오류 응답 반환 시 응답 캐싱 | | `bypassQueryString` | Object | Required | 바이패스 쿼리 스트링 설정 - 캐싱 없이 오리진 서버로 바이패스하는 조건 문자열 지정 | | `bypassQueryString.enabled` | Boolean | Required | 기능 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - `true`인 경우, 관련 정보 필수 입력 | | `bypassQueryString.queryStrings` | Array | Conditional | 대상 문자열 목록 | | `cacheKeyHostname` | String | Required | 캐시 키 호스트 이름 유형 - `INCOMING_HOST_HEADER` \| `ORIGIN_HOSTNAME` - `INCOMING_HOST_HEADER`: 캐시 키에 서비스 도메인 포함 - `ORIGIN_HOSTNAME`: 캐시 키에 오리진 서버의 호스트 이름 포함 | | `cacheKeyIgnoreQueryString` | Object | Required | 캐시 키 쿼리 스트링 설정 - 캐시 키 생성 시 쿼리 문자열의 포함/무시 방식 지정 | | `cacheKeyIgnoreQueryString.type` | String | Required | 설정 유형 - `ALL_IGNORED` \| `ALL_ALLOWED` \| `ALLOW_SPECIFIC_STRING` - `ALL_IGNORED`: 전체 무시 - `ALL_ALLOWED`: 전체 허용 - `ALLOW_SPECIFIC_STRING`: 특정 문자열 허용 | | `cacheKeyIgnoreQueryString.queryStrings` | Array | Conditional | 대상 문자열 목록 - `cacheKeyIgnoreQueryString.type`이 `ALLOW_SPECIFIC_STRING`인 경우, 필수 입력 | | `urlLetterCaseIgnoreUse` | Boolean | Optional | 캐시 키 대소문자 구분 무시 여부 - `true` \| `false` (기본값) - `true`: 무시 - `false`: 무시 안 함 - 오리진이 대소문자를 구분하지 않는 경우, URL 및 파일 이름의 대소문자를 무시하고 캐싱 가능 | | `removeVaryHeader` | Boolean | Required | Vary 헤더 제거 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - 사용 시 오리진 서버 응답의 Accept-Encoding 외 Vary 헤더 제거 후 캐싱 | | `edgeAuth` | Object | Required | 요청 인증 설정 - 토큰으로 요청을 인증하여 통과된 경우에만 응답하도록 지정 | | `edgeAuth.enabled` | Boolean | Required | 기능 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - `true`인 경우, 관련 정보 필수 입력 | | `edgeAuth.type` | String | Conditional | 인증 유형 - `SIGNED_URL` \| `JWT` - `SIGNED_URL`: URL에 인증 정보 포함 - `JWT`: JSON 토큰을 생성해 HTTP 헤더에 포함 - `regionType`이 `GLOBAL`인 경우, `SIGNED_URL`만 사용 가능 | | `edgeAuth.tokenName` | String | Conditional | 토큰 이름 - 공백 없이 영문 소문자를 조합하여 입력 | | `edgeAuth.tokenKey` | String | Conditional | 토큰 키 값 | | `edgeAuth.bypassValues` | Array | Optional | 인증 제외 확장자 목록 - 20개 이하로 입력 - <예시> `.ts`, `.jpg`, `.exe` | | `edgeAuth.tokenBypassValues` | Array | Optional | 인증값을 오리진에 전달하는 확장자 목록 - 20개 이하로 입력 - <예시> `playlist.m3u8`, `index.m3u8`, `.ts`, `.png` | | `cachingRules` | Array | Required | 캐시 상세 룰 설정: [CachingRule](/docs/edge-create#CachingRule) | #### `CachingRule` `CachingRule`에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `ruleName` | String | Required | 캐시 상세 룰 이름 | | `ruleType` | String | Required | 룰 조건 유형 - `DIRECTORY` \| `FILE_EXTENSION` \| `ADVANCED` - `DIRECTORY`: 디렉터리 - `FILE_EXTENSION`: 파일 확장자 - `ADVANCED`: 디렉터리 및 파일 확장자 | | `ruleConditions` | Array | Required | 룰 조건 목록 - `ruleType` 값에 따른 조건 입력 - <예시> `/*`, `/sample/*` | | `ruleDefinitionType` | String | Required | 캐시 옵션 - `CACHING` \| `BYPASS_CACHE` \| `ORIGIN_CACHE_CONTROL_HEADER` - `CACHING`: 캐시 - `BYPASS_CACHE`: 오리진 서버로 바이패스 - `ORIGIN_CACHE_CONTROL_HEADER`: 오리진 Cache-Control 헤더 기준으로 처리 | | `cacheRevalidateConfig` | Object | Required | 오래된 객체 재검증 설정 - 캐시 수명이 만료되고 오리진 사용 불가 시 수행 동작 지정 | | `cacheRevalidateConfig.type` | String | Required | 재검증 유형 - `IF_POSSIBLE` \| `ALWAYS` - `IF_POSSIBLE`: 확인 불가 시 오래된 객체 서비스 제공 - `ALWAYS`: 오리진 항상 검증 | | `cacheRevalidateConfig.ageType` | String | Required | 캐시 최대 보관 기간 단위 - `SECONDS` \| `MINUTES` \| `HOURS` \| `DAYS` - `SECONDS`: 초 - `MINUTES`: 분 - `HOURS`: 시간 - `DAYS`: 일 | | `cacheRevalidateConfig.age` | Integer | Required | 캐시 최대 보관 기간 - 1초~365일 | | `ruleBasedRoutingConfig` | Object | Required | 룰 기반 오리진 라우팅 설정 - 룰 조건 부합 시 지정 위치로 오리진 라우팅 | | `ruleBasedRoutingConfig.enabled` | Boolean | Required | 기능 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - `true`인 경우, 관련 정보 필수 입력 | | `ruleBasedRoutingConfig.originalCopyLocation` | Object | Conditional | 오리진 서버 설정 | | `ruleBasedRoutingConfig.originalCopyLocation.type` | String | Conditional | 오리진 유형 - `OBJECT_STORAGE` \| `CUSTOM` - `OBJECT_STORAGE`: Object Storage - `CUSTOM`: 외부 도메인 | | `ruleBasedRoutingConfig.originalCopyLocation.region` | String | Conditional | 서비스 리전 - `KR` \| `USWN` \| `SGN` \| `JPN` \| `DEN` - `KR`: 한국 - `USWN`: 미국 - `SGN`: 싱가포르 - `JPN`: 일본 - `DEN`: 독일 - `ruleBasedRoutingConfig.originalCopyLocation.type`이 `OBJECT_STORAGE`인 경우, 필수 입력 | | `ruleBasedRoutingConfig.originalCopyLocation.bucketName` | String | Conditional | 버킷 이름 - `ruleBasedRoutingConfig.originalCopyLocation.type`이 `OBJECT_STORAGE`인 경우, 필수 입력 | | `ruleBasedRoutingConfig.originalCopyLocation.customLocation` | String | Conditional | 오리진 도메인 이름 - `ruleBasedRoutingConfig.originalCopyLocation.type`이 `CUSTOM`인 경우, 필수 입력 | | `browserCache` | Object | Required | 브라우저 캐시 설정 - 엣지에서 클라이언트에 보낼 캐싱 동작 지정 | | `browserCache.enabled` | Boolean | Required | 기능 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - `true`인 경우, 관련 정보 필수 입력 | | `browserCache.type` | String | Conditional | 브라우저 캐시 허용 유형 - `ALLOW_CACHE` \| `NO_CACHE` - `ALLOW_CACHE`: 캐시 허용 - `NO_CACHE`: 캐시 허용하지 않음 | | `browserCache.ageType` | String | Conditional | 캐시 최대 보관 기간 단위 - `SECONDS` \| `MINUTES` \| `HOURS` \| `DAYS` - `SECONDS`: 초 - `MINUTES`: 분 - `HOURS`: 시간 - `DAYS`: 일 | | `browserCache.age` | Integer | Conditional | 캐시 최대 보관 기간 - 1초~365일 | | `cacheKeyQueryParameter` | Object | Required | 캐시 키 쿼리 파라미터 설정 - 캐시 키 생성 시 쿼리 문자열의 포함/무시 방식 지정 | | `cacheKeyQueryParameter.enabled` | Boolean | Required | 기능 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - `true`인 경우, 관련 정보 필수 입력 | | `cacheKeyQueryParameter.type` | String | Conditional | 설정 유형 - `ALL_IGNORED` \| `ALL_ALLOWED` \| `IGNORE_SPECIFIC_STRING` \| `ALLOW_SPECIFIC_STRING` - `ALL_IGNORED`: 모두 무시 - `ALL_ALLOWED`: 모두 허용 - `IGNORE_SPECIFIC_STRING`: 특정 문자열 무시 - `ALLOW_SPECIFIC_STRING`: 특정 문자열 허용 | | `cacheKeyQueryParameter.queryParameters` | Array | Conditional | 대상 문자열 목록 - `cacheKeyQueryParameter.type`이 `ALLOW_SPECIFIC_STRING` 또는 `IGNORE_SPECIFIC_STRING`인 경우, 필수 입력 | | `accessDeny` | Boolean | Required | 룰 조건(`ruleConditions`)에 대한 접근 차단 여부 - `true` \| `false` - `true`: 차단 - `false`: 차단하지 않음 | | `urlRedirect` | Object | Required | URL 리디렉션 설정 - 룰 조건 부합 시 오리진 서버가 아닌 리디렉션으로 응답 - `urlRedirect`나 `urlRewrite` 중 하나만 사용 가능 | | `urlRedirect.enabled` | Boolean | Required | 기능 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - `true`인 경우, 관련 정보 필수 입력 | | `urlRedirect.destinationProtocol` | String | Conditional | 리디렉션 목적지 프로토콜 - `HTTP` \| `HTTPS` | | `urlRedirect.destinationHostname` | String | Conditional | 리디렉션 목적지 호스트 - 영문자, 숫자, 특수 문자 '-', '.'을 허용하며, 도메인 형식으로 입력 | | `urlRedirect.destinationPath` | String | Conditional | 리디렉션 목적지 상세 경로 | | `urlRedirect.responseCode` | String | Conditional | 리디렉션 상태 코드 - `MOVED_PERMANENTLY_301` \| `FOUND_302` - `MOVED_PERMANENTLY_301`: 영구적 URL 이동 - `FOUND_302`: 일시적 URL 이동 | | `urlRewrite` | Object | Required | URL 리라이팅 설정 - 룰 조건 부합 시 요청의 URL 자동 수정 - `urlRedirect`나 `urlRewrite` 중 하나만 사용 가능 | | `urlRewrite.enabled` | Boolean | Required | 기능 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - `true`인 경우, 관련 정보 필수 입력 | | `urlRewrite.rewriteTarget` | String | Conditional | 목적지 상세 경로 | #### `ManagedRule` `ManagedRule`에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `cors` | Boolean | Required | CORS 헤더(교차 오리진 리소스 공유 헤더) 추가 여부 - `true` \| `false` - `true`: 추가 - `false`: 추가 안 함 | | `corsPolicy` | Object | Conditional | CORS 헤더(교차 오리진 리소스 공유 헤더) 상세 설정 | | `corsPolicy.allowOrigin` | String | Required | Access-Control-Allow-Origin 설정 - Access-Control-Allow-Origin: *와 Access-Control-Allow-Credentials: true는 동시 설정 불가 | | `corsPolicy.allowMethods` | Array | Conditional | Access-Control-Allow-Methods 설정 - `GET` \| `POST` \| `OPTIONS` - 미설정 시 빈 값 `[]` 입력 | | `corsPolicy.allowHeaders` | Array | Conditional | Access-Control-Allow-Headers 설정 - 미설정 시 빈 값 `[]` 입력 | | `corsPolicy.allowCredentials` | Boolean | Conditional | Access-Control-Allow-Credentials 설정 - `true` \| `false` - Access-Control-Allow-Origin: *와 Access-Control-Allow-Credentials: true는 동시 설정 불가 | | `corsPolicy.useMaxAge` | Boolean | Conditional | Access-Control-Max-Age 설정 - `true` \| `false` - `true`: 86400 - `false`: 사용 안 함 | | `http2` | Boolean | Required | HTTP/2(개방형 네트워크 프로토콜) 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 | | `trueClientIpHeader` | Boolean | Required | 오리진 서버로 요청 포워딩 시 헤더에 클라이언트 IP 헤더 추가 여부 - `true` \| `false` - `true`: 추가 - `false`: 추가 안 함 | | `hsts` | Boolean | Required | 브라우저 연결에 HTTPS 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 | #### `HeaderPolicy` `HeaderPolicy`에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `type` | String | Required | 헤더 유형 - `ORIGIN_REQUEST` \| `CLIENT_RESPONSE` - `ORIGIN_REQUEST`: 오리진 서버에 포워딩되는 요청 헤더 - `CLIENT_RESPONSE`: 서버에서 클라이언트로 전송되는 응답 헤더 | | `ruleName` | String | Required | 헤더 설정 이름 | | `header` | Object | Required | 헤더 상세 설정 | | `header.type` | String | Required | 액션 유형 - `ADD` \| `MODIFY` \| `REMOVE` - `ADD`: 추가 - `MODIFY`: 수정 - `REMOVE`: 삭제 | | `header.name` | String | Required | 헤더 이름 | | `header.value` | String | Conditional | 헤더 값 - `header.type`이 `ADD` 또는 `MODIFY`인 경우, 필수 입력 | #### `OptimizationConfig` `OptimizationConfig`에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `httpCompression` | Boolean | Required | Gzip, Brotli 압축 전송 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - 사용 시 응답 시간 단축 | | `largeFileOptimization` | Boolean | Required | 대용량 파일 전송 사용 여부 - `true` \| `false` - `true`: 사용 - `false`: 사용 안 함 - 사용 시 대용량 파일 전송 성능 및 안정성 최적화 | | `headerMaxSize` | Object | Conditional | Request Header Size 설정 | | `headerMaxSize.singleSize` | String | Required | 단일 Header Size 설정 - `SIZE_8KB` \| `SIZE_16KB` \| `SIZE_32KB` - `SIZE_8KB`: 8192 - `SIZE_16KB`: 16384 - `SIZE_32KB`: 32768 | | `headerMaxSize.totalSize` | String | Required | 전체 Header Size 설정 - `SIZE_8KB` \| `SIZE_16KB` \| `SIZE_32KB` - `SIZE_8KB`: 8192 - `SIZE_16KB`: 16384 - `SIZE_32KB`: 32768 | #### `AccessControl` `AccessControl`에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `type` | String | Required | 접근 제어 유형 - `WHITELIST` \| `BLACKLIST` - `WHITELIST`: 화이트리스트 - `BLACKLIST`: 블랙리스트 - 둘 중 한 정책만 사용 가능 | | `ipPolicies` | Array | Required | 클라이언트 IP 또는 CIDR 블록 - IP 형식으로 입력 가능 - 미설정 시 빈 값 `[]` 입력 - `ipPolicies`, `geoPolicies`, `refererPolicies` 중 하나 이상 필수 입력 | | `geoPolicies` | Array | Required | 클라이언트 국가 코드 - ISO 3166-1 alpha-2 국가 코드 기준 - 미설정 시 빈 값 `[]` 입력 - `ipPolicies`, `geoPolicies`, `refererPolicies` 중 하나 이상 필수 입력 | | `refererPolicies` | Array | Required | HTTP 요청 레퍼러 헤더 - 도메인 형식으로 입력 가능 - 미설정 시 빈 값 `[]` 입력 - `ipPolicies`, `geoPolicies`, `refererPolicies` 중 하나 이상 필수 입력 | ### 요청 예시 요청 예시는 다음과 같습니다. ``` curl --location --request POST 'https://edge.apigw.ntruss.com/api/v1/cdn-edge' \ --header 'x-ncp-apigw-timestamp: {Timestamp}' \ --header 'x-ncp-iam-access-key: {Access Key}' \ --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \ --header 'Content-Type: application/json' \ --data '{ "profileId": 4210, "edgeName": "edge001", "distributionConfig": { "protocolType": "ALL", "regionType": "KOREA", "serviceDomain": { "domainType": "NCP_DOMAIN_AUTO", "domainName": null, "certificate": null }, "edgeLogging": { "enabled": true, "bucketPrefix": "edge/log", "objectStorage": { "region": "KR", "bucketName": "mmmmbucket" } } }, "originalCopyConfig": { "originalCopyLocation": { "type": "OBJECT_STORAGE", "region": "KR", "bucketName": "mybucket" }, "forwardHostHeader": { "type": "ORIGIN_HOSTNAME" }, "originalCopyProtocol": { "type": "HTTPS", "port": 443 }, "originalCopyPath": null, "originFailoverConfig": { "ruleName": "failrule1", "statusCodes": [ "404", "500", "502", "503", "504" ], "originalCopyLocation": { "type": "CUSTOM", "customLocation": "customdomain.com" } } }, "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" }, "urlLetterCaseIgnoreUse": true, "removeVaryHeader": true, "edgeAuth": { "enabled": true, "type": "SIGNED_URL", "tokenName": "tokenname", "tokenKey": "b7*********************b45" }, "cachingRules": [ { "ruleName": "sample", "ruleType": "DIRECTORY", "ruleConditions": [ "/sample/*" ], "ruleDefinitionType": "CACHING", "cacheRevalidateConfig": { "type": "IF_POSSIBLE", "ageType": "SECONDS", "age": 100 }, "ruleBasedRoutingConfig": { "enabled": true, "originalCopyLocation": { "type": "CUSTOM", "region": null, "bucketName": null, "customLocation": "admin.example.co.kr" } }, "browserCache": { "enabled": true, "type": "ALLOW_CACHE", "ageType": "SECONDS", "age": 100 }, "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, "corsPolicy": { "allowOrigin": "*", "allowMethods": [ "GET", "POST", "OPTIONS" ], "allowHeaders": [ "origin" ], "allowCredentials": false, "useMaxAge": true }, "http2": true, "trueClientIpHeader": true, "hsts": false }, "headerPolicies": [ { "type": "ORIGIN_REQUEST", "ruleName": "Modify Origin Request Header", "header": { "type": "ADD", "name": "headername", "value": "headervalue" } }, { "type": "CLIENT_RESPONSE", "ruleName": "Modify Client Response Header", "header": { "type": "MODIFY", "name": "rheadername", "value": "rheadervalue" } } ], "optimizationConfig": { "httpCompression": true, "largeFileOptimization": true, "headerMaxSize": { "singleSize": "SIZE_16KB", "totalSize": "SIZE_32KB" } }, "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` | String | - | 응답 코드 | | `message` | String | - | 응답 메시지 | | `result` | Object | - | 응답 결과 | | `result.edgeId` | Integer | - | 엣지 아이디 | ### 응답 상태 코드 Global Edge API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Global Edge 응답 상태 코드](/docs/edge-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오. ### 응답 예시 응답 예시는 다음과 같습니다. ``` { "code": "0000", "message": "Success", "result": { "edgeId": 11207 } } ```