AWS Cloud9
ユーザーガイド

AWS Cloud9 の Amazon DynamoDB サンプル

このサンプルでは、Amazon DynamoDB を操作するように AWS Cloud9 開発環境 を設定できます。

DynamoDB は、完全マネージド型の NoSQL データベースサービスです。DynamoDB を使用すると、任意の量のデータを格納および取得できるデータベーステーブルを作成し、任意のレベルのリクエストトラフィックを処理できます。DynamoDB によって自動的に、そのテーブルのデータとトラフィックが多数のサーバーに分散されます。サーバーの数は、指定のリクエスト容量と保存されているデータを処理するのに十分であるように選択されます。このような分散処理の間も、パフォーマンスは一定で、高速です。詳細については、AWS ウェブサイトで「Amazon DynamoDB」を参照してください。

このサンプルを作成すると、AWS アカウントに課金される場合があります。これには、Amazon EC2 や DynamoDB などのサービスで発生する可能性がある料金も含まれます。詳細については、「Amazon EC2 料金表」および「Amazon DynamoDB 料金表」を参照してください。

その他の AWS のデータベースサービスの詳細については、AWS のウェブサイトで「Amazon Relational Database Service (RDS)」、「Amazon ElastiCache」、「Amazon Redshift」を参照してください。AWS ウェブサイトの「AWS Database Migration Service」も参照してください。

前提条件

このサンプルを使用する前に、以下の前提条件を満たしていることを確認します。

  • 既存の AWS Cloud9 EC2 開発環境 がある。 このサンプルでは、Amazon Linux または Ubuntu Server を実行する Amazon EC2 インスタンスに接続された EC2 環境 が既にあることを前提としています。別のタイプまたはオペレーティングシステムの 環境 がある場合、このサンプルの手順を調整して関連ツールをセットアップする必要がある場合があります。詳細については、「AWS Cloud9 で 環境 を作成する」を参照してください。

  • 既存の環境に既に開いている AWS Cloud9 IDE がある。 環境 を開くと、AWS Cloud9 によってその 環境 の IDE がウェブブラウザで開かれます。詳細については、「AWS Cloud9 で環境を開く」を参照してください。

ステップ 1: AWS CLI、aws-shell、またはその両方を 環境 にインストールおよび設定する

このステップでは、AWS Cloud9 IDE を使用して、AWS CLI、aws-shell、またはその両方を 環境 にインストールして設定し、DynamoDB を操作するコマンドを実行できるようにします。次に、AWS CLI を使用して基本的な DynamoDB コマンドを実行し、インストールと設定をテストします。

  1. AWS CLI または aws-shell の認証情報管理をセットアップして AWS CLI、aws-shell、またはその両方を 環境 にインストールするには、「AWS CLI および aws-shell のサンプル」のステップ 1 および 2 に従って手順を完了してから、このトピックに戻ります。AWS CLI、aws-shell、またはその両方が既に 環境 にインストールおよび設定されている場合は、再度実行する必要はありません。

  2. AWS CLI、aws-shell、またはその両方のインストールと設定をテストするには、環境 のターミナルセッションから DynamoDB list-tables コマンドを実行して、既存の DynamoDB テーブルを一覧表示します (テーブルが存在する場合)。新しいターミナルセッションを開始するには、メニューバーで、[Windows (ウィンドウ)]、[New Terminal (新しいターミナル)] の順に選択します。

    aws dynamodb list-tables # For the AWS CLI. dynamodb list-tables # For the aws-shell.

    注記

    このサンプルでは、aws-shell を使用している場合に aws で始まる各コマンドの aws を省略します。aws-shell を開始するには、aws-shell コマンドを実行します。aws-shell の使用を停止するには、.exit コマンドまたは .quit コマンドを実行します。

    このコマンドが正常に実行されると、既存の DynamoDB テーブル (ある場合) のリストが TableNames配列として出力されます。まだ DynamoDB テーブルがない場合、TableNames 配列は空になります。

    { "TableNames": [] }

    DynamoDB テーブルがある場合は、TableNames 配列にテーブル名のリストが表示されます。

ステップ 2: テーブルを作成する

このステップでは、DynamoDB でテーブルを作成してテーブルの名前、レイアウト、シンプルプライマリキー、データスループット設定を指定します。

