Japanese follows (日本語は後半に)
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.
- Message Board App in React.
- DynamoDB backed RESTful API with Node.js, Fastify.
- TypeScript.
- AWS.
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.
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.
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'],
}
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.
- 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) はとても便利なフレームワークです。 複雑なYAMLや設定ファイルなどを編集することなく、サーバーレスアプリをAWSにデプロイすることができます。
TypeScriptは最初からサポートされています。 (ただし、バックエンドとフロントエンドとを同梱して両方でTypeScriptを使う場合、工夫が必要かもしれません。Reactのセクションを見てください)
SSTはDynamoDBとの親和性が高いので、とても簡単です。 私は1つのテーブル(Primary index と GSI)を追加しました。詳しくは lib/MyStack.ts をみてください。
ハンドラはFastifyアプリとして実装しました。src/app.ts こちらがエントリポイントとなりますので、みてください。
こちらの例 SST React Example では Create React App と JavaScript を使用しています。 しかし TypeScript を使いたいところです。
CRAは"tsconfig.json"を編集してしまうので、このデモプロジェクト(TypeScriptのプロジェクトがネストしている)では問題になりました。 それなので、Parcel を使用しました。
- aws-sdk は "--save-dev" オプションでインストールすれば十分です。Lambdaが本物を提供してくれます。
例)npm install --save-dev aws-sdk
Copyright (c) 2021 Keisuke Yamamoto