Amazon Web Services ブログ

Amazon DynamoDB コンソールについて知りたかったが、質問できなかったすべてのことについての詳しいウォークスルー

2012 年にリリースされて以来、Amazon DynamoDB は、あらゆる規模で高速かつ予測可能なパフォーマンスを提供できるように設計された、完全マネージド型でマルチリージョン、マルチマスター対応のデータベースサービスとなりました。DynamoDB は、ウェブベースのコンソール、AWS コマンドラインインターフェイス (CLI)、多数のプログラミング言語用の SDK のセットという、操作を実行するための 3 つのオプションを提供する NoSQL データベースです。

このブログ記事では、DynamoDB のコアコンポーネント (テーブル、項目、属性)、グローバルテーブル、読み取り/書き込みキャパシティーモード、リザーブドキャパシティーの購入、バックアップメカニズムについて理解を深めるために、DynamoDB コンソールについて詳しく説明します。

DynamoDB コンソールについての詳細なウォークスルー

DynamoDB コンソールを開始するには、以下の手順を実行します。

  1. DynamoDB ホームページへ移動し、[Get started with Amazon DynamoDB] を選択します。(まだ AWS アカウントを設定していない場合は、[Create an AWS Account] を選択すると、アカウントを設定するプロセスが案内されます。)
  2. AWS マネジメントコンソールにサインインして、DynamoDB コンソールを開きます。

DynamoDB コンソールを初めて使用する場合は、[ようこそ] ページが表示され、DynamoDB に関する情報とその使用方法が表示されます。[ようこそ] ページには、一般的な操作を実行するための次の 3 つのオプションがあります。

  • テーブルの作成
  • 項目の追加および照会
  • テーブルの監視および管理
    DynamoDB ようこそページ

DynamoDB コンソールに初めてアクセスした後は、常にコンソールの [ダッシュボード] ページから始めます。ダッシュボードには、Amazon CloudWatch アラームによってトリガーされた最近のアラート、プロビジョニングされたテーブルの合計キャパシティー、サービスヘルス、DynamoDB に関するその他の情報の詳細が表示されます。

The DynamoDB ダッシュボード

上のスクリーンショットで番号付けされているように、ダッシュボードのセクションは以下のとおりです。

# セクション 説明
1 テーブルの作成 ダッシュボードから直接、テーブルを作成することができます。
2 最近のアラート CloudWatch アラームに基づいてアラートのリストを表示します。アラートは、テーブルのキャパシティー使用状況を監視するのに役立ちます。
3 選択した AWS リージョンの合計キャパシティー DynamoDB コンソールにアクセスする AWS リージョンで使用中の合計キャパシティーユニット (読み取りと書き込みの両方のキャパシティーモード) の概要を示します。

読み取り/書き込みキャパシティーモードは、キャパシティーの管理方法と、読み取りおよび書き込みのスループットに対する課金方法を制御します。テーブルの作成時に読み取り/書き込みキャパシティーモードを設定することも、後で変更することもできます。

4 サービスヘルス リージョン内の DynamoDB 関連の停止について通知します。あるいは、サービスヘルスダッシュボードに直接移動することもできます。
5 関連情報 最近の起動およびその他の関連機能、サービス、情報に関する情報へのリンクを提供します。

テーブル

DynamoDB のコアコンポーネントは、テーブル、項目、属性です。DynamoDB はデータをテーブルに保存し、DynamoDB のテーブルは項目の集まりです。他のすべての項目の中で一意に識別可能な各項目は、属性の集まりです。DynamoDB での項目と属性は、他のデータベースシステムの行/レコード/タプルとフィールド/列に似ています。たとえば、Employee テーブルでは、各項目は従業員を表し、EmployeeIDLastNameFirstName などの属性を含むことができます。

テーブルを作成するプロセスには、テーブルの命名、プライマリーキー属性の設定、属性データ型の設定が含まれます。ウォークスルーのこのセクションでは、DynamoDB コンソールを使用してテーブルを作成および更新する方法、テーブルに関連付けられているタブとそれらの使用方法を示します。

DynamoDB テーブルを作成する方法:

  1. DynamoDB コンソールの [Tables] ページで、[Create table] を選択します。
    DynamoDB ダッシュボードの [Create table] ページ
  2. [Create DynamoDB table] ページで、[Table name] に入力してから、Primary key 情報を入力します。たとえば、[Table name] に Console_testDB を入力し、[Primary key] の Partition key 属性として EmployeeID を入力します。また、Partition key のデータ型をドロップダウンリストから Number と設定します。

