네이버 클라우드 플랫폼 Global CDN Purge API 시작 가이드

개요

이 가이드에서는 간단한 시나리오를 따라 Global CDN 인스턴스를 조회하고 Purge를 수행합니다. 자세한 문서는 네이버 클라우드 플랫폼 Global CDN Purge API reference를 참고하시기 바랍니다.

시나리오 수행

CDN 인스턴스와 도메인 정보 조회

CDN 인스턴스 도메인 리스트 조회 API를 이용해서 cdnInstanceID와 cdn 설정 정보를 확인합니다.

  • 액션

    • getGlobalCdnInstanceList
  • 액션 파라미터

    • 없음
구버전 (12월 Deprecated)

OAuth 외부 라이브러리를 이용하여 authorization 헤더에 authparams를 포함하여 쉽게 요청할 수 있습니다.
자세한 사항은 Ncloud OAuth 인증 가이드를 참고하기 바랍니다.

signpost-core 라이브러리 : http://code.google.com/p/oauth-signpost/wiki/GettingStarted

  • consumerKey : 키 관리에서 볼 수 있는 accessKey
  • consumerSecret : 키 관리에서 볼 수 있는 secretKey
  • requstUrl : API 엔드포인트 URL
  • requestMethod : HTTP Request 메서드
public class OldSignClass {
    public static void main(String args[]) throws Exception {
        String consumerKey = $ConsumerAcessKey$;
        String consumerSecret = $ConsumerSecretKey$;
        String requestUrl = "https://api.ncloud.com/cdn/";
        String requestMethod = "GET";

        Map<String, Object> requestParameters = new HashMap<String, Object>();
        requestParameters.put("action", "getGlobalCdnInstanceList");
        requestParameters.put("responseFormatType", "json");
        // requestParameters.put("cdnInstanceNo", $InstanceNo$);
        // InstanceNo는 선택 사항입니다.
        // 입력하면 해당 인스턴스만 조회하며, 입력하지 않으면 모든 인스턴스의 목록을 조회합니다.


        StringBuffer queryString = new StringBuffer();
        int index= 1;
        int requestParamSize = requestParameters.size();
        for (String key : requestParameters.keySet()) {
            if (index == 1) {
                queryString.append("?");
            }
            queryString.append(key);

            if (requestParameters.get(key) != null) {
                queryString.append('=');
                queryString.append(URLEncoder.encode(requestParameters.get(key).toString(), "UTF-8"));
            }
            if (index!= requestParamSize) {
                queryString.append("&");
                index ++;
            }
        }

        OAuthConsumer consumer = new DefaultOAuthConsumer(consumerKey, consumerSecret);
        URL url = new URL(requestUrl + queryString.toString());
        HttpURLConnection con = (HttpURLConnection)url.openConnection();

        con.setRequestMethod(requestMethod);
        con.setConnectTimeout(500000);
        con.setUseCaches(false);
        con.setDefaultUseCaches(false);

        consumer.sign(con);
        con.connect();

        int responseCode = con.getResponseCode();
        System.out.println("ResponseCode : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader resultReader = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
            StringBuffer requestResult = new StringBuffer();
            String readString = null;
            while ((readString = resultReader.readLine()) != null) {
                requestResult.append(readString);
            }
            System.out.println(requestResult.toString());
        }
    }
}

main 메서드를 수행하면, 해당 결과를 얻을 수 있습니다.

{"getGlobalCdnInstanceListResponse": {  "requestId": "ee21d017-b093-453c-a886-d359aaafc05d",  "returnCode": "0",  "returnMessage": "success",  "totalRows": 1,  "globalCdnInstanceList": [    {      "cdnInstanceNo": "931582",      "cdnInstanceStatusName": "running",      "createDate": "2018-09-10T18:14:56+0900",      "lastModifiedDate": "2018-09-10T19:24:11+0900",      "cdnInstanceDescription": "",      "serviceName": "test-gcdn-1",      "isAvailablePartialDomainPurge": false,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "globalCdnRule": {        "protocolTypeCode": "HTTP",        "serviceDomainTypeCode": "DEFAULT",        "originUrl": "bucket-1.kr.objectstorage.ncloud.com",        "originPath": "",        "originHttpPort": 80,        "originHttpsPort": 0,        "forwardHostHeaderTypeCode": "ORIGIN_HOSTNAME",        "forwardHostHeader": "",        "cacheKeyHostNameTypeCode": "REQUEST_HOST_HEADER",        "isGzipCompressionUse": true,        "cachingOptionTypeCode": "CACHE_CONTROL_AND_EXPIRES",        "isErrorContentsResponseUse": false,        "cachingTtlTime": 604800,        "isQueryStringIgnoreUse": true,        "isRemoveVaryHeaderUse": true,        "isLargeFileOptimizationUse": false,        "gzipResponseTypeCode": "ORIGIN_RESPONSE",        "isReferrerDomainUse": false,        "referrerDomainList": [],        "isReferrerDomainRestrictUse": false,        "isSecureTokenUse": false,        "secureTokenPassword": "",        "isReissueSecureTokenPassword": false,        "isAccessLogUse": false,        "accessLogFileStorageContainerName": ""      }    }  ]}}
신버전

