AWS サーバレス APIGateway → Lambda → DyanamoDBを操作する Node.js

目次

サーバーレスでのアプリケーション実装時に、どうしてもデータの保存処理が必要なり、今回は色々ある中からDyanmoDBを選びました。その時、API Gateway から Lambdaを呼び、LambdaでDyanamoDBを操作し、データの取得・作成・更新・削除を実装してみました。



手順

AWSのコンソール上での操作がほとんどです。コールするAPIをAPIGateway上で設定し、Lambdaが呼び出され、DyanamoDBを操作する流れになります。

  1. Lambda関数で処理を書く(IAM設定)
  2. APIGatewayでCURDに沿って、各メソッドを定義する
  3. DyanamoDB上で、テーブルを作成する

前提条件

そのくらい



Lambdaの作成

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/WorkingWithItems.html

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.03.html

に詳細ありますので、確認してみてください。



APIGatewayの設定

まずは、APIGatewayの設定をしてきます。AWSコンソールにログインし、APIGatewayに行きます。

APIの作成

リソースの作成

メソッドの作成

apigateway5-4

CROS の有効化

デプロイ

次に、dynamoDBの設定をしていきます。



DynamoDBの設定

dynamoDBの設定をしていきます。DynamoDBってどんな感じなの?って人は、

https://dev.classmethod.jp/cloud/aws/optimize-costs-of-dynamodb/

を見ると料金や仕組みがわかると思います。

キャパシティユニット

これは、ざっくりいうと、1キャパシティーユニットは1秒間に決められた回数の読み込み、書き込み容量を提供し、利用している時間分料金がかかります。 当然この値が大きければ大きいほど、処理能力は高いですが、その分料金がかさみますので、とりあえずは小さくして試すことをおすすめします。

オートスケーリング

オートスケーリング機能があるのですが、デフォルトではONになっています。この設定をOFFにしないと、キャパシティユニットの変更はできないようです。実際にプロダクションでリリースする際は、オートスケーリングしておいたほうがいいかもしれません(サービスによる)。 気になる人は詳しく調べてから使っていただいたほうがいいと思います。

DynamoDBってどんななの?

DynamoDBはselectしてくる際に、特定のkeyだけ決めてそのプライマリーキーからデータを取得したり、更新したりすることができ(indexの追加も可)、ご自身の環境に応じて、どんなkeyでデータを取得したり、変更したりするかで、key名やindexの追加が必要になりそうです。 プライマリーキーやindexに追加したkeyさえレコードにあれば、他のカラムは、レコードにって全然違くてもOKです。

例)idがプライマリーキーの場合

[
  {
    id: 1,
    name: "名前",
    tel: "電話番号"
  },
  {
    id: 2,
    nickname: "ニックネーム",
    address: {
      prefecture: "都道府県",
      city: "市町村区",
      code: "郵便番号"
    }
  }
]

それではテーブルの作成に進みます。

テーブルの作成

これで、完了です。



まとめ

出来たAPI Gatewayのエンドポイントと表示されるURLを叩いてみてDynamoDBのデータの操作が出来ているか確認してみましょう。

本来サーバーを用意して、環境を構築して、DBの設定やサーバーサイド言語で、APIの実装をしないといけないところ、コンソールでカチカチ操作するだけで、簡単にAPIの実装ができました。

余談

僕は今回APIが誰でも叩かれては困るので、Congnitoでサインインしている場合しかたたけないようにAPI Gatewayに認証をかけた実装をしています。 この内容は後日書こうと思います。

U-chan ( Nobuyuki Ukai )

学生時代は建築やデザインを専攻していたが、Yahoo!Japanにエンジニアとして運良く入社し、2年半で波情報を配信する波伝説に転職。3年後、Yahoo!時代の先輩の立ち上げたベンチャーに転職。数年後、伊豆下田に移住し、ゲストハウスを開業しながらリモートでエンジニアを続けたが、焼肉店の開業とともに株式会社UKAIを立ち上げ、法人成り。その後、カフェとゲストハウスをもう一軒開業し、現在は焼肉店、カフェ、ゲストハウス2件目を運営。今季は自社Webサイトの立ち上げ予定!

comments powered by Disqus