DynamoDB などの NoSQL データベースを操作する場合、キーと値のペアは 2 つのリンクされたデータ項目のセットです。テーブル内の項目の一意の識別子であるキーと、識別されるデータまたはそのデータの場所へのポインタのいずれかであるです。DynamoDB では、テーブル内の各項目には、その項目をテーブル内の他のすべての項目と区別する一意の識別子またはプライマリキーがあります。2 つの項目が同じキーを持つことはできません。主キーは、1 つの属性 (シンプルプライマリキーと呼ばれるパーティションキー) または 2 つの属性 (複合主キーと呼ばれるパーティションキーとソートキー) で構成されます。属性名、データ型、および各属性の役割 (パーティションキーには HASH、ソートキーには RANGE) を指定する必要があります。

それぞれのプライマリキー属性はスカラーでなければなりません。つまり、単一の値しか保持できません。DynamoDB を使用する場合、キーを数値、文字列、バイナリ値のいずれにするかを選択することができます。ここで使用している例では、EmployeeID がすべての従業員に固有の値を提供するプライマリキーです。

  1. この例を続けると、[Add sort key] チェックボックスをオンにし、テキストボックスに EmployeeName と入力して、ドロップダウンリストからデータ型として String を選択します。[Sort key] ボックスが [Partition key] ボックスに接続されていることに注意してください。これは、2 つのフィールドが本質的に一緒に使用されることを意味します。ソートキーを使用することで、プライマリキー以外のものを使用してデータを見つけることができます。
    DynamoDB テーブルを作成するときにソートキーを追加する
  2. テーブルの作成を終了するために、[Use default settings] を選択してから [Create] を選択します。デフォルト設定では、次のような DynamoDB テーブルが作成されます。
    • セカンダリインデックスを含まない。
    • 指定されたプロビジョニング済みキャパシティーを使用する。
    • アプリケーションがプロビジョニング済みキャパシティーを超えた場合にアラームを設定する。
    • AWS 所有のカスタマーマスターキー顧客マスターキー (CMK) であるデフォルトの暗号化タイプを使用して、保管中の暗号化を提供する。

組織の方針、業界や政府の規制、コンプライアンス要件によって、保管中の暗号化を利用してアプリケーションのデータセキュリティを強化することがしばしば求められます。DynamoDB の保管中の暗号化は、暗号化されたテーブル内のデータを保護することで、追加のデータ保護レイヤーを提供します。暗号化されるデータとしては、テーブルのプライマリキー、ローカルおよびグローバルのセカンダリインデックス、ストリーム、グローバルテーブル、バックアップ、および DynamoDB Accelerator (DAX) クラスターがあります。DynamoDB は、テーブルの暗号化に使用される暗号化キーを管理するために AWS Key Management Service (AWS KMS) を統合しています。

プロビジョニング済みキャパシティーによって、1 秒あたりにテーブルで予想される読み取りと書き込みの数が決まります。このテスト設定では、5 つの読み取りキャパシティーユニットと 5 つの書き込みキャパシティーユニットのプロビジョニング済みキャパシティー設定が、作成しているテーブルに適しています。

次のスクリーンショットに示すように、作成した Console_testDB テーブルが、DynamoDB コンソールの [Tables] ページに表示されます。[Tables] ページの各タブには、テーブルに関する情報があります。タブのリストの右側にある [More] リンクをクリックすると、さらに多くのタブにアクセスできます。あるいは、左向き矢印 ([Create table] の左側) をクリックしてナビゲーションペインを非表示にすることで、すべてのタブを一度に表示することもできます。

ここで、作成した Console_testDB テーブルが DynamoDB コンソールの [Tables] ページに表示されます

[Tables] タブ

それでは、DynamoDB コンソールの [Tables] ページのタブを見てみましょう。

[Overview] タブ

[Overview] タブ (前のスクリーンショットを参照) には、テーブルに対して最近トリガーされたアラート、DynamoDB ストリームに関する詳細、およびテーブル名、パーティションキー、ソートキー、テーブル作成日時、テーブルのプロビジョニング済みスループットの設定などのテーブル詳細が含まれます。

テーブルで DynamoDB ストリームを有効にすると、DynamoDB はテーブル内の項目に行われたすべての変更の時系列シーケンスを取得し、この情報を最大 24 時間ログに保存します。アプリケーションはこのログにアクセスし、変更前後のデータ項目をほぼリアルタイムで表示することができます。これらのストリームを消費して、その内容に基づいてアクションを実行するアプリケーションを構築することができます。

[Items] タブ