새로운 API는, 인증 관련 헤더를 추가하는 과정을 거쳐 API를 호출하게 됩니다. 인증 관련 Signature를 만드는 방식은 v1, v2 두가지 방식이 있습니다.

v1 Signature

    public static String makeSignatureV1(String url, String apiKey, String accessKey, String secretKey, String timestamp, String method) throws Exception{
        String space = " ";
        String newLine = "\n";

        String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(url)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(apiKey)
                .append(newLine)
                .append(accessKey)
                .toString();

        SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(signingKey);

        byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));
        String encodeBase64String = Base64.encodeBase64String(rawHmac);

        return encodeBase64String;

    }

v2 Signature

    public static String makeSignatureV2(String url, String accessKey, String secretKey, String timestamp, String method) throws Exception{
        String space = " ";
        String newLine = "\n";

        String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(url)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(accessKey)
                .toString();

        SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(signingKey);

        byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));
        String encodeBase64String = Base64.encodeBase64String(rawHmac);

        return encodeBase64String;

    }
  • url : Action 수행 URL (Query String 포함)
  • apiKey : API GateWay Access Key
  • accessKey : 유저 Access Key
  • secretKey : 유저 Secret Key
  • timestamp : Epoch 시간 (Milli 초)
  • method : HTTP Request 메서드

자세한 사항은 Ncloud APIs 공통 가이드를 참고하기 바랍니다.

  • 해당 코드는 Java 8 코드로 작성되었습니다. java.time.Instant 객체가 지원되지 않을 경우 TIMESTAMP 값을 밀리(mili)초 단위까지 생성하여야 합니다.

Java(v1)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class MainClass {
    private final static String API_END_POINT = "https://ncloud.apigw.ntruss.com";
    private final static String getCdnPlusPurgeHistoryList = "/cdn/v1/getGlobalCdnInstanceList";
    private final static String METHODS = "GET";

    private final static String API_GW_KEY = $ConsumerAPIGateWayKey$;
    private final static String ACCESS_KEY = $ConsumerAccessKey$;
    private final static String SECRET_KEY = $ConsumerSecretKey$;
    private final static String TIMESTAMP = Long.toString(Instant.now().toEpochMilli());


    public static void main(String args[]) throws Exception{

        Map<String, Object> requestParameters = new HashMap<String, Object>();
        requestParameters.put("responseFormatType", "json");


        StringBuffer queryString = new StringBuffer();
        int index= 1;
        int requestParamSize = requestParameters.size();
        for (String key : requestParameters.keySet()) {
            if (index == 1) {
                queryString.append("?");
            }
            queryString.append(key);

            if (requestParameters.get(key) != null) {
                queryString.append('=');
                queryString.append(URLEncoder.encode(requestParameters.get(key).toString(), "UTF-8"));
            }
            if (index!= requestParamSize) {
                queryString.append("&");
                index ++;
            }
        }

        String openURL = API_END_POINT + getCdnPlusPurgeHistoryList + queryString;
        URL obj = new URL(openURL);

        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("x-ncp-apigw-timestamp", TIMESTAMP);
        conn.setRequestProperty("x-ncp-apigw-api-key", API_GW_KEY);
        conn.setRequestProperty("x-ncp-iam-access-key", ACCESS_KEY);
        conn.setRequestProperty("x-ncp-apigw-signature-v1", makeSignatureV1(getCdnPlusPurgeHistoryList + queryString, API_GW_KEY, ACCESS_KEY, SECRET_KEY, TIMESTAMP, METHODS));
        conn.setUseCaches(false);
        conn.setDoInput(true);
        conn.setDoOutput(true);

        int responseCode = conn.getResponseCode();
        System.out.println("ResponseCode : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader resultReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            StringBuffer requestResult = new StringBuffer();
            String readString = null;
            while ((readString = resultReader.readLine()) != null) {
                requestResult.append(readString);
            }
            System.out.println(requestResult.toString());
        }

    }
}

