昨日の記事 https://usefuledge.com/clientside-js-call-aws-service.html に引き続いて、クライアントサイドJavaScriptからAWSを使う方法シリーズです。
今回は、DynamoDBのアイテムを追加・更新する処理を実装してみたいと思います。
0 前提
以下の記事の「1 Amazon Cognito から IDプールを作成する」と「2 AWS認証情報を取得する」まで完了していることを前提とします。
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のデータ型は以下の公式ドキュメントに記載されています。
このコードでは、以下の値をセットします。
- 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を操作できるようになりました。サーバーサイドが不要ですが、セキュリティが問題になりそうなので、使うときは慎重に使いましょう。
コメント