DynamoDB のテーブルは、主に項目と属性の指定およびオプションの条件で構成されています。それぞれの項目は属性のセットとして存在し、それぞれの属性には名前が付けられ、特定のタイプの値が割り当てられています。[Items] タブを使用して、項目を作成および編集します。

[Items] タブを使用して、項目を作成および編集する

DynamoDB コンソールを使用して項目を作成する:

  1. [Create item] を選択します。[Create item] で属性値を入力します。また、セカンダリインデックスも入力します。
  2. この記事の例では、EmployeeID の値として 26 を入力し、EmployeeName の値として Bob を入力します。
    この記事の例では、EmployeeID の値として 26、EmployeeName の値として Bob と入力する
  3. より多くの属性が必要な場合は、EmployeeName の左にあるプラス記号を選択します (下の最初のスクリーンショットを参照)。次に、[Append] と必要なデータ型を選択します。このウォークスルーでは、次の2 番目のスクリーンショットに示すように、データ型として String を選択し、EmployeeTitle を文字列値として、IT Engineer を属性値として追加します。このプロセスを繰り返して、テーブルに新しい項目を追加することができます。ここでは、プロセスを繰り返して、JohnBill を追加しました。
    このウォークスルーでは、データ型として String を選択し、EmployeeTitle を文字列値として、IT Engineer を属性値として追加する
  4. 必要な情報をすべて入力したら、[Save] を選択して項目を追加します。これで、新しく作成されたすべての項目と属性が表示され、次の最初のスクリーンショットに示すように、[Actions] を選択して [Duplicate]、[Edit]、[Delete] などのさまざまな操作を項目に対して実行することができます。また、テーブル内の項目に対してクエリまたはスキャン操作を実行することもできます。
    新しく作成されたすべての項目と属性が表示され、[Actions] を選択して [Duplicate]、[Edit]、[Delete] などのさまざまな操作を項目に対して実行することができる
    新しく作成されたすべての項目と属性が表示され、[Actions] を選択して [Duplicate]、[Edit]、[Delete] などのさまざまな操作を項目に対して実行することができる
    新しく作成されたすべての項目と属性が表示され、[Actions] を選択して [Duplicate]、[Edit]、[Delete] などのさまざまな操作を項目に対して実行することができる

[Metrics] タブ

DynamoDB とやり取りすると、DynamoDB はメトリクスとディメンションAmazon CloudWatch に送信します。DynamoDB は、メトリクスにゼロ以外の値がある場合にだけ CloudWatch にメトリクスを送信します。

DynamoDB は、メトリクスにゼロ以外の値がある場合にだけ CloudWatch にメトリクスを送信する

[Alarms] タブ

メトリクスデータが定義したレベルに達すると通知される CloudWatch アラームを作成することができます。アラームの状態が変わると、Amazon SNS から通知が送信されます。この例では、テーブルのデフォルト設定の一部として 2 つのアラームを作成しました。

この例では、テーブルのデフォルト設定の一部として 2 つのアラームを作成した

[Capacity] タブ

[Capacity] タブで、キャパシティーユニット (1 秒間にアプリケーションが読み書きする必要があるデータ量) を基にスループット要件を指定します。後でこれらの設定を変更することもできますし、DynamoDB の Auto Scaling を有効にして設定を自動的に変更することもできます。

このタブには、テーブルで使用されている読み取り/書き込みキャパシティーモード、プロビジョニングモード用に設定されたキャパシティーユニット、テーブルで有効になっている自動スケーリングアクティビティの概要が表示されます。プロビジョニング済みキャパシティーを使用するテーブル Console_testDB を作成するときに、デフォルト設定を使用しました。ただし、DynamoDB には、テーブルの読み取りおよび書き込みを処理するための読み取り/書き込みキャパシティーモードが 2 つあります。オンデマンキャパシティーモード (キャパシティプランニングなし、リクエストごとの料金支払い) とプロビジョニング済みキャパシティー (無料利用枠資格のデフォルト) です。

新しいテーブルを作成するときにオンデマンドの読み込み/書き込みキャパシティーモードを選択するか、[Capacity] タブで後から変更することもできます。オンデマンドキャパシティーモードを使用しているテーブルは、自動スケーリングを除いて、保管中の暗号化、ポイントインタイムリカバリ (PITR)、グローバルテーブルなど、すべての DynamoDB 機能をサポートします。24 時間ごとにテーブルをプロビジョニング済みキャパシティーからオンデマンドに変更することができ、必要に応じてすぐにテーブルをプロビジョニング済みキャパシティーに戻すことができることに注意してください。

新しいテーブルを作成するときにオンデマンドの読み込み/書き込みキャパシティーモードを選択するか、[Capacity] タブで後から変更することもできる

