の Amazon DynamoDB チュートリアル AWS Cloud9 - AWS Cloud9

AWS Cloud9 は、新しいお客様では利用できなくなりました。 AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら

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

の Amazon DynamoDB チュートリアル AWS Cloud9

このチュートリアルでは、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 ElastiCacheAmazon Redshift」を参照してください。 AWS ウェブサイトでAWS Database Migration Serviceも参照してください。

前提条件

このサンプルを使用する前に、設定が次の要件を満たしていることを確認します。

  • 既存の AWS Cloud9 EC2開発環境が必要です。このサンプルは、EC2Amazon EC2 Linux または Ubuntu サーバー。別のタイプの環境またはオペレーティングシステムがある場合、このサンプルの指示を関連ツールを設定する必要がある場合があります。詳細については、「での環境の作成 AWS Cloud9」を参照してください。

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

ステップ 1: AWS CLI、 AWS CloudShell、またはその両方を環境にインストールして設定する

このステップでは、 を使用して AWS Cloud9 IDE AWS CLI、、またはその両方を環境にインストールして設定し AWS CloudShell、コマンドを実行して DynamoDB とやり取りできるようにします。次に、 AWS CLI を使用してベーシックな DynamoDB コマンドを実行し、インストールと設定をテストします。

  1. AWS CLI または AWS CloudShell と の認証情報管理を設定して AWS CloudShell、 AWS CLI、、またはその両方を環境にインストールするには、 AWS CLI および AWS CloudShell サンプル のステップ 1 と 2 に従って、このトピックに戻ります。環境内に AWS CLI、、 AWS CloudShellまたはその両方を既にインストールして設定している場合は、再度インストールする必要はありません。

  2. 環境のターミナルセッションから DynamoDB list-tables コマンドを実行して、既存の DynamoDB テーブルがある場合は一覧表示することで、、 AWS CLI aws-shell、またはその両方のインストールと設定をテストします。新しいターミナルセッションを開始するには、メニューバーで、[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 IDEDynamoDB create-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 はテーブル項目を一意に識別するために使用する属性を表します。このテーブルの各項目は、数値ID属性と ISO-8601 形式の文字列として表される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 コマンドリファレンスの「dynamodb」を参照してください。

このコマンドが成功した場合、作成する新しいテーブルに関する概要情報が表示されます。テーブルが正常に作成されたことを確認するには、テーブルの名前 (--table-name) を指定して DynamoDB describe-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. DynamoDB put-item コマンドを実行し、テーブルの名前 (--table-name) と JSON形式の項目へのパス () を指定します--item

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

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

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

    aws dynamodb scan --table-name Weather

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

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

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

  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 つの項目を定義します。ただし、次のステップで DynamoDB batch-write-item コマンドを実行するときは、 を含むオブジェクト内の各Itemオブジェクトを含む JSON形式のPutRequestオブジェクトを指定する必要があります。次に、これらの PutRequest オブジェクトを、テーブルと同じ名前の親配列に含める必要があります。

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

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

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

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

    aws dynamodb scan --table-name Weather

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

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

DynamoDB scan コマンドを実行して項目に関する情報を取得するには、特にテーブルのサイズが大きくなった場合や、取得する情報のタイプが複雑な場合は、時間がかかる場合があります。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 オブジェクトに含まれている必要があります。このオブジェクトは、次のステップで DynamoDB update-table コマンドを実行して作成するグローバルセカンダリインデックスを定義します。

  2. DynamoDB update-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) を指定して DynamoDB describe-table コマンドを実行します。

    aws dynamodb describe-table --table-name Weather

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

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

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

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

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

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

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

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

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

  1. DynamoDB get-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. DynamoDB scan コマンドを実行するには、以下を指定します。

    • テーブルの名前 (--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. DynamoDB query コマンドを実行するには、以下を指定します。

    • テーブルの名前 (--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 項目のみであることに注目してください。

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

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

取得する項目を記述するファイルへのパス (--request-items) を指定して、DynamoDB batch-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" } } }

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

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

DynamoDB scan コマンドを実行し、以下を指定します。

  • テーブルの名前 (--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 という名前の都市の予測天気を取得する方法を説明します。

DynamoDB query コマンドを実行し、以下を指定します。

  • テーブルの名前 (--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 アカウントへの継続的な料金が発生するのを防ぐには、テーブルを削除する必要があります。テーブルを削除すると、グローバルセカンダリインデックスも削除されます。環境も削除する必要があります。

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

aws dynamodb delete-table --table-name Weather

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

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

aws dynamodb describe-table --table-name Weather

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

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