概要
DynamoDB に関する、この 3 部構成のラボでは、DynamoDB を使用して指示書の生成システムを構築します。パート 1 となるこのラボでは、続く 2 つのラボで必要となるインフラストラクチャの構築について詳細な手順を示します。DynamoDB テーブルを作成してデータを追加し、そのデータへの安全なアクセス権を付与するために必要になる IAM のロールとポリシーを確認します。
続く パート 2 とパート 3 では、DynamoDB と連動する Lambda 関数を作成し、API Gateway サービスによって API を作成します。最終的には、3 つのラボで学習した DynamoDB のスキルをすべて活用して、公開ウェブにアプリケーションを公開します。
取り上げるトピック
このラボを修了すると、以下のことができるようになります。
- Amazon DynamoDB テーブルを作成する
- Amazon DynamoDB テーブルに項目を追加する
- 作成したテーブルにアクセスするために必要になる IAM のロールとポリシーの構成について理解する
前提条件
主要な概念について理解するため、次のラボ演習を修了しておく必要があります。Introduction to Amazon DynamoDB および Introduction to AWS Identity and Access Management (IAM)。このラボは、これら 3 部からなるシリーズのパート 1 です。それぞれのラボは独立していますが、前に学習した内容に基づいて構成されているため、3 つすべてを順番に受講することが最も効果的な学習方法です。
AWS のその他のサービス
このラボに必要なサービス以外の AWS のサービスは、このラボへのアクセス中 IAM ポリシーによって無効にされています。さらに、このラボで使用されるサービスの機能はラボに必要なものに限定されており、場合によってはラボの設計の観点から意図的にさらに制限されています。このラボガイドに指定されていないサービスを使用したりアクションを実行したりすると、エラーが発生することがあります。
AMAZON DYNAMODB
Amazon DynamoDB は、数ミリ秒単位のレイテンシーをあらゆる規模で一貫して必要とするアプリケーションに対応できる、高速かつ柔軟な NoSQL データベースサービスです。フルマネージド型のクラウドデータベースであり、ドキュメントストアモデルと key-value ストアモデルの両方に対応しています。フレキシブルなデータモデルと信頼性の高いパフォーマンスにより、モバイル、ウェブ、ゲーム、アドテック、IoT など多くのアプリケーションに最適です。
Amazon DynamoDB を使用して作成したデータベーステーブルには、任意の量のデータを保存して取り出すことができ、どのような量のリクエストトラフィックも処理できます。ユーザーによって指定されたリクエスト量と保存データ量を処理するために、テーブルのデータとトラフィックは Amazon DynamoDB によって自動的に十分な数のサーバーに分散され、パフォーマンスは一定で高速に保たれます。
DYNAMODB の用語
テーブル 他のデータベース管理システムと同様に、DynamoDB ではデータをテーブルに保存します。テーブルは、データの集合体です。例えば、このラボでは、SuperMission という名前のテーブルを作成し、そのテーブルにミッション情報を保存します。また、友人、家族、興味のある人に関するデータを保存する People テーブルや、対象とする人たちが運転する乗り物に関する情報を保存する Cars テーブルも作成できます。
項目 各テーブルには複数の項目が含まれています。項目は、他のすべての項目に対して一意に識別可能な属性のグループです。People テーブルでは、各項目は 1 人の人物を表します。Cars テーブルでは、各項目は 1 台の乗り物を表します。項目は、多くの点でリレーショナルデータベースシステムの行、レコード、タプルに似ています。DynamoDB では、テーブルに保存できる項目の数に制限はありません。
属性 各項目は、1 つ以上の属性で構成されます。属性は、基盤となるデータ要素であり、それ以上分割する必要がないものです。このラボでは、Mission 項目を作成し、SuperHero、MissionStatus、Villain1、Villain2、Villain3、SecretIdentity といった属性を指定します。その他の例として、Department 項目では、DepartmentID、Name、Manager などの属性を指定できます。People テーブルの項目には、PersonID、LastName、FirstName などの属性を含められます。DynamoDB の属性は、多くの点で他のデータベース管理システムのフィールドや列に似ています。
プライマリキー テーブルを作成するときに、テーブル名に加えて、テーブルのプライマリキーを指定する必要があります。他のデータベースと同様、DynamoDB のプライマリキーはテーブルの各項目を一意に識別するため、テーブル内の 2 つの項目が同じキーを持つことはありません。テーブル内の項目を追加、更新、または削除するときは、その項目のプライマリキー属性値を指定する必要があります。キー値は必須で、省略できません。DynamoDB では、パーティションキーとパーティションキーとソートキーの 2 種類のプライマリキーがサポートされています。
セカンダリインデックス DynamoDB では、プライマリキーの属性値を使用すると、テーブルのデータを読み込めます。非キー属性を使用してデータを読み取る必要がある場合、セカンダリインデックスを使用して行うことができます。テーブルでセカンダリインデックスを作成すると、テーブルからデータを読み込むときとほとんど同じ方法でインデックスからデータを読み込むことができます。セカンダリインデックスを使用すると、プライマリキー値でデータにアクセスできるだけでなく、アプリケーションでさまざまなクエリパターンを使用できます。
AWS IDENTITY AND ACCESS MANAGEMENT ドキュメント
AWS Identity and Access Management (IAM) は、アマゾン ウェブ サービス (AWS) のお客様が AWS でユーザーとユーザー権限を管理できるようにするウェブサービスです。このサービスは、クラウド上で Amazon DynamoDB、AWS Lambda、AWS マネジメントコンソールなどの AWS 製品を使用する複数のユーザーまたはシステムを管理している組織を対象にしています。IAM を使用すると、ユーザー、アクセスキーなどのセキュリティ認証情報、およびユーザーがアクセスできる AWS リソースを制御するアクセス権限を集中管理できます。詳細については、https://aws.amazon.com/iam/ を参照してください。
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 の規模、パフォーマンス、セキュリティを活用して稼働する独自のバックエンドの作成が簡単に行えます。
このラボガイドでは、AWS の基本的な概念について順に説明します。ただし、Lambda の概念については簡単な概要のみを記載しています。詳細については、https://aws.amazon.com/documentation/lambda/ で Lambda に関するアマゾン ウェブ サービスの公式ドキュメントを参照してください。料金詳細については、https://aws.amazon.com/lambda/pricing/ を参照してください。