giip
SES Proposal
4 min read

KVS(ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ) API ๊ฐ€์ด๋“œ (v2.0)

GIIP ํ”Œ๋žซํผ์˜ ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ธ KVS(Key-Value Store)๋ฅผ ํ†ตํ•ด ์ธํ”„๋ผ ์ƒํƒœ ๋ฐ์ดํ„ฐ(factor)๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ์ „์ฒด API๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”Œ KVS ๋ชฉ๋ก ํŽ˜์ด์ง€๋กœ ์ด๋™ โ†’


๐Ÿ“‹ ๊ฐœ์š”

KVS๋Š” ์—์ด์ „ํŠธ๊ฐ€ ์ˆ˜์ง‘ํ•œ ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์ •๋ณด, ์ธ๋ฒคํ† ๋ฆฌ, ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ๊ณ„์—ด ๋ฐ ์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฒ”์šฉ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

API์—ญํ• ์ธ์ฆ ๋ฐฉ์‹์—”๋“œํฌ์ธํŠธ
KVSPut๋ฐ์ดํ„ฐ ๊ธฐ๋ก(์“ฐ๊ธฐ)Body token ํ•„๋“œ (SK)giipApiSk2 / giipApiSk3
KVSFactorLast์ตœ์‹  ๋ฐ์ดํ„ฐ 1๊ฑด ์กฐํšŒAK ํ—ค๋” ๋˜๋Š” Body token (SK)giipApi(AK) / giipApiSk2(SK)
KVSFactorList์ด๋ ฅ ๋ชฉ๋ก ์กฐํšŒx-giip-ak / x-giip-sk ํ—ค๋”giipApi

๐Ÿ”‘ ์‹œ์ž‘ ์ „ ์ค€๋น„๋ฌผ

KVS API๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

1. SK (Secret Key)

giipAgent.cfg ํŒŒ์ผ์˜ sk ํ•„๋“œ ๊ฐ’์ž…๋‹ˆ๋‹ค. KVSPut ์š”์ฒญ ์‹œ Body์˜ token ํ•„๋“œ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์ทจ๋“ ๋ฐฉ๋ฒ•: GIIP ๊ด€๋ฆฌ ํ™”๋ฉด์˜ lsvrdetail(์„œ๋ฒ„ ์ƒ์„ธ) ๋˜๋Š” corpgroup(๋ฒ•์ธยท๊ทธ๋ฃน ๊ด€๋ฆฌ) ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// giipAgent.cfg ์˜ˆ์‹œ
{
  "sk": "your-secret-key-here"
}

2. LSSN (์„œ๋ฒ„ ์‹๋ณ„ ๋ฒˆํ˜ธ)

tLSvr.LSsn ์ปฌ๋Ÿผ ๊ฐ’์ž…๋‹ˆ๋‹ค. kType์ด "lssn"์ผ ๋•Œ kKey๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

SK ๋ฐœ๊ธ‰ ๋ฐ LSSN ํ™•์ธ ๋ฐฉ๋ฒ•์€ ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€ API ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


โœ๏ธ KVSPut โ€” ๋ฐ์ดํ„ฐ ๊ธฐ๋กํ•˜๊ธฐ

๊ฐœ๋…

KVSPut์€ ์—์ด์ „ํŠธ๊ฐ€ ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ KVS์— ์ €์žฅํ•˜๋Š” ์“ฐ๊ธฐ API์ž…๋‹ˆ๋‹ค. kType + kKey + kFactor์˜ ์กฐํ•ฉ์œผ๋กœ ์ €์žฅ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ณ , kValue์— ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์Šต๋‹ˆ๋‹ค.

์š”์ฒญ ๊ตฌ์กฐ

  • ์—”๋“œํฌ์ธํŠธ: POST https://YOUR_API_URL/api/giipApiSk2 (๋˜๋Š” giipApiSk3)
  • Content-Type: application/x-www-form-urlencoded
Body ํ•„๋“œํ•„์ˆ˜์„ค๋ช…
tokenโœ…SK ๊ฐ’ (giipAgent.cfg์˜ sk)
textโœ…๋ฆฌํ„ฐ๋Ÿด ๋ฌธ์ž์—ด: KVSPut kType kKey kFactor kValue (๋ณ€์ˆ˜ ์•„๋‹˜, ์ด ๊ทธ๋Œ€๋กœ ์ „์†ก)
jsondataโœ…JSON ๋ฌธ์ž์—ด: {"kType":"...","kKey":"...","kFactor":"...","kValue":...}

