DynamoDB テーブルの基本的なオペレーション - Amazon DynamoDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DynamoDB テーブルの基本的なオペレーション

他のデータベース管理システムと同様、Amazon DynamoDB はデータをテーブルに保存します。いくつかの基本的なオペレーションでテーブルを管理できます。

テーブルの作成

CreateTable オペレーションを使用して、Amazon DynamoDB でテーブルを作成します。テーブルを作成するために、以下の情報を指定する必要があります。

  • テーブル名。名前は DynamoDB の命名規則に準拠し、現在の AWS アカウントとリージョンで一意である必要があります。たとえば、米国東部 (バージニア北部) に People テーブルを作成し、欧州 (アイルランド) に別の People テーブルを作成できます。ただし、これらの 2 つのテーブルは互いにまったく異なっています。詳細については、「Amazon DynamoDB でサポートされるデータ型と命名規則」を参照してください。

  • プライマリキー。プライマリキーは 1 つの属性 (パーティションキー) または 2 つの属性で構成できます (パーティションキーとソートキー)。属性名、データタイプ、各属性のロール(パーティションキーでは HASH、ソートキーでは RANGE)を指定する必要があります。詳細については、「プライマリキー」を参照してください。

  • スループット設定 (プロビジョニングされたテーブルの場合)。プロビジョニングモードを使用している場合、最初の読み取りと書き込みのスループット設定をテーブルに指定する必要があります。これらの設定は後から変更できます。また、DynamoDB Auto Scaling を有効化して設定を管理することもできます。詳細については、「DynamoDB のプロビジョンされた容量テーブルの設定の管理」および「DynamoDB Auto Scaling によるスループットキャパシティの自動管理」を参照してください。

例 1: プロビジョニングされたテーブルを作成する

次の AWS CLI 例は、テーブル () を作成する方法を示していますMusic。プライマリキーは、Artist (パーティションキー) と SongTitle (ソートキー) で構成されており、データ型はそれぞれ String です。このテーブルの最大スループットは、読み取りキャパシティーユニット数が 10、書き込みキャパシティーユニット数が 5 です。

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5

CreateTable オペレーションは、以下のようにテーブルにメタデータを返します。

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

TableStatus エレメントは、テーブルの現在の状態を示します(CREATING)。ReadCapacityUnits および WriteCapacityUnits に指定した値によって、テーブルの作成にはしばらく時間がかかる場合があります。これらの値を大きくすると、DynamoDB はより多くのリソースをテーブルに割り当てなければならなくなります。

例 2: オンデマンドテーブルを作成する

オンデマンドモードを使用して同じテーブル Music を作成するには

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode=PAY_PER_REQUEST

CreateTable オペレーションは、以下のようにテーブルにメタデータを返します。

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 0, "ReadCapacityUnits": 0 }, "TableSizeBytes": 0, "TableName": "Music", "BillingModeSummary": { "BillingMode": "PAY_PER_REQUEST" }, "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397468.348 } }
重要

オンデマンドテーブルで DescribeTable を呼び出すと、読み込みキャパシティーユニットと書き込みキャパシティーユニットが 0 に設定されます。

例 3: DynamoDB Standard-Infrequent Access テーブルクラスを使用してテーブルを作成する

DynamoDB Standard-Infrequent Access テーブルクラスを使用して同じ Music テーブルを作成するには

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5 \ --table-class STANDARD_INFREQUENT_ACCESS

CreateTable オペレーションは、以下のようにテーブルにメタデータを返します。

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableClassSummary": { "LastUpdateDateTime": 1542397215.37, "TableClass": "STANDARD_INFREQUENT_ACCESS" }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

表の説明

テーブルの詳細を表示するには、DescribeTable オペレーションを使用します。テーブル名を入力する必要があります。DescribeTable の出力は CreateTable の出力と同じ形式です。このメタデータには、テーブル作成時のタイムスタンプ、キースキーマ、プロビジョンドスループット設定、推定サイズ、既存のすべてのセカンダリインデックスが含まれています。

重要

オンデマンドテーブルで DescribeTable を呼び出すと、読み込みキャパシティーユニットと書き込みキャパシティーユニットが 0 に設定されます。

aws dynamodb describe-table --table-name Music

TableStatusCREATING から ACTIVE に変わると、テーブルは使用できる状態になります。

注記

