Skip to content

SDK

런타임 코드에서 인프라와 상호작용하세요.

SDK

SST SDK를 사용하면 런타임 코드가 타입 안전한 방식으로 인프라와 상호작용할 수 있습니다.

함수, 프론트엔드, 컨테이너 애플리케이션에서 SDK를 사용할 수 있습니다. 컴포넌트의 링크에 접근할 수 있으며, 일부 컴포넌트는 사용할 수 있는 SDK 클라이언트를 제공합니다.

현재 SDK는 JavaScript/TypeScript와 Golang에서만 사용 가능합니다. 다른 언어에 대한 지원은 로드맵에 있습니다.


Node.js

JS SDK는 여러분의 함수, 프론트엔드, 또는 컨테이너 애플리케이션에 설치할 수 있는 npm 패키지입니다.

Terminal window
npm install sst

링크

연결된 리소스에 접근하려면 Resource를 임포트합니다.

src/lambda.ts
import { Resource } from "sst";
console.log(Resource.MyBucket.name);

여기서는 함수에 버킷이 연결되었다고 가정합니다. 아래는 그 예제입니다.

sst.config.ts
const bucket = new sst.aws.Bucket("MyBucket");
new sst.aws.Function("MyFunction", {
handler: "src/lambda.handler",
link: [bucket]
});

기본값

기본적으로 Resource 객체는 Resource.App을 포함합니다. 이를 통해 현재 앱에 대한 정보를 얻을 수 있습니다. 정보에는 다음이 포함됩니다:

  • App.name: 여러분의 SST 앱 이름
  • App.stage: 현재 SST 앱의 스테이지
src/lambda.ts
import { Resource } from "sst";
console.log(Resource.App.name, Resource.App.stage);

클라이언트

Realtime 컴포넌트와 같은 컴포넌트들은 사용할 수 있는 클라이언트를 제공합니다.

src/lambda.ts
import { realtime } from "sst/aws/realtime";
export const handler = realtime.authorizer(async (token) => {
// 토큰을 검증합니다
});

예를 들어, realtime.authorizerRealtime이 필요로 하는 인증자 함수의 핸들러를 생성할 수 있게 해줍니다.


동작 원리

위 예제에서 Resource.MyBucket.name이 동작하는 이유는 sst devsst deploy 실행 시 함수 패키지에 주입되었기 때문입니다.

함수의 경우, 이 값은 esbuild를 사용하여 globalThis에 주입됩니다. 프론트엔드의 경우에는 process.env 객체에 주입됩니다.

JS SDK는 먼저 process.env를 확인한 후 globalThis에서 연결된 리소스를 찾습니다. 링크가 어떻게 주입되는지에 대해 더 알아보기를 참고하세요.


Golang

Golang 함수나 컨테이너 애플리케이션에서 SST Go SDK 패키지를 사용하세요.

src/main.go
import (
"github.com/sst/sst/v3/sdk/golang/resource"
)

런타임 코드에서 resource.Get 함수를 사용해 연결된 리소스에 접근할 수 있습니다.

src/main.go
resource.Get("MyBucket", "name")

여기서 MyBucket은 함수에 연결된 버킷의 이름입니다.

sst.config.ts
const bucket = new sst.aws.Bucket("MyBucket");
new sst.aws.Function("MyFunction", {
handler: "./src",
link: [bucket]
});

현재 앱의 정보도 다음과 같이 접근할 수 있습니다.

src/main.go
resource.Get("App", "name")
resource.Get("App", "stage")

Go SDK에서는 현재 클라이언트 함수를 지원하지 않습니다.