Ji Woong Park

간단히 퍼지 해봐요

Blog Post created by Ji Woong Park Employee on Oct 7, 2016

안녕하세요~

 

아카마이 유저 분들이 가장 많이 하는 작업 중의 하나는 퍼지 실행일 텐데요,  퍼지를 위해 아카마이 루나 포털에 접속하는 것은
생각보다 매우 귀찮은 일이기도 합니다. 아카마이가 제공하는 {OPEN} API 및 샘플 클라이언트를 사용하면 일일이 루나포털에 들어가지 않아도
간단히 퍼지를 실행하실 수 있어서 이 방법을 간단히 정리해 보았습니다.

CCU API 는 아카마이의 {OPEN} API 기반으로, 고유의 Authorization 체계를 갖추고 있어 사용을 위해서는 API Credential 정보를
사용하여 적절한 Authorization 헤더를 생성해야 합니다. 하지만 매우 번거로운 작업이므로 아카마이가 관리하는 Github 에서 제공되는 각종 언어 별 샘플 클라이언트를 활용하시는 것이 편리합니다

 

https://github.com/akamai-open

  

이 중 Python 기반으로 만들어진 Edgegrid  - 보통 egcurl 이라고 부릅니다 - 를 써서 콘솔에서 간단히 퍼지를 실행할 수 있습니다.

 

먼저 CCU API 를 쓰기 위해서는 Credential 을 생성해야겠죠. 

 

 A. CCU API 준비

1. 루나포털에접속하여 퍼지 API  권한을 부여하고자 하는 설정이 포함된 그룹으로 이동하세요

 

 

2. CONFIGURE 메가메뉴에서Manage APIs 클릭하세요

 

3. {OPEN} API Administration 화면에가서좌측 트리의 API CLIENTS  CCU APIs  기어박스 버튼을 클릭하여

팝업된 ‘Add new collection’  선택합니다

 

 

4. 팝업윈도우에서 컬렉션명을 입력합니다. (어떤 이름이던 상관없습니다)

 

 

5. 이후새로 생성된 Collections  기어박스 버튼에서 Add New Client  클릭합니다.

 

 

6. 팝업된New client 윈도우에서 라이센스내용에 동의합니다.

 

 

7. 클라이언트명을 넣고 저장하세요

 

 

8. 생성된클라이언트를 선택한 , Authorizations 탭에서 New Authorization 버튼을 클릭합니다

 

 

9. 새 Authorization 팝업이 뜨면  이름을 입력합니다.

 

10.CCU API에 부여할 권한을 선택합니다. WRITE 권한은 퍼지 생성 권한이고, READ 권한은 진행중인 퍼지 내용 확인이 가능한

권한입니다. (2  체크하시기를 권장합니다)

 

 

11. Grant Settings 화면에서다음과같이 설정합니다

 

 

Allow purge by CP code: 체크

CCU Queue : default 

Purge CP Code: 퍼지를 허용할 CP코드들을 선택합니다.

Rate Limit : 5

 

12. Save 시에는하기와같이 새로 만들어진 Authorization  나타납니다여기서 우측 상단에 하이라이트  버튼을 클릭하여

Credential 정보를 텍스트 파일로 받으실  있습니다.

 

 

Credential 정보는 다음의 4가지로 구성됩니다.

Base URL  : API 호출때 사용하시는 기본 호스트명이 됩니다 

Access Token

Client Token

Secret

 

 

B. Egcurl 에서  CCU API 를 써서 퍼지를 해봅니다.

퍼지의 실행 및 실행된 퍼지 결과 확인을 파이썬 기반 {OPEN} API 샘플 클라이언트인 edgegrid-curl (egcurl 이라고 부릅니다) 을 사용해 봅니다.

 