main 메서드를 수행하면, 해당 결과를 얻을 수 있습니다.

{"getGlobalCdnInstanceListResponse": {  "requestId": "0a9f6108-cf42-425f-99d7-b7179d5d1b7c",  "returnCode": "0",  "returnMessage": "success",  "totalRows": 1,  "globalCdnInstanceList": [    {      "cdnInstanceNo": "931582",      "cdnInstanceStatusName": "running",      "createDate": "2018-09-10T18:14:56+0900",      "lastModifiedDate": "2018-09-10T19:24:11+0900",      "cdnInstanceDescription": "",      "serviceName": "test-gcdn-1",      "isAvailablePartialDomainPurge": false,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "globalCdnRule": {        "protocolTypeCode": "HTTP",        "serviceDomainTypeCode": "DEFAULT",        "originUrl": "bucket-1.kr.objectstorage.ncloud.com",        "originPath": "",        "originHttpPort": 80,        "originHttpsPort": 0,        "forwardHostHeaderTypeCode": "ORIGIN_HOSTNAME",        "forwardHostHeader": "",        "cacheKeyHostNameTypeCode": "REQUEST_HOST_HEADER",        "isGzipCompressionUse": true,        "cachingOptionTypeCode": "CACHE_CONTROL_AND_EXPIRES",        "isErrorContentsResponseUse": false,        "cachingTtlTime": 604800,        "isQueryStringIgnoreUse": true,        "isRemoveVaryHeaderUse": true,        "isLargeFileOptimizationUse": false,        "gzipResponseTypeCode": "ORIGIN_RESPONSE",        "isReferrerDomainUse": false,        "referrerDomainList": [],        "isReferrerDomainRestrictUse": false,        "isSecureTokenUse": false,        "secureTokenPassword": "",        "isReissueSecureTokenPassword": false,        "isAccessLogUse": false,        "accessLogFileStorageContainerName": ""      }    }  ]}}

Java(v2)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class MainClass {
    private final static String API_END_POINT = "https://ncloud.apigw.ntruss.com";
    private final static String getCdnPlusPurgeHistoryList = "/cdn/v1/getGlobalCdnInstanceList";
    private final static String METHODS = "GET";

    private final static String API_GW_KEY = $ConsumerAPIGateWayKey$;
    private final static String ACCESS_KEY = $ConsumerAccessKey$;
    private final static String SECRET_KEY = $ConsumerSecretKey$;
    private final static String TIMESTAMP = Long.toString(Instant.now().toEpochMilli());


    public static void main(String args[]) throws Exception{

        Map<String, Object> requestParameters = new HashMap<String, Object>();
        requestParameters.put("responseFormatType", "json");


        StringBuffer queryString = new StringBuffer();
        int index= 1;
        int requestParamSize = requestParameters.size();
        for (String key : requestParameters.keySet()) {
            if (index == 1) {
                queryString.append("?");
            }
            queryString.append(key);

            if (requestParameters.get(key) != null) {
                queryString.append('=');
                queryString.append(URLEncoder.encode(requestParameters.get(key).toString(), "UTF-8"));
            }
            if (index!= requestParamSize) {
                queryString.append("&");
                index ++;
            }
        }

        String openURL = API_END_POINT + getCdnPlusPurgeHistoryList + queryString;
        URL obj = new URL(openURL);

        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("x-ncp-apigw-timestamp", TIMESTAMP);
        conn.setRequestProperty("x-ncp-apigw-api-key", API_GW_KEY);
        conn.setRequestProperty("x-ncp-iam-access-key", ACCESS_KEY);
        conn.setRequestProperty("x-ncp-apigw-signature-v2", makeSignatureV2(getCdnPlusPurgeHistoryList + queryString, ACCESS_KEY, SECRET_KEY, TIMESTAMP, METHODS));
        conn.setUseCaches(false);
        conn.setDoInput(true);
        conn.setDoOutput(true);

        int responseCode = conn.getResponseCode();
        System.out.println("ResponseCode : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader resultReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            StringBuffer requestResult = new StringBuffer();
            String readString = null;
            while ((readString = resultReader.readLine()) != null) {
                requestResult.append(readString);
            }
            System.out.println(requestResult.toString());
        }

    }
}

main 메서드를 수행하면, 해당 결과를 얻을 수 있습니다.

