新規のお客様への AWS Cloud9 の提供は終了しました。AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら
AWS Cloud9 の Amazon DynamoDB チュートリアル
このチュートリアルでは、Amazon DynamoDB と連携する AWS Cloud9 開発環境をセットアップできます。
DynamoDB は、フルマネージド型の NoSQL データベースサービスです。DynamoDB を使用して、任意の量のデータを保存および取得できるデータベーステーブルを作成し、任意のレベルのリクエストトラフィックを処理できます。DynamoDB によって自動的に、そのテーブルのデータとトラフィックが多数のサーバーに分散されます。サーバーの数は、指定のリクエスト容量と保存されているデータを処理するのに十分であるように選択されます。このような分散処理の間も、パフォーマンスは一定で、高速です。詳細については、AWS ウェブサイトで「Amazon DynamoDB
このサンプルを作成すると、AWS アカウントに課金される場合があります。これには、Amazon EC2 や DynamoDB などのサービスで発生する可能性がある料金も含まれます。詳細については、「Amazon EC2 料金表
その他の AWS データベースサービス詳細については、AWS のウェブサイトで「Amazon Relational Database Service (RDS)
前提条件
このサンプルを使用する前に、設定が次の要件を満たしていることを確認します。
-
既存の AWS Cloud9 EC2 開発環境が存在している必要があります。このサンプルは、Amazon Linux または Ubuntu Server を実行する Amazon EC2 インスタンスに接続された EC2 環境が既にあることを前提としています。別のタイプの環境またはオペレーティングシステムがある場合、このサンプルの指示を関連ツールを設定する必要がある場合があります。詳細については、「AWS Cloud9 で環境を作成する」を参照してください。
-
既存の環境に既に AWS Cloud9 IDE が開いています。環境を開くと、AWS Cloud9 によってその環境の IDE がウェブブラウザで開かれます。詳細については、「AWS Cloud9 で環境を開く」を参照してください。
ステップ 1: AWS CLI、AWS CloudShell、またはその両方を環境にインストールして設定する
このステップでは、AWS Cloud9 IDE を使用して AWS CLI、AWS CloudShell、またはその両方を環境にインストールして設定し、DynamoDB を操作するコマンドを実行できるようにします。次に、AWS CLI を使用してベーシックな DynamoDB コマンドを実行し、インストールと設定をテストします。
-
AWS CLI または AWS CloudShell の認証情報管理を設定して、AWS CLI、AWS CloudShell、またはその両方を環境にインストールするには、「AWS CLI および AWS CloudShell のサンプル」のステップ 1 および 2 に従います。AWS CLI、AWS CloudShell、またはその両方を既に環境にインストールして設定している場合は、再度実行する必要はありません。
-
環境のターミナルセッションから 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 IDE のターミナルセッションで、DynamoDB 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
はテーブル項目を一意に識別するために使用する属性を表します。このテーブルの各項目は、ISO-8601 形式の文字列として表される数字のID
属性とDate
属性の組み合わせで一意に識別されます。 -
--key-schema
はテーブルのキースキーマを表します。このテーブルにはCityID
とDate
の複合プライマリキーがあります。つまり、テーブルの各項目は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 つの項目を追加する
このステップでは、作成したテーブルに項目を追加します。
-
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 デベロッパーガイドのデータ型を参照してください。 -
テーブル名 (
--table-name
) と JSON 形式の項目のパス (--item
) を指定して DynamoDBput-item
コマンドを実行します。aws dynamodb put-item \ --table-name Weather \ --item file://weather-item.json
コマンドが成功すると、エラーなしで実行され、確認メッセージは表示されません。
-
テーブルの現在のコンテンツを確認するには、テーブルの名前 (
--table-name
) を指定して DynamoDBscan
コマンドを実行します。aws dynamodb scan --table-name Weather
コマンドが成功した場合は、テーブルおよび追加した項目に関する概要情報が表示されます。
ステップ 4: テーブルに複数の項目を追加する
このステップでは、Weather
テーブルに複数の項目を追加します。
-
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
オブジェクトを、テーブルと同じ名前の親配列に含める必要があります。 -
追加する JSON 形式の項目のパス (
--request-items
) を指定して DynamoDBbatch-write-item
コマンドを実行します。aws dynamodb batch-write-item \ --request-items file://more-weather-items.json
コマンドが成功すると、次のメッセージが表示され、項目が正常に追加されたことを確認できます。
{ "UnprocessedItems": {} }
-
テーブルの現在のコンテンツを確認するには、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 アカウントに追加料金が発生する可能性があります。
-
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
は、このインデックスを使用したテーブル検索に一致する各項目について、デフォルトで (ハッシュ属性と範囲属性に加えて) 取得する属性を定義します。このサンプルでは、State
、Conditions
、HighF
(Temperatures
の一部)、およびLowF
(Temperatures
のい一部) 属性 (およびCity
属性とDate
属性) は、一致する項目ごとに取得されます。 -
テーブルと同様に、グローバルセカンダリインデックスではプロビジョニングされたスループット設定を定義する必要があります。
-
IndexName
、KeySchema
、Projection
、およびProvisionedThroughput
設定がCreate
オブジェクトに含まれている必要があります。このオブジェクトは、次のステップで DynamoDBupdate-table
コマンドを実行して作成するグローバルセカンダリインデックスを定義します。
-
-
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
) を指定して DynamoDBdescribe-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
属性の値が 1
、Date
属性の値が 2017-04-12
の項目を取得する方法を説明します。
-
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" } }'
-
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" }'
-
-
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
属性の値が 3
、Date
属性の値が 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
テーブルで、CityID
が 3
であり Date
が 2017-04-13
または 2017-04-14
である項目を検索するように指定します。検出された各項目について、City
、State
、Date
、および 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
というフレーズを含むメッセージが表示されます。
環境を削除するには、「環境の削除」を参照してください。