[Indexes] タブ

[Indexes] タブには、テーブル用に設定されているすべてのインデックスの一覧が表示されます。インデックスはアプリケーションのアクセスやデータの検索を高速化し、アプリケーションの遅延を減らすことでパフォーマンスの向上をサポートします。セカンダリインデックスには、テーブルからの属性サブセットと代替キー (パーティションキーおよびソートキー) が含まれており、データ検索のためのインデックスに対する Query 操作や Scan 操作をサポートします。DynamoDB には、グローバルセカンダリインデックスとローカルセカンダリインデックスの 2 種類のセカンダリインデックスがあります。

[Indexes] タブには、テーブル用に設定されているすべてのインデックスの一覧が表示される

[Global Tables] タブ

DynamoDB グローバルテーブルは、地理的に分散した大規模なユーザーベースを持つ大規模アプリケーションに最適です。グローバルテーブルは、独自のレプリケーションソリューションを構築して維持する必要なしで、マルチリージョンのマルチマスターデータベースをデプロイするための完全マネージド型ソリューションを提供します。言い換えれば、グローバルテーブルは世界中の AWS リージョンに自動レプリケーションを提供するため、ユーザーの場所に関係なく、ユーザーに低レイテンシーのデータアクセスを提供することができます。

グローバルテーブルのユースケースの 1 つは、アプリケーションの使用時に顧客がプロファイル情報を更新する必要がある 3 つのリージョン (米国の東海岸および西海岸、西ヨーロッパなど) にまたがる大規模な顧客ベースです。こうした要件に対処するために、3 つの異なる AWS リージョンに CustomerProfiles という名前の 3 つの同一ではあるが別個の DynamoDB テーブルを作成します。これら 3 つのテーブルは互いに別個であるため、1 つのテーブルのデータに対する変更は他のテーブルには反映されません。マネージド型レプリケーションソリューションがなければ、これらのテーブル間でデータの変更をレプリケートするコードを書くことになりますが、これには大変な手作業のオーバーヘッドが伴います。

代わりに、3 つのリージョンに固有の CustomerProfiles テーブルで構成されるグローバルテーブルを作成します。DynamoDB はテーブル間でデータの変更を自動的にレプリケートするため、あるリージョンの CustomerProfiles データへの変更は他のリージョンに伝播されます。グローバルテーブルを使用するもう 1 つのメリットは、いずれかの AWS リージョンが一時的に利用できなくなった場合でも、他の 2 つのリージョンの同じ CustomerProfiles データにアクセスできることです。

DynamoDB コンソールでテーブルを作成する方法の詳細については、グローバルテーブルの作成を参照してください。

代わりに、3 つのリージョンに固有の CustomerProfiles テーブルで構成されるグローバルテーブルを作成する

[Backups] タブ

[Backups] タブを使用してテーブルのオンデマンドバックアップを作成することもできますし、コンソールのナビゲーションペインで [Backups] を選択することもできます。また、DynamoDB テーブルに対してポイントインタイムリカバリ (PITR) を有効にすることもできます。PITR は、DynamoDB テーブルデータを継続的にバックアップします。詳細は、テーブルをある時点へ復元する (コンソール) を参照してください。

オンデマンドバックアップの作成方法の詳細については、テーブルバックアップの作成 (コンソール) を参照してください。バックアップからテーブルを復元するにはバックアップからテーブルを復元する (コンソール) を、オンデマンドバックアップを削除するにはテーブルバックアップを削除する (コンソール) を、それぞれ参照してください。

[Backups] タブを使用してテーブルのオンデマンドバックアップを作成することもできますし、コンソールのナビゲーションペインで [ Backups ] を選択することもできる

[Triggers] タブ

DynamoDB トリガーは、DynamoDB ストリームを AWS Lambda 関数に接続します。テーブル内の項目が変更されると、新しいストリームレコードが書き込まれ、それが Lambda 関数を起動して実行します。詳細については、DynamoDB ストリームと AWS Lambda のトリガーを参照してください。

[Access control] タブ

きめ細かなアクセスコントロールを使用して、モバイルアプリによる直接データベースアクセスを制限および制御します。ウェブ ID フェデレーションを使用すると、モバイルアプリで Amazon、Facebook、Google のログインなどの ID プロバイダーを使用できます。

[Tags] タブ

リソースの分類に役立つタグで DynamoDB リソースにラベルを付けて、特定のタグに基づいてレポートを作成できるようにすることでコストに関する洞察を得ることができます。タグの作成方法について詳しくは、タグ付け (コンソール) を参照してください。

バックアップ

