LoginSignup
0
0

More than 3 years have passed since last update.

【SeverlessFramework 公式サンプル】Lambda + DynamoDB + SeverlessFrameworkでTODOリストAPIをデプロイしてみる

Last updated at Posted at 2021-02-27

みなさん、アウトプットしてますか?

「アウトプットされない知識は脆弱性」、や 「インプットしてアウトプットしないのは知的な便秘」 というパワーワードもあるので、アウトプットします。

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 に置いてあります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0