1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【DynamoDB】AWSのDynamoDBでテーブルを作成した直後にデータを挿入できないときの対処法

Posted at

皆さんこんにちは。

今回は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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?