{"getGlobalCdnInstanceListResponse": {  "requestId": "27d0ef91-deb7-45ec-9153-6886422a33c8",  "returnCode": "0",  "returnMessage": "success",  "totalRows": 1,  "globalCdnInstanceList": [    {      "cdnInstanceNo": "931582",      "cdnInstanceStatusName": "running",      "createDate": "2018-09-10T18:14:56+0900",      "lastModifiedDate": "2018-09-10T19:24:11+0900",      "cdnInstanceDescription": "",      "serviceName": "test-gcdn-1",      "isAvailablePartialDomainPurge": false,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "globalCdnRule": {        "protocolTypeCode": "HTTP",        "serviceDomainTypeCode": "DEFAULT",        "originUrl": "bucket-1.kr.objectstorage.ncloud.com",        "originPath": "",        "originHttpPort": 80,        "originHttpsPort": 0,        "forwardHostHeaderTypeCode": "ORIGIN_HOSTNAME",        "forwardHostHeader": "",        "cacheKeyHostNameTypeCode": "REQUEST_HOST_HEADER",        "isGzipCompressionUse": true,        "cachingOptionTypeCode": "CACHE_CONTROL_AND_EXPIRES",        "isErrorContentsResponseUse": false,        "cachingTtlTime": 604800,        "isQueryStringIgnoreUse": true,        "isRemoveVaryHeaderUse": true,        "isLargeFileOptimizationUse": false,        "gzipResponseTypeCode": "ORIGIN_RESPONSE",        "isReferrerDomainUse": false,        "referrerDomainList": [],        "isReferrerDomainRestrictUse": false,        "isSecureTokenUse": false,        "secureTokenPassword": "",        "isReissueSecureTokenPassword": false,        "isAccessLogUse": false,        "accessLogFileStorageContainerName": ""      }    }  ]}}

CDN Purge 수행

  • 액션

    • requestGlobalCdnPurge
  • 액션 파라미터

    • cdnInstanceNo : $InstanceNo$ (Purge 하고자 하는 인스턴스 번호)
    • isWholeDomain
      1. true : 도메인이 1개인 인스턴스로 전체 도메인 대상, 고객 보유 N개의 서비스 도메인 + Cache Key Hostname이 'ORIGIN_HOSTNAME'에 사용 => 전체 도메인 대상 Purge 수행
      2. false : 고객 보유 N개의 서비스 도메인 + Cache Key Hostname이 'REQUEST_HOST_HEADER'에 사용 => 도메인 개별 Purge 수행
    • isWholePurge : false (개별 파일 Purge 수행)
    • targetFileList.1 : /sample_img.jpg (Purge 대상 파일 경로와 파일명)
구버전 (12월 Deprecated)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import oauth.signpost.OAuthConsumer;
import oauth.signpost.basic.DefaultOAuthConsumer;

public class OldSignClass {
    public static void main(String args[]) throws Exception {
        String consumerKey = $ConsumerAcessKey$;
        String consumerSecret = $ConsumerSecretKey$;
        String requestUrl = "https://api.ncloud.com/cdn/";
        String requestMethod = "GET";

        Map<String, Object> requestParameters = new HashMap<String, Object>();
        requestParameters.put("action", "requestGlobalCdnPurge");
        requestParameters.put("cdnInstanceNo", $InstanceNo$);
        requestParameters.put("responseFormatType", "json");
        requestParameters.put("isWholePurge", false);
        requestParameters.put("isWholeDomain", true);
        requestParameters.put("targetFileList.1", "/sample_img.jpg");

        StringBuffer queryString = new StringBuffer();
        int index= 1;
        int requestParamSize = requestParameters.size();
        for (String key : requestParameters.keySet()) {
            if (index == 1) {
                queryString.append("?");
            }
            queryString.append(key);

            if (requestParameters.get(key) != null) {
                queryString.append('=');
                queryString.append(URLEncoder.encode(requestParameters.get(key).toString(), "UTF-8"));
            }
            if (index!= requestParamSize) {
                queryString.append("&");
                index ++;
            }
        }

        OAuthConsumer consumer = new DefaultOAuthConsumer(consumerKey, consumerSecret);
        URL url = new URL(requestUrl + queryString.toString());
        HttpURLConnection con = (HttpURLConnection)url.openConnection();

        con.setRequestMethod(requestMethod);
        con.setConnectTimeout(500000);
        con.setUseCaches(false);
        con.setDefaultUseCaches(false);

        consumer.sign(con);
        con.connect();

        int responseCode = con.getResponseCode();
        System.out.println("ResponseCode : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader resultReader = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
            StringBuffer requestResult = new StringBuffer();
            String readString = null;
            while ((readString = resultReader.readLine()) != null) {
                requestResult.append(readString);
            }
            System.out.println(requestResult.toString());
        }
    }
}

main 메서드를 수행하면, 해당 결과를 얻을 수 있습니다.

