みなさん、アウトプットしてますか?
「アウトプットされない知識は脆弱性」、や 「インプットしてアウトプットしないのは知的な便秘」 というパワーワードもあるので、アウトプットします。
SeverlessFramework 公式サンプルを試してみたので、その手順について書いておきます。
目的
- DynamoDBが必要になってきそうだから、触って慣れておきたい。
- CURDはやってみたことのある経験が欲しい。
##ステップ
1. テンプレートを探す。
https://www.serverless.com/examples/ という公式の、examples をあさり、Lambda + DynamoDBのテンプレ見つけて立ち上げます。
今回は、最終更新が6ヶ月前だった、AWS | Typescript REST API With DynamoDB
を使います
$ npm install serverless -g
$ serverless install -u https://github.com/serverless/examples/tree/master/aws-node-typescript-rest-api-with-dynamodb -n aws-node-typescript-rest-api-with-dynamodb
2. AWSクレデンシャルを設定
Serverless FrameworkでAWSクレデンシャルの管理 を参照。
3. デプロイ
$ serverless deploy -v
詳細は【Serverless Framework】コマンドまとめ
を参考に。
そのまま実行すると
Serverless Error ---------------------------------------
The Serverless version (2.18.0) does not satisfy the "frameworkVersion" (>=1.1.0 <2.2.0) in serverless.yml
と、使っているSeverlessFrameworkのバージョンが新しすぎるというエラーが出たので、
frameworkVersion を frameworkVersion: ">=1.1.0 <2.20.0"
に変更。
再度実行すると、
Serverless Error ---------------------------------------
An error occurred: IamRoleLambdaExecution - 1 validation error detected: Value 'aws-node-typescript-rest-api-with-dynamodb-dev-ap-northeast-1-lambdaRole' at 'roleName' failed to satisfy constraint: Member must have length less than or equal to 64.
IAMRole名が64文字を超えているというエラーが出たので、
serviceを、 service: aws-rest-api-with-dynamodb
に変更。
無事デプロイ成功しました。
4. APIを叩いてみる
TODOを作成
curl -X POST https://XXXXXXX.execute-api.us-east-1.amazonaws.com/dev/todos --data '{ "text": "Learn Serverless" }'
TODOの一覧を取得
curl https://XXXXXXX.execute-api.us-east-1.amazonaws.com/dev/todos
指定したTODOを取得
curl https://XXXXXXX.execute-api.us-east-1.amazonaws.com/dev/todos/<id>
TODOを更新
curl -X PUT https://XXXXXXX.execute-api.us-east-1.amazonaws.com/dev/todos/<id> --data '{ "text": "Learn Serverless", "checked": true }'
リソースの削除
一通り試したあとは
$ serverless remove
でリソースを削除しておきましょう。(めっちゃ便利!)
まとめ
いやー、めっちゃお手軽ですね。
こんな簡単にDBを扱えるようになるなんてワクワクしてきました笑
今回試したコードは、https://github.com/naogify/aws-node-typescript-rest-api-with-dynamodb に置いてあります。