1.edgegrid-curl (egcurl다음의URL 에서 다운로드가 가능합니다.

https://github.com/akamai-open/edgegrid-curl

 

 

 

2. zip 파일을 풀고 하기의 파일들을 원하는 위치에 복사합니다. (해당 위치를 $PATH 추가하는 것이 편리합니다)

 

 

3. ~/.egcur파일을 편집하여 다음과 같이 설정을 추가합니다. (egcurl 파일이 아니라 .egcurl 입니다)

 

다음은 ccutest 라는 이름으로 설정을 만든 예입니다. Credential 정보를 맞게 입력하세요

설정 끝에 max-body:2048 항목 추가가 필요합니다.

 

[ccutest]

host:akab-uwmgn4q5xequ7de7-btyvwou2faxjgzds.purge.akamaiapis.net client_token:akab-aiueavjofduihifs-q3gs43kovyzjuk4s access_token:akab-4xqpqpm76qtkmegg-ptrvfisky2b66pkm secret:WzQH7AE3txWxjigPbqZv93TAvyvmarcoP7szg+sZrWo= max-body:2048

 

4.퍼지실행

4.1 특정 URL  대해 퍼지를 실행하는 예입니다실행  결과는 201 응답코드와 함께 json 포맷으로 돌아옵니다.

파라메터는 다음과 같습니다.

   - objects : 퍼지할  URL 목록 (쉼표구분)

   - action : remove/invalidate  택일 

   - type : arl 선택

   - domain : production / staging  택일

 

<요청>

egcurl --eg-section ccutest -sSik --request POST --header "Content-Type: application/json" --data-binary '{"objects" : ["http://akm4.nangin.asia/tracker.png"],"action": "remove", "type": "arl", "domain": "production"}' 'https://akab-uwmgn4q5xequ7de7-btyvwou2faxjgzds.purge.akamaiapis.net/ccu/v2/queues/default'

 

<응답>

HTTP/1.1 201 Created

Server: Apache

Content-Length: 268

Content-Location: /ccu/v2/purges/c84f84de-5ffc-11e5-9b38-7795dcb8ceea

Allow: GET, HEAD, POST

Vary: Authorization

Content-Type: application/json

Date: Mon, 21 Sep 2015 01:05:00 GMT

Connection: keep-alive

 

{"estimatedSeconds": 240, "progressUri": "/ccu/v2/purges/c84f84de-5ffc-11e5-9b38-7795dcb8ceea", "purgeId": "c84f84de-5ffc-11e5-9b38-7795dcb8ceea", "supportId": "17PY1442797500170741-476067008", "httpStatus": 201, "detail": "Request accepted.", "pingAfterSeconds”: 

 

 

4.2  특정 CP코드에 대해 퍼지를 실행하는 예입니다

파라메터는 다음과 같습니다.

   - objects : 퍼지할  Cpcode 목록 (쉼표구분)

   - action : remove/invalidate  택일 

   - type : cpcode 선택

   - domain : production / staging  택일

 

<요청>

egcurl --eg-section ccutest -sSik --request POST --header "Content-Type: application/json" --data-binary '{"objects" : ["386372"],"action": "remove", "type": "cpcode", "domain": "production"}' 'https://akab-uwmgn4q5xequ7de7-btyvwou2faxjgzds.purge.akamaiapis.net/ccu/v2/queues/default'

 

<응답>

HTTP/1.1 201 Created

Server: Apache

Content-Length: 268

Content-Location: /ccu/v2/purges/92362623-8436-11e5-b72a-271ad81e52a1

Allow: GET, HEAD, POST

Vary: Authorization

Content-Type: application/json

Date: Fri, 06 Nov 2015 03:29:22 GMT

Connection: keep-alive

 

{"estimatedSeconds": 240, "progressUri": "/ccu/v2/purges/92362623-8436-11e5-b72a-271ad81e52a1", "purgeId": "92362623-8436-11e5-b72a-271ad81e52a1", "supportId": "17PY1446780562078776-367002816", "httpStatus": 201, "detail": "Request accepted.", "pingAfterSeconds": 240}

  

4.3 현재 진행 중인 Purge  상태를 확인하는 예입니다퍼지 생성시에 리턴받은 PurgeID URL 포함하여 호출합니다.

 

<요청>

egcurl --eg-section ccutest -sSik 'https://akab-uwmgn4q5xequ7de7-btyvwou2faxjgzds.purge.akamaiapis.net/ccu/v2/purges/c84f84de-5ffc-11e5-9b38-7795dcb8ceea'

 

<응답>

HTTP/1.1 200 OK

Server: Apache

Content-Length: 401

Allow: GET, HEAD

Vary: Authorization

Content-Type: application/json

Date: Mon, 21 Sep 2015 01:08:12 GMT

Connection: keep-alive

 

{"originalEstimatedSeconds": 240, "progressUri": "/ccu/v2/purges/c84f84de-5ffc-11e5-9b38-7795dcb8ceea", "originalQueueLength": 1, "purgeId": "c84f84de-5ffc-11e5-9b38-7795dcb8ceea", "supportId": "17SY1442797692342596-427820224", "httpStatus": 200, "completionTime": null, "submittedBy": "B-C-1BBSI2F/OPEN", "purgeStatus": "In-Progress", "submissionTime": "2015-09-21T01:05:00Z", "pingAfterSeconds": 60}

 

CCU API 를 사용한 퍼지의 단점은 Email 을 통한 Notification 이 되지 않는 다는 점입니다 .

따라서 완료 여부를 확인하기 위해서는 purgeID 를 가지고 다시 호출을 해서 체크를 해보셔야 합니다. 언듯 귀찮아 보이기도 하지만

스크립트로 만들었다가 Email 을 여는 대신 엔터만 쳐보시면 되므로 반대로 더 쉬운 일일 수도 있겠네요. 

 

CCU API 의 보다 상세한 내용은 아카마이 개발자 사이트의 관련 페이지를 참고하시면 좋습니다.

 

https://developer.akamai.com/api/purge/ccu/overview.html

 

긴 글 읽어주셔서 감사합니다~

Outcomes