AWSにDynamoテーブルをロードするために使用するjsonファイルがあります。 AWSコンソールには、一度に1つのレコードを作成するオプションしかありません。良くない: )
基本的に、私の.JSONファイルは、テーブルの各列のデータを保持するオブジェクトの配列です。
{
"Column1": "Column1 Value",
"Column2": "Column2 Value",
"Column3": "Column3 Value",
"Column4": "Column4 Value",
},
AWSコンソールを介してこれを実行し、jsonファイルをインポートする方法はありますか、またはAWS JS SDKを使用してプログラムでこれを行う必要がありますか?
APIを使用する必要はありません。代わりにAWS-CLIを使用できます。
aws dynamodb put-item --table-name MusicCollection --item file://item.json --return-consumed-capacity TOTAL
ただし、JSON形式を少し調整する必要がある場合があります。
その他の例とドキュメントはこちら:
https://docs.aws.Amazon.com/cli/latest/reference/dynamodb/put-item.html
E.J.からの回答Brenamanは単一のレコードとしては正しいように見えますが、元の質問(レコードの配列を追加する必要がある)には答えません。
このため、 command は
aws dynamodb batch-write-item --request-items file://aws-requests.json
ただし、次のように変更したJSONファイルを作成する必要があります(データ型を指定するDynamoDB JSONに注意してください)。
{
"YourTableName": [
{
"PutRequest": {
"Item": {
"Column1": { "S": "Column1 Value" },
"Column2": { "S": "Column2 Value" },
"Column3": { "S": "Column3 Value" },
"Column4": { "S": "Column4 Value" },
}
}
},
{
"PutRequest": {
"Item": {
"Column1": { "S": "Column1 Value" },
"Column2": { "S": "Column2 Value" },
"Column3": { "S": "Column3 Value" },
"Column4": { "S": "Column4 Value" },
}
}
}
]
}
pythonでboto3を使用してデータをロードしました
import boto3
import json
dynamodbclient=boto3.resource('dynamodb')
sample_table = dynamodbclient.Table('ec2metadata')
with open('/samplepath/spotec2interruptionevent.json', 'r') as myfile:
data=myfile.read()
# parse file
obj = json.loads(data)
#instance_id and cluster_id is the Key in dynamodb table
response=sample_table.put_item(
Item={
'instance_id': instanceId,
'cluster_id': clusterId,
'event':obj
}
)
JavaScriptのサンプルは次のとおりです。