概要
ミッションの続きに取りかかりましょう。 このラボでは引き続き、ミッション指示書の生成システムを DynamoDB を使用して構築します。このラボは、3 部からなるシリーズのパート 2 です。パート 1 では、DynamoDB テーブルを作成し、IAM を設定しました。このラボのパート 2 では、DynamoDB とデータのやり取りを行い、複数の方法でデータを取得するための Lambda 関数を作成しテストします。その後に、新しい関数をテストします。パート 3 では、3 つのラボでこれまでに学習したすべての DynamoDB のスキルを活用してアプリケーションを公開し、世界を救うために、スーパーヒーローのチームを送り出します。
取り上げるトピック
このラボを修了すると、以下のことができるようになります。
- 2 つの方法で DynamoDB テーブルからデータを取得するための Lambda 関数を作成する
- テンプレートを使用して Lambda 関数をテストする
- Lambda 関数のカスタムテストを設定する
前提条件
Introduction to Amazon DynamoDB のラボを受講して、主要な概念を理解しておく必要があります。
このラボは、3 部からなるシリーズのパート 2 です。3 つのラボはそれぞれ単独で実行できますが、ラボは以前学習した内容に基づいて構成されているため、このラボを受講する前に Serverless Web Apps using Amazon DynamoDB - Part 1 を受講することをお勧めします。
AWS のその他のサービス
このラボで必要としない AWS のサービスは、このラボにアクセスしている間、IAM ポリシーによって無効にされています。さらに、このラボで使用されるサービスの機能はラボに必要なものに限定されており、場合によってはラボの設計の観点から意図的にさらに制限されています。このラボガイドに指定されていないサービスを使用したりアクションを実行したりすると、エラーが発生することがあります。
Amazon DynamoDB
Amazon DynamoDB は、数ミリ秒単位のレイテンシーをあらゆる規模で一貫して必要とするアプリケーションに対応できる、高速かつ柔軟な NoSQL データベースサービスです。フルマネージド型のクラウドデータベースであり、ドキュメントストアモデルと key-value ストアモデルの両方に対応しています。フレキシブルなデータモデルと信頼性の高いパフォーマンスにより、モバイル、ウェブ、ゲーム、アドテック、IoT など多くのアプリケーションに最適です。
Amazon DynamoDB を使用して作成したデータベーステーブルには、任意の量のデータを保存して取り出すことができ、どのような量のリクエストトラフィックも処理できます。ユーザーによって指定されたリクエスト量と保存データ量を処理するために、テーブルのデータとトラフィックは Amazon DynamoDB によって自動的に十分な数のサーバーに分散され、パフォーマンスは一定で高速に保たれます。
DynamoDB の用語
テーブル 他のデータベース管理システムと同様に、DynamoDB ではデータをテーブルに保存します。テーブルは、データの集合体です。このラボでは、ミッション情報が保存される SuperMission という名前のテーブルで作業します。 項目 各テーブルには複数の項目が含まれています。項目は、他のすべての項目に対して一意に識別可能な属性のグループです。SuperMission テーブルに含まれるそれぞれの項目はミッション情報を構成します。 属性 各項目は、1 つ以上の属性で構成されます。属性は、基盤となるデータ要素であり、それ以上分割する必要がないものです。SuperMission テーブルでは、SuperHero、MissionStatus、Villain1 などの属性が項目に含まれています。DynamoDB の属性は、多くの点で他のデータベース管理システムのフィールドや列に似ています。 プライマリキー テーブルを作成するときに、テーブル名に加えて、テーブルのプライマリキーを指定する必要があります。他のデータベースと同様、DynamoDB のプライマリキーはテーブルの各項目を一意に識別するため、テーブル内の 2 つの項目が同じキーを持つことはありません。テーブル内の項目を追加、更新、または削除するときは、その項目のプライマリキー属性値を指定する必要があります。キー値は必須で、省略できません。DynamoDB では、パーティションキーと、パーティションキーとソートキーの 2 種類のプライマリキーがサポートされています。 セカンダリインデックス DynamoDB では、プライマリキーの属性値を使用すると、テーブルのデータを読み込めます。非キー属性を使用してデータを読み取る必要がある場合、セカンダリインデックスを使用して読み取ることができます。テーブルでセカンダリインデックスを作成すると、テーブルからデータを読み込むときとほとんど同じ方法でインデックスからデータを読み込むことができます。セカンダリインデックスを使用すると、プライマリキー値でデータにアクセスできるだけでなく、アプリケーションでさまざまなクエリパターンを使用できます。
AWS Lambda
AWS Lambda は、クラウド内で提供されるコンピューティングサービスです。コンピューティング性能の規模を変更できるため、デベロッパーはウェブスケールコンピューティングを簡単に実現できます。コードを AWS Lambda にアップロードすると、コードの実行に使用するサーバーのプロビジョニングや管理が AWS Lambda によって行われます。AWS Lambda では、Node.js、Java、Python など多様なコーディング言語がサポートされています。 AWS Lambda には、以下の 2 つの使用方法があります。
- AWS Lambda がイメージファイルのアップロードなどのイベントに応じてコードを実行する、イベントドリブン型のコンピューティングサービスとしての使用方法。このラボではこれを実習します。
- Amazon API Gateway を使用した HTTP リクエストまたは API 呼び出しを受けて、お客様のコードを実行するコンピューティングサービスとしての使用法。
AWS Lambda を使用することで、Amazon が提供する経済的なメリットを受けることができます。Lambda では、必要な場合にのみコードが実行され、自動的にスケーリングして 1 日に数件のリクエストから 1 秒に数千件のリクエストまでに対応できます。Lambda を使用すると、Amazon S3 や Amazon DynamoDB といった AWS のサービスに対するデータ処理トリガーの作成、Amazon Kinesis に保存されるストリーミングデータの処理、AWS の規模、パフォーマンス、セキュリティを活用して稼働する独自のバックエンドの作成が簡単に行えます。