DynamoDBのデータを書き込んだり読み込んだりするときにみるqiita
dynamoDBをlambdaからじゃなくて外部から読み込みたい時もありますよね。
そんな時に使えるやつです
記事を探したけどれが動くかわからなかったので現時点で動くやつを書いておこう
特に詳しくないので動く重視のコードです。
よく使いそうなやつだけサンプルコード載せておきます
- getItem 一個だけ取得
- batchGetItem 複数取得
- putItem 一個だけ追加
- batchWriteItem 複数追加
- listTable AWSアカウントに紐づいているテーブル一覧
ドキュメント
ドキュメント見ればだいたいなんでもできる
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property
getItem 一個だけ取得
index.js
constAWS=require("aws-sdk");//インスタンス生成constdynamodb=newAWS.DynamoDB({region:"ap-northeast-1",apiVersion:"2012-08-10",accessKeyId:"xxxxxxxxxxxxxxxx",secretAccessKey:"xxxxxxxxx",});asyncfunctiontest(){varparams={Key:{"<プライマリパーティションキー>":{S:"<キーの値>"}},TableName:"<TableName>"};constData=await(()=>newPromise((resolve)=>{dynamodb.getItem(params,function(err,data){if(err){console.error("Error occured",err);}console.log(data);resolve(data);});}))();if(Data!==undefined){console.log(Data)}}test();
batchGetItem 複数取得
取得するキーの値が同じだとエラーを吐いた。
index.js
constAWS=require("aws-sdk");//インスタンス生成constdynamodb=newAWS.DynamoDB({region:"ap-northeast-1",apiVersion:"2012-08-10",accessKeyId:"xxxxxxx",secretAccessKey:"xxxxxxxx",});asyncfunctiontest(){varparams={RequestItems:{"<TableName>":{Keys:[{"<プライマリパーティションキー>":{S:"<値>"}},{id:{S:"<値>"}}],},},};constData=await(()=>newPromise((resolve)=>{dynamodb.batchGetItem(params,function(err,data){if(err){console.error("Error occured",err);}console.log(data);resolve(data);});}))();if(Data!==undefined){console.log(Data)}}test();
putItem 一個だけ追加
iindex.js
constAWS=require("aws-sdk");//インスタンス生成constdynamodb=newAWS.DynamoDB({region:"ap-northeast-1",apiVersion:"2012-08-10",accessKeyId:"xxxxxxxxxxxxxxxxx",secretAccessKey:"xxxxxx",});asyncfunctiontest(){varparams={Item:{"<項目>":{S:"値"},"<項目>":{S:"値"},"<項目>":{S:"値"}},TableName:"<TableName>"};constData=await(()=>newPromise((resolve)=>{dynamodb.putItem(params,function(err,data){if(err){console.error("Error occured",err);}console.log(data);resolve(data);});}))();if(Data!==undefined){console.log(Data)}}test();
batchWriteItem 複数追加
index.js
constAWS=require("aws-sdk");//インスタンス生成constdynamodb=newAWS.DynamoDB({region:"ap-northeast-1",apiVersion:"2012-08-10",accessKeyId:"xxxxxxxK",secretAccessKey:"xxx",});asyncfunctiontest(){varparams={RequestItems:{"<TableName>":[{PutRequest:{Item:{"<キー>":{S:"<値>"},"<項目>":{S:"<値>"},"<項目>":{S:"<値>"}}}},{PutRequest:{Item:{"<キー>":{S:"<値>"},"<項目>":{S:"<値>"},"<項目>":{S:"<値>"}}}},{PutRequest:{Item:{"<キー>":{S:"<値>"},"<項目>":{S:"<値>"},"<項目>":{S:"<値>"}}}}]}};constData=await(()=>newPromise((resolve)=>{dynamodb.batchWriteItem(params,function(err,data){if(err){console.error("Error occured",err);}console.log(data);resolve(data);});}))();if(Data!==undefined){console.log(Data)}}test();
listTable AWSアカウントに紐づいているテーブル一覧
index.js
constAWS=require("aws-sdk");//インスタンス生成constdynamodb=newAWS.DynamoDB({region:"ap-northeast-1",apiVersion:"2012-08-10",accessKeyId:"xxxxxxxx",secretAccessKey:"xxx",});asyncfunctiontest(){varparams={};constData=await(()=>newPromise((resolve)=>{dynamodb.listTables(params,function(err,data){if(err){console.error("Error occured",err);}console.log(data);resolve(data);});}))();if(Data!==undefined){console.log(Data)}}test();