์ฃผ์˜: text ํ•„๋“œ์˜ ๊ฐ’์€ KVSPut kType kKey kFactor kValue๋ผ๋Š” ๊ณ ์ • ๋ฌธ์ž์—ด ๊ทธ๋Œ€๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ๋ฐ์ดํ„ฐ ์‹๋ณ„์ž๋Š” ๋ชจ๋‘ jsondata ์•ˆ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

jsondata ํ•„๋“œ ์„ค๋ช…

ํ•„๋“œํƒ€์ž…์„ค๋ช…์˜ˆ์‹œ
kTypestringํ‚ค ์œ ํ˜• ("lssn" ๋˜๋Š” "database")"lssn"
kKeystring์„œ๋ฒ„ LSSN ๋˜๋Š” DB ID (๋ฐ˜๋“œ์‹œ ์ˆซ์žํ˜• ๋ฌธ์ž์—ด)"123456"
kFactorstring๋ฐ์ดํ„ฐ ๋ถ„๋ฅ˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ช…"netstat"
kValueany์‹ค์ œ ์ €์žฅํ•  ๋ฐ์ดํ„ฐ (JSON ๋ฐฐ์—ด ๋˜๋Š” ๊ฐ์ฒด)[{...}]

kType / kKey ๊ทœ์น™

kType์˜๋ฏธkKey ๊ฐ’
"lssn"์„œ๋ฒ„ ๋‹จ์œ„ ๋ฐ์ดํ„ฐtLSvr.LSsn ์ปฌ๋Ÿผ ๊ฐ’ (์ˆซ์ž ๋ฌธ์ž์—ด)
"database"DB ๋‹จ์œ„ ๋ฐ์ดํ„ฐtManagedDatabase.mdb_id ์ปฌ๋Ÿผ ๊ฐ’ (์ˆซ์ž ๋ฌธ์ž์—ด)

kKey๋Š” ๋ฐ˜๋“œ์‹œ ์ˆซ์žํ˜• ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋ช…("myserver")์ด๋‚˜ UUID("abc-123-...")๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฃผ์š” kFactor ๋ชฉ๋ก

kFactor์„ค๋ช…kValue ํ˜•์‹
netstat์„œ๋ฒ„ ๊ฐ„ TCP ์—ฐ๊ฒฐ ์ •๋ณด[{remote_ip, remote_port, process_name, state}]
db_connectionsDB ์—ฐ๊ฒฐ ์ •๋ณด[{client_net_address, program_name, cpu_load, last_sql}]
heartbeat์—์ด์ „ํŠธ ์ƒ์กด ์‹ ํ˜ธ{"status":"alive","timestamp":"..."}
netinv์„œ๋ฒ„ ์ธ๋ฒคํ† ๋ฆฌ{hostname, os, cpu_cores, ipv4_local}
processlist์‹คํ–‰ ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก[{pid, name, cpu_percent, memory_mb}]
custom_factor์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ์ดํ„ฐ์ž์œ  ํ˜•์‹ JSON

์ฝ”๋“œ ์˜ˆ์‹œ

์•„๋ž˜ ์˜ˆ์‹œ๋Š” LSSN 123456 ์„œ๋ฒ„์˜ netstat ๋ฐ์ดํ„ฐ๋ฅผ KVS์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. YOUR_API_URL๊ณผ YOUR_SK๋ฅผ ์‹ค์ œ ๊ฐ’์œผ๋กœ ๊ต์ฒดํ•˜์„ธ์š”.

curl

curl -X POST "https://YOUR_API_URL/api/giipApiSk2" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_SK" \
  --data-urlencode "text=KVSPut kType kKey kFactor kValue" \
  --data-urlencode 'jsondata={"kType":"lssn","kKey":"123456","kFactor":"netstat","kValue":[{"remote_ip":"10.0.0.5","remote_port":5432,"process_name":"python","state":"ESTABLISHED"}]}'

PowerShell