すでに説明した [Backups] タブに加えて、DynamoDB コンソールから別個の [Backups] ページにアクセスして、そこからオンデマンドバックアップを作成することができます。

注意: ナビゲーションウィンドウの [Backups] セクションを使用してバックアップを作成した場合、テーブルは事前に選択されてはいません。バックアップのソーステーブル名を手動で選択する必要があります。

すでに説明した [Backups] タブに加えて、DynamoDB コンソールから別個の [Backups] ページにアクセスして、そこから オンデマンドバックアップを作成 することができる

リザーブドキャパシティー

特定の AWS リージョンで DynamoDB の読み取りおよび書き込みスループットの必要性を予測できる場合は、1 回限りの前払い料金を支払い、1 年間または 3 年間の最低使用レベルをコミットすることで、リザーブドキャパシティーによってコストを節約できます。リザーブドキャパシティーは DynamoDB オンデマンドでは使用できず、プロビジョニング済みキャパシティーでのみサポートされる機能です。

特定の AWS リージョンで DynamoDB の読み取りおよび書き込みスループットの必要性を予測できる場合は、1 回限りの前払い料金を支払い、1 年間または 3 年間の最低使用レベルをコミットすることで、 リザーブドキャパシティー によってコストを節約できる

DynamoDB テーブルのリザーブドキャパシティーを購入する前に、ConsumedReadCapacityUnits および ConsumedWriteCapacityUnits CloudWatch メトリクスを使用して、テーブルが使用する読み取りおよび書き込みキャパシティースループットを決定する必要があります。これらのメトリクスによって記録されるデータを活用することで、DynamoDB の使用パターンをより確実に理解することが可能になり、必要なユニット数を予測するのに役立ちます。読み取りまたは書き込みキャパシティーユニット (あるいはその両方) のためにリザーブドキャパシティーを購入することが有益であるかどうかは、アプリケーションとユースケースによって異なります。たとえば、読み取りが中心であるアプリケーションを使用している場合は、30,000 の読み取りキャパシティーユニットと 20,000 の書き込みキャパシティーユニットをリザーブドキャパシティーで購入します。これを実行すると、そのキャパシティーを使用して、予約期間中にテーブルをプロビジョニングすることができます。

プリファレンス

AWS Identity and Access Management (IAM) ユーザーとして DynamoDB コンソールにサインインしている場合は、コンソールの使用方法に関する設定情報を保存できます。この情報は、ユーザープリファレンスとも呼ばれ、コンソールを使用するたびに保存および適用されます。コンソールにアクセスするたびに、これらのプリファレンスがすべての AWS リージョン内のすべてのテーブルに適用されます。

ユーザープリファレンスは、IAM ユーザーだけが利用できます。フェデレーテッドアクセス、一時的アクセス、または AWS アカウントのルートユーザーを使用してコンソールにアクセスする場合は、プリファレンスを設定できません。コンソールのユーザープリファレンスを表示および変更する方法の詳細については、ユーザープリファレンスの表示と保存を参照してください。

コンソールにアクセスするたびに、これらのプリファレンスがすべての AWS リージョン内のすべてのテーブルに適用される

コンソールにアクセスするたびに、これらのプリファレンスがすべての AWS リージョン内のすべてのテーブルに適用される

サンプルテーブルを削除する方法

ここで、このウォークスルーで作成したサンプルテーブルを削除して、テーブルを削除するプロセスを説明します。

  1. コンソールの [Tables] ページで [Delete table] を選択します。
  2. ポップアップウィンドウが表示されて、このテーブルの CloudWatch アラームをすべて削除する (デフォルトで選択されている) とこのテーブルを削除する前にバックアップを作成するという 2 つのオプションのどちらを選択するか確認を求められます。後者のオプションを有効にすることは、削除されるテーブルのデータを利用可能にし続けたい状況で有益です。後者のオプションを選択すると、コンソールの [Backups] ページに削除されたテーブルのバックアップがあります。
  3. [Delete] を選択してテーブルの削除を完了します。
     [ Delete ] を選択してテーブルの削除を完了する

結論

このブログ記事では、DynamoDB コンソール、コンソールでできること、すべての機能にアクセスする方法について説明しました。また、コンソールを使用してテーブルを作成する方法、テーブルに項目を作成する方法、テーブルを削除する方法の例も示しました。

今後の AWS データベースブログの投稿で、DynamoDB コンソールの DAX 部分についても説明したいと考えています。


著者について

Ishita の写真Ishita Mehta-Desai は、AWS のテクニカルアカウントマネージャーです。彼女は顧客に技術的なガイダンスを提供すること、新しい場所を探索することを楽しんでいます。