{"requestGlobalCdnPurgeResponse": {  "requestId": "907cccf5-8921-422e-8e22-c764008385d2",  "returnCode": "0",  "returnMessage": "success",  "totalRows": 1,  "globalCdnPurgeHistoryList": [    {      "cdnInstanceNo": "931582",      "purgeId": "4f483694-d051-11e8-bc6e-3fa9bcb46bdc",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:07:11+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:07:06+0900"    }  ]}}
신버전

Java(v1)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class MainClass {
    private final static String API_END_POINT = "https://ncloud.apigw.ntruss.com";
    private final static String getCdnPlusPurgeHistoryList = "/cdn/v1/requestGlobalCdnPurge";
    private final static String METHODS = "GET";

    private final static String API_GW_KEY = $ConsumerAPIGateWayKey$;
    private final static String ACCESS_KEY = $ConsumerAccessKey$;
    private final static String SECRET_KEY = $ConsumerSecretKey$;
    private final static String TIMESTAMP = Long.toString(Instant.now().toEpochMilli());


    public static void main(String args[]) throws Exception{

        Map<String, Object> requestParameters = new HashMap<String, Object>();
        requestParameters.put("cdnInstanceNo", $InstanceNo$);
        requestParameters.put("responseFormatType", "json");
        requestParameters.put("isWholePurge", false);
        requestParameters.put("isWholeDomain", true);
        requestParameters.put("targetFileList.1", "/sample_img.jpg");

        StringBuffer queryString = new StringBuffer();
        int index= 1;
        int requestParamSize = requestParameters.size();
        for (String key : requestParameters.keySet()) {
            if (index == 1) {
                queryString.append("?");
            }
            queryString.append(key);

            if (requestParameters.get(key) != null) {
                queryString.append('=');
                queryString.append(URLEncoder.encode(requestParameters.get(key).toString(), "UTF-8"));
            }
            if (index!= requestParamSize) {
                queryString.append("&");
                index ++;
            }
        }

        String openURL = API_END_POINT + getCdnPlusPurgeHistoryList + queryString;
        URL obj = new URL(openURL);

        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("x-ncp-apigw-timestamp", TIMESTAMP);
        conn.setRequestProperty("x-ncp-apigw-api-key", API_GW_KEY);
        conn.setRequestProperty("x-ncp-iam-access-key", ACCESS_KEY);
        conn.setRequestProperty("x-ncp-apigw-signature-v1", makeSignatureV1(getCdnPlusPurgeHistoryList + queryString, API_GW_KEY, ACCESS_KEY, SECRET_KEY, TIMESTAMP, METHODS));
        conn.setUseCaches(false);
        conn.setDoInput(true);
        conn.setDoOutput(true);

        int responseCode = conn.getResponseCode();
        System.out.println("ResponseCode : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader resultReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            StringBuffer requestResult = new StringBuffer();
            String readString = null;
            while ((readString = resultReader.readLine()) != null) {
                requestResult.append(readString);
            }
            System.out.println(requestResult.toString());
        }

    }
}

main 메서드를 수행하면, 해당 결과를 얻을 수 있습니다.

{"requestGlobalCdnPurgeResponse": {  "requestId": "2d765d97-792a-435e-8f1e-a7c9ae0de604",  "returnCode": "0",  "returnMessage": "success",  "totalRows": 1,  "globalCdnPurgeHistoryList": [    {      "cdnInstanceNo": "931582",      "purgeId": "915d238c-d051-11e8-a06c-995c49e861cf",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:09:02+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:08:57+0900"    }  ]}}

Java(v2)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class MainClass {
    private final static String API_END_POINT = "https://ncloud.apigw.ntruss.com";
    private final static String getCdnPlusPurgeHistoryList = "/cdn/v1/requestGlobalCdnPurge";
    private final static String METHODS = "GET";

    private final static String API_GW_KEY = $ConsumerAPIGateWayKey$;
    private final static String ACCESS_KEY = $ConsumerAccessKey$;
    private final static String SECRET_KEY = $ConsumerSecretKey$;
    private final static String TIMESTAMP = Long.toString(Instant.now().toEpochMilli());


    public static void main(String args[]) throws Exception{

        Map<String, Object> requestParameters = new HashMap<String, Object>();
        requestParameters.put("cdnInstanceNo", $InstanceNo$);
        requestParameters.put("responseFormatType", "json");
        requestParameters.put("isWholePurge", false);
        requestParameters.put("isWholeDomain", true);
        requestParameters.put("targetFileList.1", "/sample_img.jpg");

        StringBuffer queryString = new StringBuffer();
        int index= 1;
        int requestParamSize = requestParameters.size();
        for (String key : requestParameters.keySet()) {
            if (index == 1) {
                queryString.append("?");
            }
            queryString.append(key);

            if (requestParameters.get(key) != null) {
                queryString.append('=');
                queryString.append(URLEncoder.encode(requestParameters.get(key).toString(), "UTF-8"));
            }
            if (index!= requestParamSize) {
                queryString.append("&");
                index ++;
            }
        }

        String openURL = API_END_POINT + getCdnPlusPurgeHistoryList + queryString;
        URL obj = new URL(openURL);

        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("x-ncp-apigw-timestamp", TIMESTAMP);
        conn.setRequestProperty("x-ncp-apigw-api-key", API_GW_KEY);
        conn.setRequestProperty("x-ncp-iam-access-key", ACCESS_KEY);
        conn.setRequestProperty("x-ncp-apigw-signature-v2", makeSignatureV2(getCdnPlusPurgeHistoryList + queryString, ACCESS_KEY, SECRET_KEY, TIMESTAMP, METHODS));
        conn.setUseCaches(false);
        conn.setDoInput(true);
        conn.setDoOutput(true);

        int responseCode = conn.getResponseCode();
        System.out.println("ResponseCode : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader resultReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            StringBuffer requestResult = new StringBuffer();
            String readString = null;
            while ((readString = resultReader.readLine()) != null) {
                requestResult.append(readString);
            }
            System.out.println(requestResult.toString());
        }

    }
}

main 메서드를 수행하면, 해당 결과를 얻을 수 있습니다.

{"requestGlobalCdnPurgeResponse": {  "requestId": "48f1d87d-ef52-4350-b5af-58ee7e7e50f0",  "returnCode": "0",  "returnMessage": "success",  "totalRows": 1,  "globalCdnPurgeHistoryList": [    {      "cdnInstanceNo": "931582",      "purgeId": "ae866ef0-d051-11e8-b3c7-57140a645b34",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:09:52+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:09:47+0900"    }  ]}}

CDN Purge 조회

Purge 요청한 결과를 확인하거나 이전에 요청했던 Purge 이력을 조회합니다.

  • 액션

    • getGlobalCdnPurgeHistoryList
  • 액션 파라미터

    • cdnInstanceNo : $InstanceNo$
구버전 (12월 Deprecated)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import oauth.signpost.OAuthConsumer;
import oauth.signpost.basic.DefaultOAuthConsumer;

public class OldSignClass {
    public static void main(String args[]) throws Exception {
        String consumerKey = $ConsumerAcessKey$;
        String consumerSecret = $ConsumerSecretKey$;
        String requestUrl = "https://api.ncloud.com/cdn/";
        String requestMethod = "GET";

        Map<String, Object> requestParameters = new HashMap<String, Object>();
        requestParameters.put("action", "getGlobalCdnPurgeHistoryList");
        requestParameters.put("cdnInstanceNo", $InstanceNo$);
        requestParameters.put("responseFormatType", "json");

        StringBuffer queryString = new StringBuffer();
        int index= 1;
        int requestParamSize = requestParameters.size();
        for (String key : requestParameters.keySet()) {
            if (index == 1) {
                queryString.append("?");
            }
            queryString.append(key);

            if (requestParameters.get(key) != null) {
                queryString.append('=');
                queryString.append(URLEncoder.encode(requestParameters.get(key).toString(), "UTF-8"));
            }
            if (index!= requestParamSize) {
                queryString.append("&");
                index ++;
            }
        }

        OAuthConsumer consumer = new DefaultOAuthConsumer(consumerKey, consumerSecret);
        URL url = new URL(requestUrl + queryString.toString());
        HttpURLConnection con = (HttpURLConnection)url.openConnection();

        con.setRequestMethod(requestMethod);
        con.setConnectTimeout(500000);
        con.setUseCaches(false);
        con.setDefaultUseCaches(false);

        consumer.sign(con);
        con.connect();

        int responseCode = con.getResponseCode();
        System.out.println("ResponseCode : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader resultReader = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
            StringBuffer requestResult = new StringBuffer();
            String readString = null;
            while ((readString = resultReader.readLine()) != null) {
                requestResult.append(readString);
            }
            System.out.println(requestResult.toString());
        }
    }
}

main 메서드를 수행하면, 해당 결과를 얻을 수 있습니다.

{"getGlobalCdnPurgeHistoryListResponse": {  "requestId": "2cae4302-a64b-4505-b443-0360e7d67df4",  "returnCode": "0",  "returnMessage": "success",  "totalRows": 5,  "globalCdnPurgeHistoryList": [    {      "cdnInstanceNo": "931582",      "purgeId": "ae866ef0-d051-11e8-b3c7-57140a645b34",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:09:52+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:09:47+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "915d238c-d051-11e8-a06c-995c49e861cf",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:09:02+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:08:57+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "4f483694-d051-11e8-bc6e-3fa9bcb46bdc",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:07:11+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:07:06+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "f3c40168-c867-11e8-9f09-970b5c3327c0",      "isWholePurge": true,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [],      "estimatedCompletionDate": "2018-10-05T15:33:02+0900",      "isSuccess": true,      "requestDate": "2018-10-05T15:29:02+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "ab6580ae-c867-11e8-8087-a74bca8a3bb7",      "isWholePurge": true,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [],      "estimatedCompletionDate": "2018-10-05T15:31:01+0900",      "isSuccess": true,      "requestDate": "2018-10-05T15:27:01+0900"    }  ]}}
신버전

Java(v1)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class MainClass {
    private final static String API_END_POINT = "https://ncloud.apigw.ntruss.com";
    private final static String getCdnPlusPurgeHistoryList = "/cdn/v1/getGlobalCdnPurgeHistoryList";
    private final static String METHODS = "GET";

    private final static String API_GW_KEY = $ConsumerAPIGateWayKey$;
    private final static String ACCESS_KEY = $ConsumerAccessKey$;
    private final static String SECRET_KEY = $ConsumerSecretKey$;
    private final static String TIMESTAMP = Long.toString(Instant.now().toEpochMilli());


    public static void main(String args[]) throws Exception{

        Map<String, Object> requestParameters = new HashMap<String, Object>();
        requestParameters.put("cdnInstanceNo", $InstanceNo$);
        requestParameters.put("responseFormatType", "json");

        StringBuffer queryString = new StringBuffer();
        int index= 1;
        int requestParamSize = requestParameters.size();
        for (String key : requestParameters.keySet()) {
            if (index == 1) {
                queryString.append("?");
            }
            queryString.append(key);

            if (requestParameters.get(key) != null) {
                queryString.append('=');
                queryString.append(URLEncoder.encode(requestParameters.get(key).toString(), "UTF-8"));
            }
            if (index!= requestParamSize) {
                queryString.append("&");
                index ++;
            }
        }

        String openURL = API_END_POINT + getCdnPlusPurgeHistoryList + queryString;
        URL obj = new URL(openURL);

        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("x-ncp-apigw-timestamp", TIMESTAMP);
        conn.setRequestProperty("x-ncp-apigw-api-key", API_GW_KEY);
        conn.setRequestProperty("x-ncp-iam-access-key", ACCESS_KEY);
        conn.setRequestProperty("x-ncp-apigw-signature-v1", makeSignatureV1(getCdnPlusPurgeHistoryList + queryString, API_GW_KEY, ACCESS_KEY, SECRET_KEY, TIMESTAMP, METHODS));
        conn.setUseCaches(false);
        conn.setDoInput(true);
        conn.setDoOutput(true);

        int responseCode = conn.getResponseCode();
        System.out.println("ResponseCode : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader resultReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            StringBuffer requestResult = new StringBuffer();
            String readString = null;
            while ((readString = resultReader.readLine()) != null) {
                requestResult.append(readString);
            }
            System.out.println(requestResult.toString());
        }

    }
}

main 메서드를 수행하면, 해당 결과를 얻을 수 있습니다.

{"getGlobalCdnPurgeHistoryListResponse": {  "requestId": "e222ea0e-a7ea-467b-9b9a-357fab05c7ef",  "returnCode": "0",  "returnMessage": "success",  "totalRows": 5,  "globalCdnPurgeHistoryList": [    {      "cdnInstanceNo": "931582",      "purgeId": "ae866ef0-d051-11e8-b3c7-57140a645b34",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:09:52+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:09:47+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "915d238c-d051-11e8-a06c-995c49e861cf",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:09:02+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:08:57+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "4f483694-d051-11e8-bc6e-3fa9bcb46bdc",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:07:11+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:07:06+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "f3c40168-c867-11e8-9f09-970b5c3327c0",      "isWholePurge": true,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [],      "estimatedCompletionDate": "2018-10-05T15:33:02+0900",      "isSuccess": true,      "requestDate": "2018-10-05T15:29:02+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "ab6580ae-c867-11e8-8087-a74bca8a3bb7",      "isWholePurge": true,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [],      "estimatedCompletionDate": "2018-10-05T15:31:01+0900",      "isSuccess": true,      "requestDate": "2018-10-05T15:27:01+0900"    }  ]}}

Java(v2)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class MainClass {
    private final static String API_END_POINT = "https://ncloud.apigw.ntruss.com";
    private final static String getCdnPlusPurgeHistoryList = "/cdn/v1/getGlobalCdnPurgeHistoryList";
    private final static String METHODS = "GET";

    private final static String API_GW_KEY = $ConsumerAPIGateWayKey$;
    private final static String ACCESS_KEY = $ConsumerAccessKey$;
    private final static String SECRET_KEY = $ConsumerSecretKey$;
    private final static String TIMESTAMP = Long.toString(Instant.now().toEpochMilli());


    public static void main(String args[]) throws Exception{

        Map<String, Object> requestParameters = new HashMap<String, Object>();
        requestParameters.put("cdnInstanceNo", $InstanceNo$);
        requestParameters.put("responseFormatType", "json");

        StringBuffer queryString = new StringBuffer();
        int index= 1;
        int requestParamSize = requestParameters.size();
        for (String key : requestParameters.keySet()) {
            if (index == 1) {
                queryString.append("?");
            }
            queryString.append(key);

            if (requestParameters.get(key) != null) {
                queryString.append('=');
                queryString.append(URLEncoder.encode(requestParameters.get(key).toString(), "UTF-8"));
            }
            if (index!= requestParamSize) {
                queryString.append("&");
                index ++;
            }
        }

        String openURL = API_END_POINT + getCdnPlusPurgeHistoryList + queryString;
        URL obj = new URL(openURL);

        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("x-ncp-apigw-timestamp", TIMESTAMP);
        conn.setRequestProperty("x-ncp-apigw-api-key", API_GW_KEY);
        conn.setRequestProperty("x-ncp-iam-access-key", ACCESS_KEY);
        conn.setRequestProperty("x-ncp-apigw-signature-v2", makeSignatureV2(getCdnPlusPurgeHistoryList + queryString, ACCESS_KEY, SECRET_KEY, TIMESTAMP, METHODS));
        conn.setUseCaches(false);
        conn.setDoInput(true);
        conn.setDoOutput(true);

        int responseCode = conn.getResponseCode();
        System.out.println("ResponseCode : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader resultReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            StringBuffer requestResult = new StringBuffer();
            String readString = null;
            while ((readString = resultReader.readLine()) != null) {
                requestResult.append(readString);
            }
            System.out.println(requestResult.toString());
        }

    }
}

main 메서드를 수행하면, 해당 결과를 얻을 수 있습니다.

{"getGlobalCdnPurgeHistoryListResponse": {  "requestId": "2414b1a9-b63c-414f-8007-49d7635465e7",  "returnCode": "0",  "returnMessage": "success",  "totalRows": 5,  "globalCdnPurgeHistoryList": [    {      "cdnInstanceNo": "931582",      "purgeId": "ae866ef0-d051-11e8-b3c7-57140a645b34",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:09:52+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:09:47+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "915d238c-d051-11e8-a06c-995c49e861cf",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:09:02+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:08:57+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "4f483694-d051-11e8-bc6e-3fa9bcb46bdc",      "isWholePurge": false,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [        "/sample_img.jpg"      ],      "estimatedCompletionDate": "2018-10-15T17:07:11+0900",      "isSuccess": true,      "requestDate": "2018-10-15T17:07:06+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "f3c40168-c867-11e8-9f09-970b5c3327c0",      "isWholePurge": true,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [],      "estimatedCompletionDate": "2018-10-05T15:33:02+0900",      "isSuccess": true,      "requestDate": "2018-10-05T15:29:02+0900"    },    {      "cdnInstanceNo": "931582",      "purgeId": "ab6580ae-c867-11e8-8087-a74bca8a3bb7",      "isWholePurge": true,      "isWholeDomain": true,      "globalCdnServiceDomainList": [        {          "serviceDomainTypeCode": "DEFAULT",          "protocolTypeCode": "HTTP",          "defaultDomainName": "xinzbnndstxn931582.gcdn.ntruss.com",          "userDomainName": ""        }      ],      "targetFileList": [],      "estimatedCompletionDate": "2018-10-05T15:31:01+0900",      "isSuccess": true,      "requestDate": "2018-10-05T15:27:01+0900"    }  ]}}

결과 수행 확인

아래 이미지와 같이 Purge를 수행했던 결과를 확인할 수 있습니다.

CDN에 URL을 요청하여 캐시 초기화와 콘텐츠 변경 사항을 확인합니다.

연관 정보 바로가기

아래 가이드에서 연관 정보를 확인할 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...