ポイント: コマンドラインとPythonを使用してAmazon DynamoDBにデータを追加するための手順が提供されており、ローカルのセットアップ、テーブルの作成、およびAWS CLIとBoto3を使用したデータの挿入が詳述されています。
- 料金を避けるためにDynamoDBをローカルでダウンロードしてセットアップします。
- AWS CLIを使用してテーブルを作成し、データを追加します。
- データ操作を簡単にするためにPythonのBoto3ライブラリを利用します。
この記事では、コマンドラインとPythonを使用してAmazon DynamoDBにデータを追加する方法を示します。この製品が初めての方は、私たちのDynamoDBの紹介をご覧ください。
DynamoDBのセットアップ
まず、DynamoDBをダウンロードします。プロジェクトをクラウドにプッシュする準備ができるまで、サブスクリプション料金を支払わずにローカルで実行します。(Amazonはこれがデータベースの使用方法だと述べています。)
DynamoDBを解凍し、次のように起動します:
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
Amazon Boto3 APIをインストールします。Boto3は、Amazonのすべての製品、S3、DynamoDBなどへのPythonインターフェイスです。
pip install boto3
次に、いくつかのデータを作成します。これは財務取引になります。キーはtransNoなので、expensesテーブルを作成します。まずAWS CLIクライアントをインストールする必要があります。
ローカルでDynamoDBを使用していることを示すために、endpoint-url を使用します。
aws dynamodb create-table \
--table-name expenses \
--attribute-definitions AttributeName=transNo,AttributeType=N \
--key-schema AttributeName=transNo,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--endpoint-url http://localhost:8000
Pythonシェルを開き、テーブルが存在するか確認します。
次のように応答するはずです:
import boto3
boto3.resource('dynamodb', endpoint_url='http://localhost:8000').Table('expenses')
次のように応答するはずです:
dynamodb.Table(name='expenses')
コマンドラインからデータを追加
以下に、トランザクション番号と日付だけでトランザクションを追加します。NはtransNoが数値であることを意味し Sは日付が文字列であることを意味します。(DynamoDBはこのISO-8601日付形式を認識するため、その属性を日付のように扱うことができます。)
重要な注意点: put-itemを使用するときは、JSON内の値とともにデータ型(N、数値、S、文字列など)を指定する必要があります。数値も引用符で囲みます。Boto3を使用する場合は、その必要はありません。
aws dynamodb put-item \
--table-name expenses \
--item '{
"transNo": {"N": "1" },
"date": {"S": "2020-03-19"}
}' \
--return-consumed-capacity TOTAL --endpoint-url http://localhost:8000
Python Boto3でデータを追加
以下のコードは自己説明的で、次の追加の注意があります。
- 辞書とJSONはPythonを使用するときも同じです。したがって、辞書を使用してJSONを構築する方がはるかに簡単です。put_itemメソッドは辞書またはJSONを受け入れます。
- Boto3は浮動小数点数を受け入れません。代わりにDecimalを使用してください。
- 金額については、ランダムな整数randint()を選択し、random()で掛け算します。これは1未満です(財務的な金額は通常1より大きいでしょう)。
私たちがDynamDBに渡すデータは次のようになります:
{'transNo': 87049131615, 'amount': Decimal('373.5446821689723'), 'transDate': '2020-03-19'}
完全なコード
ここに完全なコードがあります:
import boto3
import random
from decimal import *
def load_transactions(dynamodb):
table = dynamodb.Table('expenses')
trans = {}
trans['transNo'] = random.randint(100000, 99999999999)
trans['amount'] = Decimal(str(random.random()*random.randint(10,1000)))
trans['transDate'] = '2020-03-19'
print(trans)
table.put_item(Item=trans)
if __name__ == '__main__':
dynamodb = boto3.resource('dynamodb', endpoint_url = "http://localhost:8000")
load_transactions(dynamodb)
追加リソース
このトピックについて詳しくは、BMCビッグデータと機械学習ブログを探索するか、これらのリソースをチェックしてください:
- AWSガイド、AWSに関する15件以上の記事とチュートリアル
- AWSのデータベース: マルチクラウド環境でのクラウドデータベースの位置付け
- データベースの信頼性の紹介
DynamoDBガイド
これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。