SDK

배포한 코드에서 JustDeploy를 호출하는 공식 라이브러리입니다. 데이터베이스, 파일, 이메일 발송을 다루며, 배포된 앱은 키가 전혀 필요 없습니다. JustDeploy가 이미지에 신원을 넣어 두고 라이브러리가 그것을 사용합니다.

서버 코드용입니다. 앱을 배포만 하고 앱 안에서 JustDeploy를 호출하지 않는다면 이 페이지의 내용은 필요하지 않습니다.

설치

Node.js 22 또는 24
npm install @justdeploy/sdk@0.1.1
Python 3.12, 3.13 또는 3.14
python -m pip install justdeploy-sdk==0.1.1

Python 패키지는 justdeploy-sdk로 설치하고 justdeploy으로 import합니다. 두 패키지 모두 저희 저장소에서 게시하며 같은 버전을 사용합니다.

인증 방식

클라이언트는 인자 없이 생성합니다. API URL도, 키도, 설정 파일도 넘기지 않습니다.

JavaScript와 TypeScript
import { JustDeploy } from '@justdeploy/sdk'

const justdeploy = new JustDeploy()
const result = await justdeploy.databases.query('your-database-id', 'SELECT * FROM orders')
Python
from justdeploy import JustDeploy

with JustDeploy() as justdeploy:
    result = justdeploy.databases.query("your-database-id", "SELECT * FROM orders")

Python은 같은 메서드를 await로 쓰는 AsyncJustDeploy도 함께 제공합니다.

다음 순서로 고정되어 있습니다.

  • 환경에 JUSTDEPLOY_ACCESS_KEYJUSTDEPLOY_SECRET_KEY가 모두 있으면 짧게 유효한 세션으로 교환합니다. 내 컴퓨터에서 코드를 실행할 때 쓰는 경로입니다.
  • 없으면 JustDeploy가 빌드하면서 넣어 둔 배포 신원을 사용합니다. 배포된 앱이 쓰는 경로이고 따로 준비할 것이 없습니다.
  • 둘 다 없으면 추측하지 않고 인증 오류로 중단합니다.

두 변수 중 하나만 설정하면 오류입니다. 거부된 키가 조용히 배포 신원으로 넘어가는 일도 없습니다. 이미 키를 등록해 둔 앱은 그 키를 계속 사용하며, 그대로 두어도 빌드는 달라지지 않습니다.

내 컴퓨터의 클라이언트는 항상 운영 환경에 연결되므로 같은 조직의 리소스 id를 사용하세요. 두 값은 소스와 배포 zip에 넣지 마세요. 라이브러리는 .env 파일을 직접 읽지 않습니다. 로컬 실행 도구가 읽을 수 있으니 그 파일은 버전 관리에서 제외하세요.

사용할 수 있는 기능

세 영역이며 두 언어에서 이름이 같습니다. Python 메서드 이름은 snake case라서 listTables는 list_tables입니다.

데이터베이스
justdeploy.databases.list()
justdeploy.databases.query(databaseId, 'SELECT * FROM orders')
justdeploy.databases.listTables(databaseId)
justdeploy.databases.createTable(databaseId, { ... })
justdeploy.databases.updateTable(databaseId, 'orders', { ... })
justdeploy.databases.deleteTable(databaseId, 'orders')
스토리지
justdeploy.storages.list()
justdeploy.storages.upload(storageId, { ... })
justdeploy.storages.listFiles(storageId, { limit: 50 })
justdeploy.storages.getFile(storageId, fileId)
justdeploy.storages.download(storageId, fileId)
justdeploy.storages.deleteFile(storageId, fileId)
이메일
justdeploy.mail.send({ ... })
justdeploy.mail.list({ limit: 50 })
justdeploy.mail.get(mailId)

형태만 보고 짐작하기 어려운 두 가지가 있습니다. query는 데이터 구문만 받으므로 스키마 변경은 테이블 메서드로 하세요. 업로드는 영구 URL이 아니라 파일 id를 돌려주므로, id를 저장해 두고 링크가 필요할 때 getFile을 호출하세요.

재시도 가능성이 있는 이메일 발송에는 idempotencyKey를 넘기세요. 발송 성공은 전달이 아니라 접수를 뜻하므로, 전달 여부가 중요하면 나중에 status를 다시 확인하세요.

호출이 실패할 때

모든 실패는 JustDeployError입니다. API에서 온 오류는 status, retryAfter, requestId, details를 담고 있어 기다리면 되는 상황인지 판단할 수 있습니다. 요청 본문과 SQL, 파일 내용, 키는 오류에 남지 않으므로 오류 자체는 로그에 남겨도 안전합니다.

다루지 않는 것

  • 서버 코드 전용입니다. 브라우저, edge runtime, Deno, Bun은 지원하지 않습니다. 브라우저 코드에 담긴 키는 이미 남에게 준 키입니다.
  • Node.js와 Python만 지원합니다. 그 외 언어에서는 인증 문서의 헤더로 API를 직접 호출하세요.
  • 데이터베이스와 파일, 이메일만 다룹니다. 빌드와 프로젝트, 로그 등은 API로 호출합니다.
  • 명령줄 도구는 없고, 원하는 URL로 임의의 요청을 보내는 기능도 없습니다.

presigned 업로드와 다운로드에는 인증 정보가 실리지 않으므로 파일 전송으로 키가 새지 않습니다. 업로드가 아직 끝나지 않은 파일을 요청하면 반쯤 쓰인 응답 대신 잠시 후 다시 시도하라는 오류를 받습니다. 헤더 직접 호출은 인증, 키 관리는 인증 정보를 보세요.