Weather というこのサンプルテーブルには、アメリカのいくつかの都市の天気予報に関する情報が含まれています。このテーブルには、以下のタイプの情報 (DynamoDB では個々の情報は属性と呼ばれます) が保持されます。

  • 必須の一意の都市 ID (CityID)

  • 必須の予報日 (Date)

  • 都市名 (City)

  • 州名 (State)

  • 予測天気 (Conditions)

  • 予測温度 (Temperatures)

    • 予測最高気温、華氏 (HighF)

    • 予測最低気温、華氏 (LowF)

テーブルを作成するには、AWS Cloud9 IDE のターミナルセッションで、DynamoDBcreate-table コマンドを実行します。

aws dynamodb create-table \ --table-name Weather \ --attribute-definitions \ AttributeName=CityID,AttributeType=N AttributeName=Date,AttributeType=S \ --key-schema \ AttributeName=CityID,KeyType=HASH AttributeName=Date,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5

このコマンドで:

  • --table-name はテーブル名を表します (このサンプルでは Weather)。テーブル名は AWS アカウントの AWS リージョンごとに一意である必要があります。

  • --attribute-definitions はテーブル項目を一意に識別するために使用する属性を表します。このテーブルの各項目は、ISO-8601 形式の文字列として表される数字の ID 属性と Date 属性の組み合わせで一意に識別されます。

  • --key-schema はテーブルのキースキーマを表します。このテーブルには CityIDDate の複合プライマリキーがあります。つまり、テーブルの各項目は CityID 属性値と Date 属性値を持つ必要がありますが、テーブル内で CityID 属性値と Date 属性値が両方とも同じ 2 つの項目が存在することはできません。

  • --provisioned-throughput はテーブルの読み取り/書き込みキャパシティーを表します。DynamoDB では、サイズが 4 KB までの項目について 1 秒あたり最大 5 つの強力な整合性のある読み込み、またはサイズが 4 KB までの項目について 1 秒あたり最大 5 つの結果的に整合性のある読み込みが許可されます。また、DynamoDB ではサイズが 1 KB までの項目について 1 秒あたり最大 5 回の書き込みが許可されます。

    注記

    プロビジョニングされたスループットの設定を引き上げると、AWS アカウントに追加料金が発生する可能性があります。

    このコマンドおよび他の DynamoDB コマンドの詳細については、AWS CLI Command Reference の「dynamodb」を参照してください。

このコマンドが成功した場合、作成する新しいテーブルに関する概要情報が表示されます。テーブルが正常に作成されたことを確認するには、テーブル名 (--table-name) を指定して DynamoDBdescribe-table コマンドを実行します。

aws dynamodb describe-table --table-name Weather

テーブルが正常に作成されると、TableStatus の値が CREATING から ACTIVE に変わります。テーブルが正常に作成されてからこのステップの先に進んでください。

ステップ 3: テーブルに 1 つの項目を追加する

このステップでは、作成したテーブルに項目を追加します。

  1. 次の内容で、weather-item.json というファイルを作成します。新規ファイルを作成するには、メニューバーで [File (ファイル)]、[New File (新規ファイル)] の順に選択します。ファイルを保存するには、[File (ファイル)]、[Save (保存)] の順に選択します。

    { "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" }, "City": { "S": "Seattle" }, "State": { "S": "WA" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "59" }, "LowF": { "N": "46" } } } }

    このコードでは、N は数値である属性値です。S は文字列の属性値です。M はマップ属性であり、一連の属性と値のペアです。項目を操作する場合は常に属性のデータ型を指定する必要があります。その他の使用可能な属性のデータ型については、Amazon DynamoDB 開発者ガイド の「データ型」を参照してください。

  2. テーブル名 (--table-name) と JSON 形式の項目のパス (--item) を指定して DynamoDBput-item コマンドを実行します。

    aws dynamodb put-item \ --table-name Weather \ --item file://weather-item.json

    コマンドが成功すると、エラーなしで実行され、確認メッセージは表示されません。

  3. テーブルの現在のコンテンツを確認するには、テーブル名 (--table-name) を指定して DynamoDBscan コマンドを実行します。

    aws dynamodb scan --table-name Weather

    コマンドが成功した場合は、テーブルおよび追加した項目に関する概要情報が表示されます。

ステップ 4: テーブルに複数の項目を追加する

