皆さんこんにちは。
今回はAWSの人気サービスの1つでもあるDynamoDBのデータ挿入についての記事となります。
タイトルにも書いてあると思うのですが、DynamoDBでテーブルを作成して直後に初期データとしてデータを挿入するとエラーが起きて挿入ができないんですよね。。。
こりゃ困った。
遅延関数的なのを使ってもいいのですが、それだと腑に落ちないので色々調べてみました。
すると、なんと、ものすごく便利なメソッドがあることを知りました。
その名もwait関数です!!!
これは、テーブルが作成されるまで待ってくれる関数です。
逆にテーブルが消去されるまで待てるといった機能の実装も可能です!
めちゃめちゃ便利ですよね。
使用言語によって関数名は違うのですが、Node.jsだとwaitFor
という関数でした。
waitと入力すれば、それっぽい関数名が出てくると思います。
それでは使用方法の説明をしていきます。
使用方法
まずは、以下のソースコードをご覧ください。
const AWS = require("aws-sdk");
AWS.config.update({
region: "ap-northeast-1",
});
const dynamodb = new AWS.DynamoDB();
const docClient = new AWS.DynamoDB.DocumentClient({
region: "ap-northeast-1"
});
dynamodb.waitFor("tableExists", { TableName: "TARGET_TABLE_NAME" }, () => {
const params = {
TableName: "TARGET_TABLE_NAME",
Item: "ITEM"
};
await docClient.put(params).promise();
});
waitFor関数の一つ目のパラメータにtableExists
が指定されていますよね。
これがテーブルが作成されるまで待ってくれるパラメータです。
テーブルが削除されるまで待つにはtableNotExists
と指定すればOK!
言語によって渡す文字は違うかもしれないのですが、その場合はご自身でお調べください。
恐らくDynamoDBに限ったことでは無いですが、こういったデータベースに初期データを挿入したいときに標準でメソッドを用意してくれてるのはありがたいことですよね。
これを自作するとなると中々骨のある作業になると思います。
リージョンの指定を忘れるとエラーが出ますのでお気を付けください!
以上、「【DynamoDB】AWSのDynamoDBでテーブルを作成した直後にデータを挿入できないときの対処法」でした!
Thank you for reading