Skip to content

Reference Resources

앱에서 외부에서 생성된 리소스를 참조합니다.

참조 리소스

참조는 SST 앱에서 외부에서 생성된 리소스를 _사용_하는 과정입니다. 하지만 SST가 이를 관리하지는 않습니다.

이 기능은 다른 팀이나 다른 IaC(Infrastructure as Code) 도구가 관리하는 리소스가 있을 때 사용합니다. 일반적으로 이러한 리소스는 저수준 리소스이며 SST의 내장 컴포넌트가 아닙니다.

동작 원리

SST 앱에서 리소스를 생성하면 두 가지 일이 발생합니다. 첫째, 클라우드 프로바이더에 여러 번 호출하여 리소스가 생성됩니다. 둘째, SST는 클라우드 프로바이더로부터 리소스를 가져오기 위해 호출합니다. 반환된 데이터는 상태에 저장됩니다.

리소스를 참조하면 생성 단계를 건너뛰고 리소스를 가져오기만 합니다. 이 작업은 매번 배포할 때마다 수행됩니다. 하지만 두 경우 모두 동일한 객체를 얻습니다.


리소스 참조 방법

리소스를 참조하려면 리소스의 속성을 전달합니다. 이 속성들은 리소스를 가져오려고 할 때 사용하는 것과 동일합니다.

가장 일반적으로 참조되는 저수준 리소스와 해당 가져오기 속성 목록을 정리했습니다.

대부분의 저수준 리소스는 이 속성을 사용하여 리소스를 조회하는 static get 메서드를 제공합니다.


리소스 조회하기

이전에 생성한 S3 버킷을 참조하고 싶다고 가정해 보겠습니다. 버킷 이름은 다음과 같습니다.

mybucket-xnbmhcvd

static aws.s3.BucketV2.get 메서드를 사용할 것입니다.

sst.config.ts
const bucket = aws.s3.BucketV2.get("MyBucket", "mybucket-xnbmhcvd");

이렇게 하면 앱에서 이 리소스를 직접 생성한 것과 동일한 버킷 객체를 얻을 수 있습니다. 한 단계 더 나아가 보겠습니다.


링크 가능하게 만들기

이 리소스의 어떤 속성이라도 링크할 수 있도록 sst.Linkable 컴포넌트를 사용할 수 있습니다.

sst.config.ts
const storage = new sst.Linkable("MyStorage", {
properties: {
domain: bucket.bucketDomainName
}
});

여기서는 버킷의 도메인 이름을 예제로 사용했습니다.

연결하기

그리고 이를 함수에 연결합니다.

sst.config.ts
new sst.aws.Function("MyFunction", {
handler: "src/lambda.handler",
link: [storage]
});

이제 런타임에서 SDK를 사용하여 접근할 수 있습니다.

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

다른 저수준 리소스를 참조하려면 가져오기 속성 목록을 확인하세요.