このステップでは、Customers テーブルに複数の項目を追加します。

  1. 次の内容で、more-weather-items.json というファイルを作成します。

    { "Weather": [ { "PutRequest": { "Item": { "CityID": { "N": "1" }, "Date": { "S": "2017-04-13" }, "City": { "S": "Seattle" }, "State": { "S": "WA" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "52" }, "LowF": { "N": "43" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "1" }, "Date": { "S": "2017-04-14" }, "City": { "S": "Seattle" }, "State": { "S": "WA" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "49" }, "LowF": { "N": "43" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "2" }, "Date": { "S": "2017-04-12" }, "City": { "S": "Portland" }, "State": { "S": "OR" }, "Conditions": { "S": "Thunderstorms" }, "Temperatures": { "M": { "HighF": { "N": "59" }, "LowF": { "N": "43" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "2" }, "Date": { "S": "2017-04-13" }, "City": { "S": "Portland" }, "State": { "S": "OR" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "51" }, "LowF": { "N": "41" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "2" }, "Date": { "S": "2017-04-14" }, "City": { "S": "Portland" }, "State": { "S": "OR" }, "Conditions": { "S": "Rain Showers" }, "Temperatures": { "M": { "HighF": { "N": "49" }, "LowF": { "N": "39" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "3" }, "Date": { "S": "2017-04-12" }, "City": { "S": "Portland" }, "State": { "S": "ME" }, "Conditions": { "S": "Rain" }, "Temperatures": { "M": { "HighF": { "N": "59" }, "LowF": { "N": "40" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "3" }, "Date": { "S": "2017-04-13" }, "City": { "S": "Portland" }, "State": { "S": "ME" }, "Conditions": { "S": "Partly Sunny" }, "Temperatures": { "M": { "HighF": { "N": "54" }, "LowF": { "N": "37" } } } } } }, { "PutRequest": { "Item": { "CityID": { "N": "3" }, "Date": { "S": "2017-04-14" }, "City": { "S": "Portland" }, "State": { "S": "ME" }, "Conditions": { "S": "Mostly Sunny" }, "Temperatures": { "M": { "HighF": { "N": "53" }, "LowF": { "N": "37" } } } } } } ] }

    このコードでは、前のステップで定義された単一の項目と同様に、8 つの Item オブジェクトがテーブルに追加する 8 つの項目を定義します。ただし、次のステップで DynamoDBbatch-write-item コマンドを実行する際に、JSON 形式のオブジェクトを指定する必要があります。これにより、各 Item オブジェクトが PutRequest オブジェクトに含められます。次に、これらの PutRequest オブジェクトを、テーブルと同じ名前の親配列に含める必要があります。

  2. 追加する JSON 形式の項目へのパス (--request-items) を指定して DynamoDBbatch-write-item コマンドを実行します。

    aws dynamodb batch-write-item \ --request-items file://more-weather-items.json

    コマンドが成功すると、次のメッセージが表示され、項目が正常に追加されたことを確認できます。

    { "UnprocessedItems": {} }
  3. テーブルの現在のコンテンツを確認するには、DynamoDBscan コマンドをもう一度実行します。

    aws dynamodb scan --table-name Weather

    コマンドが成功した場合は、9 件の項目が表示されます。

ステップ 5: グローバルセカンダリインデックスを作成する

DynamoDBscan コマンドを実行して項目に関する情報を取得するには、特にテーブルのサイズが大きくなった場合や、取得する情報のタイプが複雑な場合は、時間がかかる場合があります。1 つ以上のセカンダリインデックスを作成して、処理速度を上げ情報を簡単に取得できるようにします。このステップでは、これを行うために DynamoDB がサポートしている 2 種類のセカンダリインデックスについて学習します。これらは、ローカルセカンダリインデックスおよびグローバルセカンダリインデックスと呼ばれます。ここではグローバルセカンダリインデックスを作成します。

これらのセカンダリインデックスの種類を理解するには、最初にテーブルの項目を一意に識別するプライマリキーの詳細について理解する必要があります。DynamoDB では、シンプルプライマリキーまたは複合プライマリキーがサポートされています。シンプルプライマリキーには単一の属性があり、その属性値はテーブルの項目ごとに一意である必要があります。この属性は、パーティションキー (またはハッシュ属性) とも呼ばれ、DynamoDB はこれを使用して項目をパーティション化し、アクセスを高速化します。また、テーブルで 2 つの属性を組み合わせた複合プライマリキーを持つこともできます。最初の属性はパーティションキーであり、2 番目の属性はソートキー (範囲属性ともいいます) です。複合プライマリキーがあるテーブルの場合、2 つの項目が同じパーティションキー値を持つことはできますが、ソートキー値も同じにはできません。Weather テーブルには複合プライマリキーがあります。

ローカルセカンダリインデックスは、テーブル自体と同じパーティションキーを持ちますが、このインデックスタイプでは異なるソートキーを持つことができます。グローバルセカンダリインデックスは、テーブル自体とはどちらも異なるパーティションキーとソートキーを持つことができます。

たとえば、Weather 項目にアクセスするプライマリキーに CityID を既に使用しているとします。Weather 項目に State を使用してアクセスするには、パーティションキー CityID (テーブル自体と同じである必要があります) とソートキー State を持つローカルセカンダリインデックスを作成できます。Weather 項目に City を使用してアクセスするには、パーティションキー City とソートキー Date を持つグローバルセカンダリインデックスを作成できます。

ローカルセカンダリインデックスは、テーブルを作成するときにのみ作成できます。Weather テーブルが既に存在するため、そこにローカルセカンダリインデックスを追加することはできません。ただし、グローバルセカンダリインデックスを追加することはできます。1 つ追加してみましょう。

注記

セカンダリインデックスを作成すると、AWS アカウントに追加料金が発生する可能性があります。

  1. 次の内容で、weather-global-index.json というファイルを作成します。

    [ { "Create": { "IndexName": "weather-global-index", "KeySchema": [ { "AttributeName": "City", "KeyType": "HASH" }, { "AttributeName": "Date", "KeyType": "RANGE" } ], "Projection": { "ProjectionType": "INCLUDE", "NonKeyAttributes": [ "State", "Conditions", "Temperatures" ] }, "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 } } } ]

    このコードでは:

    • グローバルセカンダリインデックスの名前は weather-global-index です。

    • City 属性はパーティションキー (ハッシュ属性)、Date 属性はソートキー (範囲属性) です。

    • Projection は、このインデックスを使用したテーブル検索に一致する各項目について、デフォルトで (ハッシュ属性と範囲属性に加えて) 取得する属性を定義します。このサンプルでは、StateConditionsHighF (Temperatures の一部)、および LowF (Temperatures のい一部) 属性 (および City 属性と Date 属性) は、一致する項目ごとに取得されます。

    • テーブルと同様に、グローバルセカンダリインデックスではプロビジョニングされたスループット設定を定義する必要があります。

    • IndexNameKeySchemaProjection、および ProvisionedThroughput 設定が Create オブジェクトに含まれている必要があります。このオブジェクトは、次のステップで DynamoDBupdate-table コマンドを実行して作成するグローバルセカンダリインデックスを定義します。

  2. DynamoDBupdate-table コマンドを実行します。

    aws dynamodb update-table \ --table-name Weather \ --attribute-definitions \ AttributeName=City,AttributeType=S AttributeName=Date,AttributeType=S \ --global-secondary-index-updates file://weather-global-index.json

    このコマンドで:

    • --table-name は更新するテーブルの名前です。

    • --attribute-definitions はインデックスに含める属性です。パーティションキーは常にリストの最初に表示され、ソートキーは常にリストの 2 番目に表示されます。

    • --global-secondary-index-updates はグローバルセカンダリインデックスを定義するファイルへのパスです。

    このコマンドが成功した場合、作成する新しいグローバルセカンダリインデックスに関する概要情報が表示されます。グローバルセカンダリインデックスが正常に作成されたことを確認するには、テーブル名 (--table-name) を指定して DynamoDBdescribe-table コマンドを実行します。

    aws dynamodb describe-table --table-name Weather

    グローバルセカンダリインデックスが正常に作成された場合、TableStatus の値が UPDATING から ACTIVE に変わり、IndexStatus の値が CREATING から ACTIVE に変わります。グローバルセカンダリインデックスが正常に作成されてからこのステップの先に進んでください。これには数分間かかる場合があります。

ステップ 6: テーブルから項目を取得する

テーブルから項目を取得する方法は複数あります。このステップでは、テーブルのプライマリキー、テーブルのその他の属性、およびグローバルセカンダリインデックスをそれぞれ使用して項目を取得します。

項目のプライマリキーの値に基づいてテーブルから単一の項目を取得するには

項目のプライマリキーの値がわかっている場合は、DynamoDB コマンド get-itemscan、または query を実行して一致する項目を取得できます。各コマンドの主な相違点は次のとおりです。

  • get-item は、指定されたプライマリキーを持つ項目の属性のセットを返します。

  • scan は、テーブルまたはセカンダリインデックスの各項目にアクセスして、1 つ以上の項目または項目属性を返します。

  • query はプライマリキー値に基づいて項目を探します。複合プライマリキー (パーティションキーとソートキー) のあるテーブルまたはセカンダリインデックスをクエリできます。

このサンプルで、これらのコマンドをそれぞれ使用して、CityID 属性の値が 1Date 属性の値が 2017-04-12 の項目を取得する方法を説明します。

  1. DynamoDBget-item コマンドを実行するには、テーブルの名前 (--table-name)、プライマリキーの値 (--key)、および表示する項目の属性値 (--projection-expression) を指定します。Date は DynamoDB で予約されたキーワードであるため、Date 属性値のエイリアス (--expression-attribute-names) も指定する必要があります (State も予約されたキーワードであり、このためのエイリアスは後のステップで指定します)。

    aws dynamodb get-item \ --table-name Weather \ --key '{ "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" } }' \ --projection-expression \ "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \ --expression-attribute-names '{ "#D": "Date" }'

    このコマンドや他のコマンドで、項目の属性をすべて表示するには、--projection-expression を含めません。このサンプルでは、--projection-expression を含めていないため、--expression-attribute-names を含める必要もありません。

    aws dynamodb get-item \ --table-name Weather \ --key '{ "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" } }'
  2. DynamoDBscan コマンドを実行するには、以下を指定します。

    • テーブルの名前 (--table-name)。

    • 実行する検索 (--filter-expression)。

    • 使用する検索基準 (--expression-attribute-values)。

    • 一致した項目で表示する属性の種類 (--select)。

    • 表示する項目の属性値 (--projection-expression)。

    • 属性に DynamoDB の予約済みキーワードが使用されている場合、その属性のエイリアス (--expression-attribute-names)。

    aws dynamodb scan \ --table-name Weather \ --filter-expression "(CityID = :cityID) and (#D = :date)" \ --expression-attribute-values \ '{ ":cityID": { "N": "1" }, ":date": { "S": "2017-04-12" } }' \ --select SPECIFIC_ATTRIBUTES \ --projection-expression \ "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \ --expression-attribute-names '{ "#D": "Date" }'
  3. DynamoDBquery コマンドを実行するには、以下を指定します。

    • テーブルの名前 (--table-name)。

    • 実行する検索 (--key-condition-expression)。

    • 検索で使用する属性値 (--expression-attribute-values)。

    • 一致した項目で表示する属性の種類 (--select)。

    • 表示する項目の属性値 (--projection-expression)。

    • 属性に DynamoDB の予約済みキーワードが使用されている場合、その属性のエイリアス (--expression-attribute-names)。

    aws dynamodb query \ --table-name Weather \ --key-condition-expression "(CityID = :cityID) and (#D = :date)" \ --expression-attribute-values \ '{ ":cityID": { "N": "1" }, ":date": { "S": "2017-04-12" } }' \ --select SPECIFIC_ATTRIBUTES \ --projection-expression \ "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \ --expression-attribute-names '{ "#D": "Date" }'

    結果を取得するためにスキャンする必要がある項目数が、scan コマンドでは 9 項目すべてであるのに対して query コマンドでは 1 項目のみであることに注目してください。

項目のプライマリキーの値に基づいてテーブルから複数の項目を取得するには

項目のプライマリキー値がわかっている場合は、DynamoDBbatch-get-item コマンドを実行して一致する項目を取得できます。このサンプルで、CityID 属性の値が 3Date 属性の値が 2017-04-13 または 2017-04-14 の項目を取得する方法を説明します。

取得する項目を記述するファイルへのパス (--request-items) を指定して、DynamoDBbatch-get-item コマンドを実行します。

aws dynamodb batch-get-item --request-items file://batch-get-item.json

このサンプルでは、batch-get-item.json ファイルのコードは、Weather テーブルで、CityID3 であり Date2017-04-13 または 2017-04-14 である項目を検索するように指定します。検出された各項目について、CityStateDate、および HighF (Temperatures の一部) の属性値が表示されます (存在する場合)。

{ "Weather" : { "Keys": [ { "CityID": { "N": "3" }, "Date": { "S": "2017-04-13" } }, { "CityID": { "N": "3" }, "Date": { "S": "2017-04-14" } } ], "ProjectionExpression": "City, #S, #D, Temperatures.HighF", "ExpressionAttributeNames": { "#S": "State", "#D": "Date" } } }

一致するすべての項目をテーブルから取得するには

テーブルの属性値について一部でもわかっていることがあれば、DynamoDBscan コマンドを実行して一致する項目を取得できます。このサンプルで、Conditions 属性の値に Sunny が含まれ、HighF 属性の値 (Temperatures の一部) が 53 より大きい日を取得する方法を説明します。

次のように指定して DynamoDBscan コマンドを実行します。

  • テーブルの名前 (--table-name)。

  • 実行する検索 (--filter-expression)。

  • 使用する検索基準 (--expression-attribute-values)。

  • 一致した項目で表示する属性の種類 (--select)。

  • 表示する項目の属性値 (--projection-expression)。

  • 属性に DynamoDB の予約済みキーワードが使用されている場合、その属性のエイリアス (--expression-attribute-names)。

aws dynamodb scan \ --table-name Weather \ --filter-expression \ "(contains (Conditions, :sun)) and (Temperatures.HighF > :h)" \ --expression-attribute-values \ '{ ":sun": { "S" : "Sunny" }, ":h": { "N" : "53" } }' \ --select SPECIFIC_ATTRIBUTES \ --projection-expression "City, #S, #D, Conditions, Temperatures.HighF" \ --expression-attribute-names '{ "#S": "State", "#D": "Date" }'

一致するすべての項目をグローバルセカンダリインデックスから取得するには

グローバルセカンダリインデックスを使用して検索するには、DynamoDBquery コマンドを使用します。このサンプルで、weather-global-index セカンダリインデックスを使用して、日付が Portland および 2017-04-13 の、2017-04-14 という名前の都市の予測天気を取得する方法を説明します。

次のように指定して DynamoDBquery コマンドを実行します。

  • テーブルの名前 (--table-name)。

  • グローバルセカンダリインデックスの名前 (--index-name)。

  • 実行する検索 (--key-condition-expression)。

  • 検索で使用する属性値 (--expression-attribute-values)。

  • 一致した項目で表示する属性の種類 (--select)。

  • 属性に DynamoDB の予約済みキーワードが使用されている場合、その属性のエイリアス (--expression-attribute-names)。

aws dynamodb query \ --table-name Weather \ --index-name weather-global-index \ --key-condition-expression "(City = :city) and (#D between :date1 and :date2)" \ --expression-attribute-values \ '{ ":city": { "S" : "Portland" }, ":date1": { "S": "2017-04-13" }, ":date2": { "S": "2017-04-14" } }' \ --select SPECIFIC_ATTRIBUTES \ --projection-expression "City, #S, #D, Conditions, Temperatures.HighF" \ --expression-attribute-names '{ "#S": "State", "#D": "Date" }'

ステップ 7: クリーンアップ

このサンプルを使用し終わった後 AWS アカウントで料金が継続的に発生するのを防ぐには、テーブルを削除する必要があります。テーブルを削除すると、グローバルセカンダリインデックスも削除されます。環境 も削除する必要があります。

テーブルを削除するには、テーブル名 (--table-name) を指定して DynamoDBdelete-table コマンドを実行します。

aws dynamodb delete-table --table-name Weather

コマンドが成功した場合は、テーブルに関する情報が表示され、そこで TableStatus 値が DELETING になっています。

テーブルが正常に削除されたことを確認するには、テーブル名 (--table-name) を指定して DynamoDBdescribe-table コマンドを実行します。

aws dynamodb describe-table --table-name Weather

テーブルが正常に削除された場合は、Requested resource not found というフレーズを含むメッセージが表示されます。

環境 を削除するには、「環境の削除」を参照してください。