$body = @{
    token    = "YOUR_SK"
    text     = "KVSPut kType kKey kFactor kValue"
    jsondata = '{"kType":"lssn","kKey":"123456","kFactor":"netstat","kValue":[{"remote_ip":"10.0.0.5","remote_port":5432,"process_name":"python","state":"ESTABLISHED"}]}'
}

$response = Invoke-RestMethod `
    -Method Post `
    -Uri "https://YOUR_API_URL/api/giipApiSk2" `
    -ContentType "application/x-www-form-urlencoded" `
    -Body $body

$response | ConvertTo-Json

Bash

SK="YOUR_SK"
API_URL="https://YOUR_API_URL/api/giipApiSk2"
LSSN="123456"

JSONDATA=$(cat <<'EOF'
{
  "kType": "lssn",
  "kKey": "123456",
  "kFactor": "netstat",
  "kValue": [
    {
      "remote_ip": "10.0.0.5",
      "remote_port": 5432,
      "process_name": "python",
      "state": "ESTABLISHED"
    }
  ]
}
EOF
)

curl -X POST "$API_URL" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=$SK" \
  --data-urlencode "text=KVSPut kType kKey kFactor kValue" \
  --data-urlencode "jsondata=$JSONDATA"

Python

import requests
import json

API_URL = "https://YOUR_API_URL/api/giipApiSk2"
SK = "YOUR_SK"

kv_data = {
    "kType": "lssn",
    "kKey": "123456",
    "kFactor": "netstat",
    "kValue": [
        {
            "remote_ip": "10.0.0.5",
            "remote_port": 5432,
            "process_name": "python",
            "state": "ESTABLISHED"
        }
    ]
}

payload = {
    "token": SK,
    "text": "KVSPut kType kKey kFactor kValue",
    "jsondata": json.dumps(kv_data)
}

response = requests.post(
    API_URL,
    data=payload,
    headers={"Content-Type": "application/x-www-form-urlencoded"}
)

print(response.json())

์‘๋‹ต ํ•ด์„

์„ฑ๊ณต ์‹œ

{
  "RstVal": 200,
  "RstMsg": "Success"
}

์‹คํŒจ ์˜ˆ์‹œ

{
  "RstVal": 401,
  "RstMsg": "Unauthorized"
}

์ „์ฒด ์‘๋‹ต ์ฝ”๋“œ ๋ชฉ๋ก์€ API ๊ฒฐ๊ณผ ์ฝ”๋“œ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


๐Ÿ” KVSFactorLast โ€” ์ตœ์‹  ๋ฐ์ดํ„ฐ ์กฐํšŒ

ํŠน์ • ์†Œ์Šค์˜ ์ง€์ •๋œ factor์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ตœ๊ทผ ๊ธฐ๋ก 1๊ฑด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ

  • Header: x-giip-ak: YOUR_AK / x-giip-sk: YOUR_SK

์š”์ฒญ ํ˜•์‹

POST https://YOUR_API_URL/api/giipApi
Content-Type: application/x-www-form-urlencoded

text=KVSFactorLast <factorType>, <lssn>, <factor>

์˜ˆ์‹œ

LSSN 123456 ์„œ๋ฒ„์˜ ์ตœ์‹  netstat ๋ฐ์ดํ„ฐ ์กฐํšŒ:

curl -X POST "https://YOUR_API_URL/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "x-giip-ak: YOUR_AK" \
  -H "x-giip-sk: YOUR_SK" \
  --data-urlencode "text=KVSFactorLast lssn, 123456, netstat"

PowerShell:

$headers = @{
    "x-giip-ak" = "YOUR_AK"
    "x-giip-sk" = "YOUR_SK"
}

$body = @{
    text = "KVSFactorLast lssn, 123456, netstat"
}

