クライアントサイドJavaScriptでAWS DynamoDBのアイテムを更新する方法

昨日の記事 https://usefuledge.com/clientside-js-call-aws-service.html に引き続いて、クライアントサイドJavaScriptからAWSを使う方法シリーズです。

https://usefuledge.com/clientside-js-call-aws-service.html

今回は、DynamoDBのアイテムを追加・更新する処理を実装してみたいと思います。

0 前提

以下の記事の「1 Amazon Cognito から IDプールを作成する」と「2 AWS認証情報を取得する」まで完了していることを前提とします。

https://usefuledge.com/clientside-js-call-aws-service.html

1 UnauthロールにDynamoDBアクセスポリシーを設定する

今回もUnAuthロールを使用して実装します。以下のポリシーをアタッチします。

  • AmazonDynamoDBFullAccess

※DynamoDBへの書き込み権限があれば、FullAccessでなくても問題ありません。

2 DynamoDBテーブルの作成

DynamoDBのテーブルを作成します。

  • テーブル名:TestDDBTable
  • パーティションキー:Pkey(文字列)
  • ソートキー:Skey(数値)

読み込み/書き込みキャパシティモードについて、無料利用枠がない方は「オンデマンド」を選択することを推奨します。プロビジョンドにすると、使ってなくても費用が発生します。

テーブル作成が完了すると、以下のように表示されます。

3 コーディング

以下のように書いてみました。

// Initialize the Amazon Cognito credentials provider
AWS.config.region = 'XXXXXXXXXX'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'XXXXXXXXXX:YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY',
});

function UpdateTestDDBTable() {
    var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });

    var params = {
        TableName: 'TestDDBTable',
        Item: {
            'Pkey': { S: 'PKeyValue1' },
            'Skey': { N: '1' },
            'Value': { S: 'DBValue' }
        }
    };

    // Call DynamoDB to add the item to the table
    ddb.putItem(params, function (err, data) {
        if (err) {
            console.log("Error", err);
            return 4;
        } else {
            console.log("Success", data);
            return 0;
        }
    });
}

AWS認証情報は以下のとおりコピペでOKです。

// Initialize the Amazon Cognito credentials provider AWS.config.region = 'XXXXXXXXXX'; // Region AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'XXXXXXXXXX:YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY', });

以下のように、DynamoDBオブジェクトとパラメタオブジェクトを作成します。

パラメタオブジェクトは見てわかるとおり、テーブル名と項目名・値を記載します。

    var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });

    var params = {
        TableName: 'TestDDBTable',
        Item: {
            'Pkey': { S: 'PKeyValue1' },
            'Skey': { N: '1' },
            'Value': { S: 'DBValue' }
        }
    };

「S」は文字列型、「N」は数値型です。DynamoDBのデータ型は以下の公式ドキュメントに記載されています。

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBMapper.DataTypes.html

このコードでは、以下の値をセットします。

  • Pkey = "PKeyValue1"
  • Skey = 1
  • Value = "DBValue"

実行後、以下のようにデータが登録されれば成功です。

今度は以下のようにコードを変更して、既存のアイテムを更新したいと思います。

PkeyとSkeyは同じ値で、Valueが「DBValueUpdated」に更新されます。

function UpdateTestDDBTable() {
    var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });

    var params = {
        TableName: 'TestDDBTable',
        Item: {
            'Pkey': { S: 'PKeyValue1' },
            'Skey': { N: '1' },
            'Value': { S: 'DBValueUpdated' }
        }
    };

    // Call DynamoDB to add the item to the table
    ddb.putItem(params, function (err, data) {
        if (err) {
            console.log("Error", err);
            return 4;
        } else {
            console.log("Success", data);
            return 0;
        }
    });
}

実行後、以下のようにアイテムが更新されれば成功です。

4 おわりに

ブラウザだけで簡単にDynamoDBを操作できるようになりました。サーバーサイドが不要ですが、セキュリティが問題になりそうなので、使うときは慎重に使いましょう。

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