AWS Lambda(Python3.6)からDynamoDBのデータをバッチ登録する
AWS Lambda(Python3.6)からDynamoDBのデータをbatch_writerメソッドを使用してバッチ登録してみます。
import boto3;
def lambda_handler(event, context):
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users2')
with table.batch_writer() as batch:
batch.put_item(
Item={
'user-name': 'test',
'emp-id': 3
}
)
batch.put_item(
Item={
'user-name': 'test',
'emp-id': 4
}
)
このbatch.put_itemを繰り返し記述することで大量データを高速に登録することができます。
但しコード量が長くなってしまうので、for-in文を使用してループします。
以下、100件登録する例です。
import boto3;
def lambda_handler(event, context):
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users2')
with table.batch_writer() as batch:
for i in range(100): # 100回ループする
batch.put_item(
Item={
'user-name': 'test',
'emp-id': i
}
)
これで100件登録することができます。ここで考えられるのは、キー重複してエラーとなってしまうということが考えられます。例えば既に1件だけでもデータが存在していた場合などです。
これを回避するために、overwrite_by_pkeysというのを指定できます。
batch_write(overwrite_by_pkeys=['partition_key', 'sort_key'])
とするだけです。’partition_key’と’sort_key’には実際の属性名を指定します。
以下200回ループして登録するプログラムを実行してみます。(既に100件の重複データがあ存在するとします)
import boto3;
def lambda_handler(event, context):
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users2')
with table.batch_writer(overwrite_by_pkeys=['user-name', 'emp-id']) as batch:
for i in range(200):
batch.put_item(
Item={
'user-name': 'test',
'emp-id': i
}
)
正常に新たに100件追加されることが確認できます。結構便利な機能ですね。
put_itemメソッドで登録するのは「AWS Lambda(Python3.6)からDynamoDBにデータ登録する」参考ください。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^

コメント