Invoke-RestMethod `
    -Method Post `
    -Uri "https://YOUR_API_URL/api/giipApi" `
    -Headers $headers `
    -ContentType "application/x-www-form-urlencoded" `
    -Body $body

SK ๊ธฐ๋ฐ˜ ์กฐํšŒ (giipApiSk2)

AK ์—†์ด SK๋งŒ์œผ๋กœ ๋™์ผ ๋ฒ•์ธ ๊ทธ๋ฃน(CGSn) ๋‚ด ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

curl -X POST "https://YOUR_API_URL/api/giipApiSk2" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_SK" \
  --data-urlencode "text=KVSFactorLast lssn, 123456, netstat"
Invoke-RestMethod `
    -Method Post `
    -Uri "https://YOUR_API_URL/api/giipApiSk2" `
    -ContentType "application/x-www-form-urlencoded" `
    -Body @{
        token = "YOUR_SK"
        text  = "KVSFactorLast lssn, 123456, netstat"
    }

๊ถŒํ•œ ๋ฒ”์œ„: SK์˜ CGSn(๋ฒ•์ธ ๊ทธ๋ฃน)์— ์†ํ•œ ์„œ๋ฒ„๋งŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“œ KVSFactorList โ€” ์ด๋ ฅ ๋ชฉ๋ก ์กฐํšŒ

ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” factor ๋ฐ์ดํ„ฐ์˜ ์ด๋ ฅ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. *๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์†Œ์Šค์˜ ๋ชจ๋“  factor ์ด๋ ฅ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ ํ˜•์‹

POST https://YOUR_API_URL/api/giipApi
Content-Type: application/x-www-form-urlencoded

text=KVSFactorList <factorType>, <lssn>, <factor>

์˜ˆ์‹œ

LSSN 123456 ์„œ๋ฒ„์˜ ๋ชจ๋“  factor ์ด๋ ฅ ์กฐํšŒ:

curl -X POST "https://YOUR_API_URL/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "x-giip-ak: YOUR_AK" \
  -H "x-giip-sk: YOUR_SK" \
  --data-urlencode "text=KVSFactorList lssn, 123456, *"

ํŠน์ • factor(heartbeat)๋งŒ ์ด๋ ฅ ์กฐํšŒ:

curl -X POST "https://YOUR_API_URL/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "x-giip-ak: YOUR_AK" \
  -H "x-giip-sk: YOUR_SK" \
  --data-urlencode "text=KVSFactorList lssn, 123456, heartbeat"

๐Ÿ›ก๏ธ Sk3 ๊ณ ์„ฑ๋Šฅ ๋กœ๊น…

๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ giipApiSk3 ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

  • ์—”๋“œํฌ์ธํŠธ: https://giipfaw.azurewebsites.net/api/giipApiSk3
  • ์žฅ์ :
    • ๋Œ€๋Ÿ‰์˜ jsondata ์ „์†ก ์‹œ ๋ฐ์ดํ„ฐ ์†์‹ค ๋ฐฉ์ง€
    • ๊ธฐ๋ก ์‹คํŒจ ์‹œ ์—์ด์ „ํŠธ์˜ ์ƒ์„ธ ์—๋Ÿฌ ๋กœ๊ทธ(StackTrace)๋ฅผ ํ•จ๊ป˜ ์ €์žฅํ•˜์—ฌ ์ •ํ•ฉ์„ฑ ํ™•๋ณด
  • ํ™œ์šฉ ํŒ: KVSPut ์‚ฌ์šฉ ์‹œ jsondata ๋‚ด์— kType, kKey, kFactor, kValue ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋ฉด Sk3 ์—”์ง„์ด ์ž๋™์œผ๋กœ ๋งคํ•‘ํ•˜์—ฌ ์•ˆ์ •์ ์œผ๋กœ DB์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
# Sk3 ์—”๋“œํฌ์ธํŠธ๋กœ KVSPut ํ˜ธ์ถœ ์˜ˆ์‹œ
curl -X POST "https://giipfaw.azurewebsites.net/api/giipApiSk3" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_SK" \
  --data-urlencode "text=KVSPut kType kKey kFactor kValue" \
  --data-urlencode 'jsondata={"kType":"lssn","kKey":"123456","kFactor":"netstat","kValue":[...]}'

๐Ÿ”ง ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

KVSPut์ด 401 ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ

  • token ํ•„๋“œ์˜ SK ๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜์„ธ์š”.
  • SK๋Š” Header๊ฐ€ ์•„๋‹Œ Body์˜ token ํ•„๋“œ๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

KVSPut์ด 400 ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ

  • text ํ•„๋“œ์˜ ๊ฐ’์ด ์ •ํ™•ํžˆ KVSPut kType kKey kFactor kValue์ธ์ง€ ํ™•์ธํ•˜์„ธ์š” (์ด ๋ฌธ์ž์—ด ๊ทธ๋Œ€๋กœ).
  • jsondata๊ฐ€ ์œ ํšจํ•œ JSON ๋ฌธ์ž์—ด์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”.
  • kKey๊ฐ€ ์ˆซ์žํ˜• ๋ฌธ์ž์—ด("123456")์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”. ํ˜ธ์ŠคํŠธ๋ช…์ด๋‚˜ UUID๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

KVSPut ์งํ›„ KVSFactorLast๋กœ ๋™์ผํ•œ kType/kKey/kFactor ์กฐํ•ฉ์„ ์กฐํšŒํ•˜๋ฉด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# 1. ๋ฐ์ดํ„ฐ ๊ธฐ๋ก
curl -X POST "https://YOUR_API_URL/api/giipApiSk2" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_SK" \
  --data-urlencode "text=KVSPut kType kKey kFactor kValue" \
  --data-urlencode 'jsondata={"kType":"lssn","kKey":"123456","kFactor":"heartbeat","kValue":{"status":"alive","timestamp":"2026-06-19T10:00:00Z"}}'

# 2. ๊ธฐ๋ก ํ™•์ธ
curl -X POST "https://YOUR_API_URL/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "x-giip-ak: YOUR_AK" \
  -H "x-giip-sk: YOUR_SK" \
  --data-urlencode "text=KVSFactorLast lssn, 123456, heartbeat"

KVSFactorLast / KVSFactorList๊ฐ€ ๋นˆ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ

  • ํ•ด๋‹น kType/kKey/kFactor ์กฐํ•ฉ์œผ๋กœ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
  • KVSPut์œผ๋กœ ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•œ ํ›„ ์กฐํšŒํ•˜์„ธ์š”.
  • LSSN ๋ฒˆํ˜ธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋ฌธ์ œ ํ•ด๊ฒฐ

์ฆ์ƒ์›์ธํ•ด๊ฒฐ
KVSPut์ด 401 ๋ฐ˜ํ™˜SK๋ฅผ ํ—ค๋”๋กœ ์ „์†กํ–ˆ๊ฑฐ๋‚˜ token ๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์ŒSK๋ฅผ Body์˜ token ํ•„๋“œ๋กœ ์ „๋‹ฌํ•˜๊ณ  ๊ฐ’์ด ์ •ํ™•ํ•œ์ง€ ํ™•์ธ
KVSPut์ด 400 ๋ฐ˜ํ™˜text๊ฐ€ ๋ฆฌํ„ฐ๋Ÿด KVSPut kType kKey kFactor kValue์™€ ๋‹ค๋ฅด๊ฑฐ๋‚˜ jsondata๊ฐ€ ์œ ํšจํ•œ JSON์ด ์•„๋‹˜text๋Š” ๊ณ ์ • ๋ฌธ์ž์—ด ๊ทธ๋Œ€๋กœ ์ „์†กํ•˜๊ณ  jsondata๋ฅผ ์˜ฌ๋ฐ”๋ฅธ JSON์œผ๋กœ ์ง๋ ฌํ™”
์ €์žฅ ์‹คํŒจ ๋˜๋Š” kKey ์˜ค๋ฅ˜kKey๊ฐ€ ์ˆซ์žํ˜• ๋ฌธ์ž์—ด์ด ์•„๋‹˜(ํ˜ธ์ŠคํŠธ๋ช…ยทUUID ์‚ฌ์šฉ)tLSvr.LSsn ๋“ฑ ์ˆซ์ž ๋ฌธ์ž์—ด์„ kKey๋กœ ์‚ฌ์šฉ
KVSFactorLast/List๊ฐ€ ๋นˆ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜ํ•ด๋‹น kType/kKey/kFactor ๋ฐ์ดํ„ฐ ๋ฏธ๊ธฐ๋ก ๋˜๋Š” LSSN ์˜ค๋ฅ˜KVSPut์œผ๋กœ ๋จผ์ € ๊ธฐ๋กํ•œ ๋’ค ์กฐํšŒํ•˜๊ณ  LSSN ๊ฐ’์„ ํ™•์ธ

๋ฒ„์ „: 2.1 ์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2026-06-19 ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/api-kvs.ko.md


๊ด€๋ จ ๋ฌธ์„œ: