@bifos/nhncloud-cli 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bifos/nhncloud-cli",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "CLI tool for NHN Cloud services — AI agent & terminal friendly",
5
5
  "keywords": [
6
6
  "nhncloud",
@@ -30,7 +30,7 @@ description: >-
30
30
  |---|---|
31
31
  | CLI 설치, `configure`, profile, 출력 모드, 명령 카탈로그, 종료 코드 | [common.md](references/common.md) |
32
32
  | 공개 스킬 상태 확인·설치·갱신·제거와 상태별 복구 | [common.md](references/common.md) |
33
- | Log & Crash Search v3 커서 검색·scroll 대량 추출·collector 전송 | [logncrash.md](references/logncrash.md) |
33
+ | Log & Crash Search v3 커서 검색·scroll 대량 추출·collector 전송<br>반복 조회 자동화의 호출 비용 설계 | [logncrash.md](references/logncrash.md) |
34
34
  | Deploy 실행·조회·바이너리 전송 | [deploy.md](references/deploy.md) |
35
35
  | Compute, VPC, Block Storage, Floating IP | [iaas.md](references/iaas.md) |
36
36
  | Load Balancer와 IP ACL | [loadbalancer.md](references/loadbalancer.md) |
@@ -6,49 +6,42 @@ UAK를 OAuth `client_credentials`로 교환한 Bearer token으로 인증하고,
6
6
  ## 설정
7
7
 
8
8
  `~/.nhncloud/credentials.json`에 profile 공통 `userAccessKey`가 필요하다.
9
+ appkey는 `nhncloud configure --deploy-appkey <key>`로 profile에 설정한다.
9
10
  `nhncloud configure` 사용을 권장한다.
10
11
 
11
- `~/.nhncloud/config.json`에는 named deploy target을 둔다.
12
+ 배포 좌표(아티팩트·서버그룹·시나리오 등)는 config에 두지 않는다.
13
+ 매 호출마다 명령 옵션으로 넘긴다.
14
+ 반복되는 값은 호출하는 쪽의 스크립트나 CI 변수가 관리한다.
12
15
 
13
- Discovery:
16
+ **여러 배포 대상을 쓰려면 profile 을 나눈다.**
17
+ profile 하나에 appkey 하나다.
14
18
 
15
19
  ```bash
16
- nhncloud commands --json | jq '.commands[] | select(.path|startswith("deploy"))'
20
+ nhncloud configure --profile projA --deploy-appkey <keyA>
21
+ nhncloud deploy run --profile projA --artifact-id <id> --server-group-id <id> --scenario-ids <ids>
17
22
  ```
18
23
 
19
- ```json
20
- {
21
- "version": 1,
22
- "defaultProfile": "default",
23
- "deploy": {
24
- "targets": {
25
- "my-service": {
26
- "appKey": "<appKey>",
27
- "artifactId": "<artifactId>",
28
- "serverGroupId": "<serverGroupId>",
29
- "scenarioIds": "<id1,id2>"
30
- }
31
- }
32
- }
33
- }
24
+ 구버전에서 쓰던 config.json 의 이름 붙은 배포 대상 설정이 남아 있으면 경고가 나오며 읽지 않는다.
25
+
26
+ Discovery:
27
+
28
+ ```bash
29
+ nhncloud commands --json | jq '.commands[] | select(.path|startswith("deploy"))'
34
30
  ```
35
31
 
36
32
  ## 배포 실행
37
33
 
38
34
  ```bash
39
- nhncloud deploy run my-service
40
- nhncloud deploy run my-service --async
41
- nhncloud deploy run my-service --target-hosts <host1,host2>
35
+ nhncloud deploy run --artifact-id <id> --server-group-id <id> --scenario-ids <id1,id2>
36
+ nhncloud deploy run --artifact-id <id> --server-group-id <id> --scenario-ids <id1,id2> --async
37
+ nhncloud deploy run --artifact-id <id> --server-group-id <id> --scenario-ids <id1,id2> --target-hosts <host1,host2>
42
38
  ```
43
39
 
44
- `<target>`은 config의 deploy target 이름이다.
45
-
46
40
  | 옵션 | 설명 |
47
41
  |------|------|
48
- | `--app-key <k>` | target의 appKey override |
49
- | `--artifact-id <id>` | target의 artifactId override |
50
- | `--server-group-id <id>` | target의 serverGroupId override |
51
- | `--scenario-ids <csv>` | target의 scenarioIds override |
42
+ | `--artifact-id <id>` | 배포할 아티팩트 ID (`artifacts`로 확인) |
43
+ | `--server-group-id <id>` | 배포 대상 서버그룹 ID (`server-groups`로 확인) |
44
+ | `--scenario-ids <csv>` | 실행할 시나리오 ID 목록 (쉼표 구분) |
52
45
  | `--target-hosts <csv>` | 대상 호스트. 생략 시 서버그룹 전체 |
53
46
  | `--concurrent <n>` | 병렬 배포 수. 기본 1 |
54
47
  | `--next-when-fail` | 시나리오 실패 시에도 진행 |
@@ -62,22 +55,22 @@ nhncloud deploy run my-service --target-hosts <host1,host2>
62
55
  ## 조회 명령
63
56
 
64
57
  ```bash
65
- nhncloud deploy artifacts my-service --json
66
- nhncloud deploy server-groups my-service --json
67
- nhncloud deploy histories my-service --json
68
- nhncloud deploy binary-groups my-service --json
69
- nhncloud deploy binaries my-service --binary-group <key> --json
58
+ nhncloud deploy artifacts --json
59
+ nhncloud deploy server-groups --artifact-id <id> --json
60
+ nhncloud deploy histories --artifact-id <id> --json
61
+ nhncloud deploy binary-groups --artifact-id <id> --json
62
+ nhncloud deploy binaries --binary-group <key> --artifact-id <id> --json
70
63
  ```
71
64
 
72
65
  의도별 명령:
73
66
 
74
67
  | 의도 | 명령 |
75
68
  |------|------|
76
- | 아티팩트 목록 | `deploy artifacts <target>` |
77
- | 서버그룹 목록 | `deploy server-groups <target>` |
78
- | 배포 이력 | `deploy histories <target>` |
79
- | 바이너리 그룹 목록 | `deploy binary-groups <target>` |
80
- | 바이너리 목록 | `deploy binaries <target> --binary-group <key>` |
69
+ | 아티팩트 목록 | `deploy artifacts` |
70
+ | 서버그룹 목록 | `deploy server-groups --artifact-id <id>` |
71
+ | 배포 이력 | `deploy histories --artifact-id <id>` |
72
+ | 바이너리 그룹 목록 | `deploy binary-groups --artifact-id <id>` |
73
+ | 바이너리 목록 | `deploy binaries --binary-group <key> --artifact-id <id>` |
81
74
 
82
75
  `deploy binary-groups --json`은 `binaryGroups` wrapper를 언랩한 배열이다.
83
76
  `deploy binaries --json`은 `{ totalCount, binaries }` 객체다.
@@ -85,8 +78,8 @@ nhncloud deploy binaries my-service --binary-group <key> --json
85
78
  ## 바이너리 전송
86
79
 
87
80
  ```bash
88
- nhncloud deploy upload <target> --file ./app.tgz --binary-group <key>
89
- nhncloud deploy download <target> --binary-group <key> --binary-key <key> -o ./app.tgz
81
+ nhncloud deploy upload --artifact-id <id> --file ./app.tgz --binary-group <key>
82
+ nhncloud deploy download --artifact-id <id> --binary-group <key> --binary-key <key> -o ./app.tgz
90
83
  ```
91
84
 
92
85
  `upload`는 multipart로 로컬 파일을 업로드한다.
@@ -98,15 +91,21 @@ nhncloud deploy download <target> --binary-group <key> --binary-key <key> -o ./a
98
91
  ## 체이닝 예시
99
92
 
100
93
  ```bash
101
- nhncloud deploy artifacts my-service --json | jq -r '.[0].artifactId'
102
- nhncloud deploy run my-service --artifact-id <artifactId>
103
- nhncloud deploy histories my-service --json | jq '.[0] | {deployKey, deployStatus}'
94
+ nhncloud deploy artifacts --json | jq -r '.[0].artifactId'
95
+ nhncloud deploy run --artifact-id <artifactId> --server-group-id <id> --scenario-ids <ids>
96
+ nhncloud deploy histories --artifact-id <id> --json | jq '.[0] | {deployKey, deployStatus}'
104
97
  ```
105
98
 
106
99
  ## 에러 코드
107
100
 
108
101
  | 상황 | exit code |
109
102
  |------|-----------|
110
- | UAK 누락 또는 config target 없음 | 4 또는 3 |
103
+ | UAK 누락 또는 profile에 deploy appkey 없음 | 4 |
104
+ | 좌표 옵션(`--artifact-id`·`--server-group-id`·`--scenario-ids`) 누락 | 3 |
111
105
  | OAuth 인증 실패 | 2 |
112
106
  | Deploy API 오류 또는 봉투 실패 | 1 |
107
+ | `--binary-group`·`--binary-key`·`--file`·`-o` 누락 | 1 |
108
+
109
+ 마지막 두 행이 같은 값인 것은 우연이 아니라 필수 옵션을 강제하는 방식이 둘이기 때문이다.
110
+ 좌표 옵션은 CLI 가 직접 검증해 3 을 내고, 나머지 필수 옵션은 Commander 가 거부해 1 을 낸다.
111
+ 종료 코드로 분기하는 자동화는 이 차이를 알아야 한다.
@@ -108,6 +108,43 @@ CLI는 둘을 구분해 안내한다.
108
108
  CLI는 자동으로 다시 시도하지 않는다.
109
109
  서버가 남은 시간을 알려주지 않아 얼마나 기다릴지 알 수 없고, 회복이 느려 대기가 실효를 갖기 어렵다.
110
110
 
111
+ ### 반복 조회를 설계할 때
112
+
113
+ 주기적으로 로그를 수집하는 자동화라면 아래를 전제로 짠다.
114
+ 실패한 워크플로에서 되짚어 얻은 것이다.
115
+
116
+ **비용을 정하는 것은 호출 횟수와 쿼리의 선택성이다.** 조회 기간이 아니다.
117
+ 기간을 6배로 늘려도 한 호출의 비용은 거의 그대로였다.
118
+ 반면 `*` 대신 필드로 좁힌 쿼리는 같은 조회를 10분의 1 이하로 끝냈다.
119
+
120
+ **그래서 쿼리를 먼저 좁힌다.** 기간을 좁히는 것보다 효과가 크다.
121
+ `logSource`·`logLevel`·`host` 처럼 인덱스가 있는 필드로 걸러내면 호출당 비용이 급감한다.
122
+ `*` 로 넓게 받아 로컬에서 거르는 방식은 제한을 가장 빨리 소모한다.
123
+
124
+ **전수 수집은 `search` 반복이 아니라 `export` 한 번이다.**
125
+ `search`를 페이지마다 부르면 호출 수가 페이지 수만큼 늘어난다.
126
+ `export`는 같은 양을 훨씬 적은 호출로 받고, 기간 재분할과 페이지 순회를 CLI가 처리한다.
127
+
128
+ **`--page`로 페이지네이션을 직접 만들지 않는다.**
129
+ Search v3에서 `--page`는 `0`만 받는다.
130
+ `1` 이상을 넘기면 입력 오류(종료 코드 3)로 거부되며, 이것은 시간이 지나도 풀리지 않는다.
131
+ 100건을 넘겨 받아야 하면 `export`를 쓴다.
132
+
133
+ **재시도할 때 오류를 구분한다.**
134
+ 조회 횟수 제한과 서버 500은 기다리면 풀리지만, 입력 오류와 설정 오류는 풀리지 않는다.
135
+ 구분하지 않고 백오프를 걸면 풀리지 않는 오류에 대기 시간만 쓴다.
136
+
137
+ | 종료 코드 | 의미 | 기다리면 풀리나 |
138
+ |---|---|---|
139
+ | 1 | API 오류, 봉투 실패 (조회 횟수 제한 포함) | 그렇다 |
140
+ | 2 | 인증 실패 | 아니다 |
141
+ | 3 | 입력 오류 | 아니다 |
142
+ | 4 | 설정 오류 | 아니다 |
143
+
144
+ **백오프는 분 단위로 짧게 잡지 않는다.**
145
+ 회복이 느려서, 넓은 쿼리로 소모한 뒤에는 몇십 초나 몇 분을 기다려도 한 번 호출할 몫이 돌아오지 않는다.
146
+ 좁은 쿼리라면 훨씬 빨리 회복되지만, 정확한 값은 프로젝트와 쿼리마다 달라 넉넉히 잡는 편이 안전하다.
147
+
111
148
  ## 대량 export
112
149
 
113
150
  `logncrash export`는 검색 결과 전체를 scroll로 순회해 파일로 저장한다.
@@ -12,16 +12,15 @@ Management API는 공통 UAK 정적 헤더를 사용한다.
12
12
  nhncloud configure --uak-id <uak-id> --uak-secret <uak-secret> --ncr-appkey <appkey>
13
13
  ```
14
14
 
15
- `--app-key <key>`는 profile의 `ncr.appkey`보다 우선한다.
16
15
  기본 region은 `kr1`이고, `kr1`, `kr2`, `kr3`를 지원한다.
17
16
 
18
17
  ## Registry 조회
19
18
 
20
19
  ```bash
21
20
  nhncloud commands --json | jq '.commands[] | select(.path|startswith("ncr"))'
22
- nhncloud ncr list --app-key <appkey> --json
23
- nhncloud ncr list --region kr2 --app-key <appkey> --json
24
- nhncloud ncr get <registry> --app-key <appkey> --json
21
+ nhncloud ncr list --json
22
+ nhncloud ncr list --region kr2 --json
23
+ nhncloud ncr get <registry> --json
25
24
  ```
26
25
 
27
26
  `ncr list --json`은 `registries` wrapper를 언랩한 registry 배열이다.
@@ -40,8 +39,8 @@ nhncloud ncr tags <registry> <repository> --json
40
39
  ## 체이닝 예시
41
40
 
42
41
  ```bash
43
- nhncloud ncr list --app-key <appkey> --json | jq -r '.[].name'
44
- nhncloud ncr get <registry> --app-key <appkey> --json
42
+ nhncloud ncr list --json | jq -r '.[].name'
43
+ nhncloud ncr get <registry> --json
45
44
  nhncloud ncr images <registry> --json | jq -r '.[].repository'
46
45
  nhncloud ncr images <registry> --json | jq '.[] | {repository, artifact_count}'
47
46
  nhncloud ncr tags <registry> <repository> --json | jq -r '.[].tag'
@@ -53,7 +52,6 @@ nhncloud ncr tags <registry> <repository> --json | jq 'sort_by(.push_time) | las
53
52
  | 옵션 | 설명 |
54
53
  |------|------|
55
54
  | `--region <region>` | NCR region. 기본 `kr1` |
56
- | `--app-key <key>` | NCR appkey |
57
55
  | `--profile <name>` | 사용할 profile |
58
56
 
59
57
  ## 주의사항
@@ -8,23 +8,22 @@ template 의 생성·삭제, workload 의 생성·변경(update/patch)·실행
8
8
  공통 UAK와 NCS appkey가 필요하다.
9
9
  인증은 Deploy 와 같은 UAK OAuth Bearer 토큰을 재사용한다(profile 토큰 캐시 공유).
10
10
 
11
- `nhncloud configure` (대화형 또는 `--ncs-appkey`) 로 설정하거나, `--app-key` 옵션으로 직접 넘긴다.
11
+ `nhncloud configure` (대화형 또는 `--ncs-appkey`) 로 설정한다.
12
12
 
13
13
  ```bash
14
- nhncloud ncs template list --app-key <appkey>
14
+ nhncloud ncs template list
15
15
  ```
16
16
 
17
- `--app-key <key>`는 profile의 `ncs.appkey`보다 우선한다.
18
17
  기본 region은 `kr1`이고, `kr1`, `kr3`만 지원한다(판교·광주).
19
18
 
20
19
  ## Template(설계도) 조회
21
20
 
22
21
  ```bash
23
- nhncloud ncs template list --app-key <appkey> --json
24
- nhncloud ncs template list --region kr3 --app-key <appkey> --json
25
- nhncloud ncs template get <template-id> --app-key <appkey> --json
26
- nhncloud ncs template version list <template-id> --app-key <appkey> --json
27
- nhncloud ncs template version get <template-id> <version> --app-key <appkey> --json
22
+ nhncloud ncs template list --json
23
+ nhncloud ncs template list --region kr3 --json
24
+ nhncloud ncs template get <template-id> --json
25
+ nhncloud ncs template version list <template-id> --json
26
+ nhncloud ncs template version get <template-id> <version> --json
28
27
  ```
29
28
 
30
29
  ## Template(설계도) 생성/삭제
@@ -33,33 +32,33 @@ nhncloud ncs template version get <template-id> <version> --app-key <appkey> --j
33
32
  삭제는 위험 명령이라 비대화형 환경에서 `--yes` 가 필수이고, TTY 에서는 확인 프롬프트가 뜬다.
34
33
 
35
34
  ```bash
36
- nhncloud ncs template create --file ./template-create.json --app-key <appkey>
37
- nhncloud ncs template delete <template-id> --yes --app-key <appkey>
35
+ nhncloud ncs template create --file ./template-create.json
36
+ nhncloud ncs template delete <template-id> --yes
38
37
  ```
39
38
 
40
39
  버전 생성도 동일하게 `--file` 을 쓰며, payload 의 `sourceVersion` 필드가 필수다(어느 버전을 기준으로 새 버전을 만들지 지정).
41
40
 
42
41
  ```bash
43
- nhncloud ncs template version create <template-id> --file ./version-create.json --app-key <appkey>
44
- nhncloud ncs template version delete <template-id> <version> --yes --app-key <appkey>
42
+ nhncloud ncs template version create <template-id> --file ./version-create.json
43
+ nhncloud ncs template version delete <template-id> <version> --yes
45
44
  ```
46
45
 
47
46
  ## Workload(런타임 실행) 조회
48
47
 
49
48
  ```bash
50
- nhncloud ncs workload list --app-key <appkey> --json
51
- nhncloud ncs workload list --q <워크로드 이름> --app-key <appkey> --json
52
- nhncloud ncs workload get <workload-id> --app-key <appkey> --json
49
+ nhncloud ncs workload list --json
50
+ nhncloud ncs workload list --q <워크로드 이름> --json
51
+ nhncloud ncs workload get <workload-id> --json
53
52
  ```
54
53
 
55
54
  컨테이너 로그와 이벤트는 특정 task 를 지정해야 한다.
56
55
  `--task`는 `workload get` 응답의 `tasks[].id`에서 얻는다.
57
56
 
58
57
  ```bash
59
- nhncloud ncs workload logs <workload-id> --task <task-id> --container <name> --app-key <appkey> --json
60
- nhncloud ncs workload logs <workload-id> --task <task-id> --container <name> --from 1h --to now --app-key <appkey>
61
- nhncloud ncs workload events <workload-id> --task <task-id> --app-key <appkey> --json
62
- nhncloud ncs workload events <workload-id> --task <task-id> --type Warning --app-key <appkey> --json
58
+ nhncloud ncs workload logs <workload-id> --task <task-id> --container <name> --json
59
+ nhncloud ncs workload logs <workload-id> --task <task-id> --container <name> --from 1h --to now
60
+ nhncloud ncs workload events <workload-id> --task <task-id> --json
61
+ nhncloud ncs workload events <workload-id> --task <task-id> --type Warning --json
63
62
  ```
64
63
 
65
64
  ### logs·events 시간 필터
@@ -102,9 +101,9 @@ AI 에이전트는 같은 입력으로 인증 재시도를 반복하지 말고
102
101
  실행 히스토리와 예약 실행 히스토리는 workload 단위로 조회한다.
103
102
 
104
103
  ```bash
105
- nhncloud ncs workload history <workload-id> --app-key <appkey> --json
106
- nhncloud ncs workload history get <workload-id> <history-id> --app-key <appkey> --json
107
- nhncloud ncs workload schedule-history <workload-id> --app-key <appkey> --json
104
+ nhncloud ncs workload history <workload-id> --json
105
+ nhncloud ncs workload history get <workload-id> <history-id> --json
106
+ nhncloud ncs workload schedule-history <workload-id> --json
108
107
  ```
109
108
 
110
109
  ## Workload 실행제어
@@ -112,10 +111,10 @@ nhncloud ncs workload schedule-history <workload-id> --app-key <appkey> --json
112
111
  일시정지·재개는 workload 단위, 재시작은 task 단위(`--task` 필수), 삭제는 위험 명령이라 `--yes` 필수(비대화형) 또는 확인 프롬프트(TTY)를 거친다.
113
112
 
114
113
  ```bash
115
- nhncloud ncs workload pause <workload-id> --app-key <appkey>
116
- nhncloud ncs workload resume <workload-id> --app-key <appkey>
117
- nhncloud ncs workload restart <workload-id> --task <task-id> --app-key <appkey>
118
- nhncloud ncs workload delete <workload-id> --yes --app-key <appkey>
114
+ nhncloud ncs workload pause <workload-id>
115
+ nhncloud ncs workload resume <workload-id>
116
+ nhncloud ncs workload restart <workload-id> --task <task-id>
117
+ nhncloud ncs workload delete <workload-id> --yes
119
118
  ```
120
119
 
121
120
  ## Workload 생성/변경
@@ -125,11 +124,11 @@ nhncloud ncs workload delete <workload-id> --yes --app-key <appkey>
125
124
  변경은 `update`(PUT, 전체 교체)와 `patch`(PATCH, JSON Patch 배열 부분 변경) 두 가지다.
126
125
 
127
126
  ```bash
128
- nhncloud ncs workload create --file ./workload-create.json --app-key <appkey> --json
129
- nhncloud ncs workload create --file ./workload-create.json --wait --timeout 600 --app-key <appkey> --json
127
+ nhncloud ncs workload create --file ./workload-create.json --json
128
+ nhncloud ncs workload create --file ./workload-create.json --wait --timeout 600 --json
130
129
 
131
- nhncloud ncs workload update <workload-id> --file ./workload-update.json --app-key <appkey> --json
132
- nhncloud ncs workload patch <workload-id> --file ./workload-patch.json --app-key <appkey> --json
130
+ nhncloud ncs workload update <workload-id> --file ./workload-update.json --json
131
+ nhncloud ncs workload patch <workload-id> --file ./workload-patch.json --json
133
132
  ```
134
133
 
135
134
  `patch`의 `--file`은 JSON Patch(RFC 6902) 배열이다.
@@ -146,20 +145,20 @@ nhncloud ncs workload patch <workload-id> --file ./workload-patch.json --app-key
146
145
  `historyId`는 `workload history` 목록 또는 `workload history get`의 `id`를 사용한다.
147
146
 
148
147
  ```bash
149
- nhncloud ncs malware config get --app-key <appkey> --json
150
- nhncloud ncs malware config set --enabled true --app-key <appkey>
151
- nhncloud ncs malware config set --enabled false --app-key <appkey>
148
+ nhncloud ncs malware config get --json
149
+ nhncloud ncs malware config set --enabled true
150
+ nhncloud ncs malware config set --enabled false
152
151
 
153
- nhncloud ncs malware result <workload-id> <history-id> --app-key <appkey> --json
152
+ nhncloud ncs malware result <workload-id> <history-id> --json
154
153
  ```
155
154
 
156
155
  ## 체이닝 예시
157
156
 
158
157
  ```bash
159
- nhncloud ncs template list --app-key <appkey> --json | jq -r '.[].id'
160
- nhncloud ncs workload list --app-key <appkey> --json | jq -r '.[] | select(.status=="Failed") | .id'
161
- nhncloud ncs workload get <workload-id> --app-key <appkey> --json | jq -r '.tasks[].id'
162
- nhncloud ncs workload history <workload-id> --app-key <appkey> --json | jq -r '.[0].id' # 최신 historyId
158
+ nhncloud ncs template list --json | jq -r '.[].id'
159
+ nhncloud ncs workload list --json | jq -r '.[] | select(.status=="Failed") | .id'
160
+ nhncloud ncs workload get <workload-id> --json | jq -r '.tasks[].id'
161
+ nhncloud ncs workload history <workload-id> --json | jq -r '.[0].id' # 최신 historyId
163
162
  ```
164
163
 
165
164
  ## 옵션
@@ -167,7 +166,6 @@ nhncloud ncs workload history <workload-id> --app-key <appkey> --json | jq -r '.
167
166
  | 옵션 | 설명 |
168
167
  |------|------|
169
168
  | `--region <region>` | NCS region. 기본 `kr1`. `kr1`·`kr3`만 지원 |
170
- | `--app-key <key>` | NCS appkey |
171
169
  | `--profile <name>` | 사용할 profile |
172
170
  | `--page <page>` / `--size <size>` | 페이지네이션 (기본 size는 명령별 상이 — `--help` 확인) |
173
171
  | `--q <query>` | workload list·events 필터 |