DescribeTable のリクエスト直後に CreateTable リクエストを発行した場合、DynamoDB によってエラー (ResourceNotFoundException) が返されることがあります。DescribeTable で結果整合性のあるクエリが使用されており、テーブルのメタデータがその時点で使用できない可能性があるためです。数秒間待ってから、再び DescribeTable リクエストを試してみてください。

請求目的上、DynamoDB ストレージコストには、100 バイトの項目あたりのオーバーヘッドが含まれます。(詳細は、DynamoDB 料金表を参照してください。) 各項目の余分な 100 バイトは、容量単位の計算または DescribeTable オペレーションでは使用されません。

テーブルの更新

UpdateTable オペレーションを使用すると、以下のいずれかを実行できます。

次の AWS CLI 例は、テーブルのプロビジョニングされたスループット設定を変更する方法を示しています。

aws dynamodb update-table --table-name Music \ --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
注記

UpdateTable リクエストを発行すると、テーブルのステータスが AVAILABLE から UPDATING に変わります。テーブルは UPDATING 中も全面的に利用できます。この処理が完了すると、テーブルのステータスが UPDATING から AVAILABLE に変わります。

次の AWS CLI 例は、テーブルの読み取り/書き込みキャパシティモードをオンデマンドモードに変更する方法を示しています。

aws dynamodb update-table --table-name Music \ --billing-mode PAY_PER_REQUEST

テーブルの削除

DeleteTable オペレーションで未使用のテーブルを削除できます。テーブルの削除は回復不可能な操作です。

次の AWS CLI 例は、テーブルを削除する方法を示しています。

aws dynamodb delete-table --table-name Music

DeleteTable リクエストを発行すると、テーブルのステータスが ACTIVE から DELETING に変わります。使用しているリソース(テーブルに保存されたデータ、ストリーム、テーブルのインデックスなど)によって、テーブルの削除には時間がかかる場合があります。

DeleteTable オペレーションが完了すると、テーブルは DynamoDB に存在しなくなります。

削除保護の使用

削除保護プロパティを使用すると、テーブルを誤って削除しないように保護できます。テーブルに対してこのプロパティを有効にすると、管理者が通常のテーブル管理オペレーションを行うときにテーブルが誤って削除されるのを防ぐことができます。これにより、通常業務が中断されるのを防ぐことができます。

テーブル所有者または権限のある管理者が、各テーブルの削除保護プロパティを制御します。すべてのテーブルで削除保護プロパティは、デフォルトでオフに設定されています。これには、グローバルレプリカやバックアップから復元されたテーブルが含まれます。テーブルの削除保護が無効になっている場合、Identity and Access Management (IAM) ポリシーによって承認されたすべてのユーザーがそのテーブルを削除できます。テーブルの削除保護が有効になっているときは、誰も削除できません。

この設定を変更するには、表の[Additional settings] (追加設定) に移動し、[Deletion Protection] (削除保護)パネルに移動して、[Enable delete protection] (削除保護を有効にする) を選択します。

削除保護プロパティは、DynamoDB コンソール、API、CLI/SDK、および AWS CloudFormation でサポートされています。CreateTable API は、テーブル作成時の削除保護プロパティをサポートしており、UpdateTable API は既存のテーブルに対する削除保護プロパティの変更をサポートしています。

注記
  • AWS アカウントが削除されても、テーブルを含むそのアカウントのすべてのデータは 90 日以内に削除されます。

  • DynamoDB は、テーブルを暗号化したカスタマーマネージドキーにアクセスできない場合、テーブルをアーカイブします。アーカイブには、テーブルのバックアップの作成と元のテーブルの削除が含まれます。

テーブル名のリスト化

ListTables オペレーションは、現在の AWS アカウントとリージョンの DynamoDB テーブルの名前を返します。

次の AWS CLI 例は、DynamoDB テーブル名を一覧表示する方法を示しています。

aws dynamodb list-tables

プロビジョニングされたスループットクォータの説明

DescribeLimits オペレーションは、現在の AWS アカウントとリージョンの現在の読み取りおよび書き込み容量クォータを返します。

次の AWS CLI 例は、現在のプロビジョニングされたスループットクォータを記述する方法を示しています。

aws dynamodb describe-limits

出力には、現在の AWS アカウントとリージョンの読み込みおよび書き込みキャパシティーユニットの上限クォータが表示されます。

これらのクォータの詳細およびクォータの引き上げをリクエストする方法については、「スループットのデフォルトクォータ」を参照してください。