SSTでスタック間のリソース連携がすごく楽という話

今回もSST(Serverless Stack。CDKをラップして便利機能を追加したサーバレスアプリ爆速開発ツール)の関連記事だよ。

※画像引用:https://sst.dev/

CDKと共通する話だけど、アプリケーションの規模が大きくなってきたり、リージョンを隔てた環境を構築したりすると、リソースを定義するスタックを複数に分割することがあるよね。

分割した時のリソース連携がCDKでは若干面倒な部分があったと思うけど、それがSSTだとすごく簡単にラップしてくれていたから、(ほぼSST公式ドキュメントのままだけど)軽く紹介するよ。

コードを見せるのが一番早いよね。SSTでスタック間連携をするなら、こう書けばいいみたいだよ。

まず下記のようなスタックその1があったとして……

import { StackContext } from "sst/constructs";

export function MyStack({ stack }: StackContext) {
  const table = new Table(stack, "table");
  return {
    table,
  };
}

上記スタック内のtableを、別のスタック内で使いたいなら、次のように書けばいい。

import { StackContext, use } from "sst/constructs";
import { MyStack } from "./MyStack";

export function AnotherStack({ stack }: StackContext) {
  const { table } = use(MyStack);
  // Use table
}

※以上コード、SST公式より引用

これだけ! すっごく簡単だよね。

SSTは直観的に使えるようよく練られていると思う。

他にもSSTが独自機能として持っているAuthの仕組み(Cognito不使用)も簡潔でなかなかにおすすめだから、近々記事にメモしようかな。

関連記事