はじめに
最近のアップデートで、S3に上げたファイルをDynamoDBテーブルにインポートできるようになりました。
DynamoDBからS3のエクスポートはすでに対応しているようです。
試してみる
まず、S3にデータをアップロードします。
対応しているファイルタイプは「json ,Amazon Ion ,csv」の三種類です。
今回は、DynamoDBドキュメントのサンプルデータを参考に、いくつかjsonファイルを作成しました。
複数Itemを同一のjsonファイルに記載する方法に少しハマりました。カンマで区切らなくて良いようです。
jsonでの記載例
{
"Item": {
"Id": {
"N": "101"
},
"Title": {
"S": "Book 101 Title"
},
"ISBN": {
"S": "111-1111111111"
},
"Authors": {
"L": [
{
"S": "Author1"
}
]
},
"Price": {
"N": "2"
},
"Dimensions": {
"S": "8.5 x 11.0 x 0.5"
},
"PageCount": {
"N": "500"
},
"InPublication": {
"BOOL": true
},
"ProductCategory": {
"S": "Book"
}
}
}
{
"Item": {
"Id": {
"N": "102"
},
"Title": {
"S": "Book 102 Title"
},
"ISBN": {
"S": "222-2222222222"
},
"Authors": {
"L": [
{
"S": "Author1"
},
{
"S": "Author2"
}
]
},
"Price": {
"N": "20"
},
"Dimensions": {
"S": "8.5 x 11.0 x 0.8"
},
"PageCount": {
"N": "600"
},
"InPublication": {
"BOOL": true
},
"ProductCategory": {
"S": "Book"
}
}
}
{
"Item": {
"Id": {
"N": "103"
},
"Title": {
"S": "Book 103 Title"
},
"ISBN": {
"S": "333-3333333333"
},
"Authors": {
"L": [
{
"S": "Author1"
},
{
"S": "Author2"
}
]
},
"Price": {
"N": "2000"
},
"Dimensions": {
"S": "8.5 x 11.0 x 1.5"
},
"PageCount": {
"N": "600"
},
"InPublication": {
"BOOL": false
},
"ProductCategory": {
"S": "Book"
}
}
}
作成後、S3にアップロードします。
マネコン上からインポートを行います。
既存のテーブルにインポートすることはできず、新規でテーブルを作成する必要がありそうです。
後は、テーブル名とパーティションキー(必要があればソートキーも)を入力し、インポートを実行します。
キャパシティーモード等々の設定はカスタマイズすることもできます。今回はデフォルトで実行しました。
インポートジョブ完了後、確認するとテーブルが作成されており、データも入ってきていました。
まとめ
(新規テーブルの作成のみですが、)S3からDynamoDBへのインポートがすこぶる簡単になりました。
アカウント間でテーブルの移行を行いたい場合などに使えそうだと思います。
参考