SDK
런타임 코드에서 인프라와 상호작용하세요.
SDK
SST SDK를 사용하면 런타임 코드가 타입 안전한 방식으로 인프라와 상호작용할 수 있습니다.
함수, 프론트엔드, 컨테이너 애플리케이션에서 SDK를 사용할 수 있습니다. 컴포넌트의 링크에 접근할 수 있으며, 일부 컴포넌트는 사용할 수 있는 SDK 클라이언트를 제공합니다.
현재 SDK는 JavaScript/TypeScript와 Golang에서만 사용 가능합니다. 다른 언어에 대한 지원은 로드맵에 있습니다.
Node.js
JS SDK는 여러분의 함수, 프론트엔드, 또는 컨테이너 애플리케이션에 설치할 수 있는 npm 패키지입니다.
npm install sst링크
연결된 리소스에 접근하려면 Resource를 임포트합니다.
import { Resource } from "sst";
console.log(Resource.MyBucket.name);여기서는 함수에 버킷이 연결되었다고 가정합니다. 아래는 그 예제입니다.
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 앱의 스테이지
import { Resource } from "sst";
console.log(Resource.App.name, Resource.App.stage);클라이언트
Realtime 컴포넌트와 같은 컴포넌트들은 사용할 수 있는 클라이언트를 제공합니다.
import { realtime } from "sst/aws/realtime";
export const handler = realtime.authorizer(async (token) => { // 토큰을 검증합니다});예를 들어, realtime.authorizer는 Realtime이 필요로 하는 인증자 함수의 핸들러를 생성할 수 있게 해줍니다.
동작 원리
위 예제에서 Resource.MyBucket.name이 동작하는 이유는 sst dev와 sst deploy 실행 시 함수 패키지에 주입되었기 때문입니다.
함수의 경우, 이 값은 esbuild를 사용하여 globalThis에 주입됩니다. 프론트엔드의 경우에는 process.env 객체에 주입됩니다.
JS SDK는 먼저 process.env를 확인한 후 globalThis에서 연결된 리소스를 찾습니다. 링크가 어떻게 주입되는지에 대해 더 알아보기를 참고하세요.
Golang
Golang 함수나 컨테이너 애플리케이션에서 SST Go SDK 패키지를 사용하세요.
import ( "github.com/sst/sst/v3/sdk/golang/resource")런타임 코드에서 resource.Get 함수를 사용해 연결된 리소스에 접근할 수 있습니다.
resource.Get("MyBucket", "name")여기서 MyBucket은 함수에 연결된 버킷의 이름입니다.
const bucket = new sst.aws.Bucket("MyBucket");
new sst.aws.Function("MyFunction", { handler: "./src", link: [bucket]});현재 앱의 정보도 다음과 같이 접근할 수 있습니다.
resource.Get("App", "name")resource.Get("App", "stage")Go SDK에서는 현재 클라이언트 함수를 지원하지 않습니다.