タダです。
今回はサーバーレスシングルページアプリケーション5章で勉強したことをまとめていきます。 www.oreilly.co.jp
章立ては以下のようになっています。
- 1章 シンプルにはじめる
- 2章 ハッシュイベントによるビューのルーティング
- 3章 シングルページアプリケーションに必要なもの
- 4章 Amazon CognitoによるIdentity as a Service
- 5章 DynamoDBにデータを格納する
- 6章 Lambdaを使って(マイクロ)サービスを作る
- 7章 サーバーレスのセキュリティ
- 8章 スケールアップする
5章のまとめ
- DynamoDBのプライマリーキーが1次元の場合、ハッシュキーという
- DynamoDBからデータを取得するためには、クエリとスキャンの2つがある
- テーブルの大量のデータを含んでいるのにスキャンをかけるとすごくじかんがあかかるので、代わりにセカンダリインデックスを使う
- グローバルセカンダリインデックスは、テーブルのデータのコピーを含んでいるが高速にアクセスできるように別のプライマリキーでインデックスが貼られる
- ローカルセカンダリインデックスは、テーブルと同じハッシュキーを使うがアイテムの属性に基づいて追加のインデックスを貼る
- テーブルの大量のデータを含んでいるのにスキャンをかけるとすごくじかんがあかかるので、代わりにセカンダリインデックスを使う
- テーブル作成時にはローカルセカンダリインデックスしか作成できないが、必要があればグローバルセカンダリインデックスを追加できる
- 今回は、スクリプトで実行してテーブルを作る
./sspa create_table conf/dynamodb/tables/learnjs cognitoのアイデンティティプール名 Waiting for table creation...........done!
- 今回は、スクリプトで実行してテーブルを作る
- DynamoDBのテーブルへのアクセス制御はきめ細かな制御が可能なため必要な制御ルールが何かを検討する
- 今回は、ユーザーはlearnjsテーブルにドキュメントを作成できる必要あり
- テーブルには、ユーザーが入力した正しい解答を書き込む
- ユーザーは自分で作成したドキュメントを読めて自分のドキュメントだけを更新できる必要があり
- DynamoDB二オブジェクトを書き込むとき、
DyanmoDB.DocumentClient
APIを使うことでDynamoDBをドキュメントデータベースのように扱える- オブジェクトの属性値は配列のような複合値になり、アイテムごとに属性が違っていてもよい
- Defferedオブジェクトをつくって、sendDbRequest関数から返すことで他の非同期リクエストとつなげることができる
- saveAnswer関数で、Cognito IDなどの必要なフィールドを含むitemオブジェクトを作る(Cognito IDを取得してIDとユーザーが一致しなければ弾く)
- アイテムを作成後、DocumentClient.putを実行し、sendDbRequestをに渡す
- checkAnswerClickハンドラで関数を扱う
次は6章ではLambdaを使っていきます。