Skip to content

Serverless Stack (SST) demo with Node, DynamoDB, Fastify, React / SSTでサーバーレスやると楽しいです、サンプルプロジェクト

Notifications You must be signed in to change notification settings

yamamotok/sst-demo

Repository files navigation

Japanese follows (日本語は後半に)

Serverless Stack (SST) demo

Serverless Stack (SST) is a very useful framework. I can deploy my serverless app on AWS without any complex YAML or other config files.

This repo is a simple demo using my favorite tech stack, TypeScript, DynamoDB, Node.js, Fastify, and React.

image

  • Message Board App in React.
  • DynamoDB backed RESTful API with Node.js, Fastify.
  • TypeScript.
  • AWS.

TypeScript

Thankfully, in SST, TypeScript is supported without adding any plugin.

However, if you want to create a backend and a frontend project in one repository, and they are in TypeScript, it may be a bit difficult because you need to manage two "tsconfig.json" files with different characteristics. Please check "React" section too.

AWS DynamoDB

SST is very friendly with AWS DynamoDB out of the box. Please refer to lib/MyStack.ts I added one table with primary index (pair of partition key and sort key) and also one GSI.

image

Fastify

I implemented all handlers in a Fastify application. Please check src/app.ts which is the entry point.

Fastify should be excluded from the bundle, otherwise unexpected error occurs. Let's add this setting, please see lib/MyStack.ts.

bundle: {
  nodeModules: ['fastify'],
}

React

This SST React Example is using Create React App and JavaScript. However, I want to use TypeScript.

Since CRA has a strong opinion on "tsconfig.json", I thought this might be a problem in this demo project. So now I am using Parcel for development and making bundle.

Note

  • We can install aws-sdk with --save-dev option because Lambda will be able to provide the actual library.
    e.g. npm install --save-dev aws-sdk
  • If you are changing your infrastructure repeatedly and get unexpected errors when deploying, rm -f .build may help you.

 
 
 

Serverless Stack (SST) のデモ

Serverless Stack (SST) はとても便利なフレームワークです。 複雑なYAMLや設定ファイルなどを編集することなく、サーバーレスアプリをAWSにデプロイすることができます。

TypeScript

TypeScriptは最初からサポートされています。 (ただし、バックエンドとフロントエンドとを同梱して両方でTypeScriptを使う場合、工夫が必要かもしれません。Reactのセクションを見てください)

AWS DynamoDB

SSTはDynamoDBとの親和性が高いので、とても簡単です。 私は1つのテーブル(Primary index と GSI)を追加しました。詳しくは lib/MyStack.ts をみてください。

Fastify

ハンドラはFastifyアプリとして実装しました。src/app.ts こちらがエントリポイントとなりますので、みてください。

React

こちらの例 SST React Example では Create React App と JavaScript を使用しています。 しかし TypeScript を使いたいところです。

CRAは"tsconfig.json"を編集してしまうので、このデモプロジェクト(TypeScriptのプロジェクトがネストしている)では問題になりました。 それなので、Parcel を使用しました。

Note

  • aws-sdk は "--save-dev" オプションでインストールすれば十分です。Lambdaが本物を提供してくれます。
    例) npm install --save-dev aws-sdk

 
 
 

License (MIT)

Copyright (c) 2021 Keisuke Yamamoto

About

Serverless Stack (SST) demo with Node, DynamoDB, Fastify, React / SSTでサーバーレスやると楽しいです、サンプルプロジェクト

Topics

Resources

Stars

Watchers

Forks