本プロジェクトではSAM CLIによりデプロイするサーバーレスアプリです。次のファイルがあります。
- app - Lambdaで実行するコード
- app/tests - テストコード
- template.yaml - AWSリソースの定義
SAM CLIを利用するために以下が必要です。
- SAM CLI - Install the SAM CLI
- Node.js - Install Node.js 20, including the NPM package management tool.
- Docker - Install Docker community edition
sam-express-typescript$ docker compose up -d
ホストマシンにて以下awsコマンドを実行してテーブルを作成します
aws dynamodb \
--profile $AWS_PROFILE \
--region ap-northeast-1 \
--endpoint-url http://localhost:8000 \
create-table \
--table-name CallbackTesterLog \
--attribute-definitions \
AttributeName=UserId,AttributeType=S \
AttributeName=Unixtime,AttributeType=N \
--key-schema \
AttributeName=UserId,KeyType=HASH \
AttributeName=Unixtime,KeyType=RANGE \
--billing-mode PAY_PER_REQUEST
テーブル一覧
aws --profile $AWS_PROFILE dynamodb list-tables --region ap-northeast-1 --endpoint-url http://localhost:8000
テーブル削除
aws dynamodb \
--profile $AWS_PROFILE \
--region ap-northeast-1 \
--endpoint-url http://localhost:8000 \
delete-table \
--table-name CallbackTesterLog
リクエスト
curl -X POST http://localhost:8080/user/42 -H "Accept: application/json" -H "Content-type: application/json" -d '{ "name" : "42" }'
curl -X GET http://localhost:8080/user/42
npmパッケージを更新したらコンテナにログインしてインストールします
docker compose exec -it app /bin/bash
npm install
DynamoDB Localを使ってテストを実行する
$ docker compose exec -it app /bin/bash
# npm install
# npm run test
make deploy
### 過去ログ表示
sam-express-typescript$ make logs
### Tail
sam-express-typescript$ make tail
sam delete --stack-name sam-express-typescript --profile $AWS_PROFILE