AWS Lambda から DynamoDB にデータを書き込み操作する方法
概要
今回の記事では、AWS Lambda から DynamoDB にデータを書き込み操作する方法を丁寧に解説します。
とにかくやってみる!ことで、AWSに関連することを学んでいきましょう。
Lambda(node.js)のスクリプト(javascript)をつかって、DynamoDBにデータを書き込む方法 について学ぶことができます。
前提条件
- AWSアカウントを持っていること
目的
今回の記事では、
- DynamoDBのテーブル作成手順を学ぶ
- Lambda(node.js)でjavascriptスクリプトを実装する手順を学ぶ
- Lambda(node.js)を動かす手順を学ぶ
の流れで、AWS Lambda から DynamoDB にデータを書き込み操作する方法を学ぶことを目的としています。
目次
内容
完成イメージ(これから作成するもの)を確認して、具体的な手順を説明します。
完成イメージ
DynamoDBを作成する
- AWS コンソールにログインして、DynamoDBサービスの画面を開きます。
AWS コンソールの検索でDynamoDBを探しましょう
- DynamoDBの画面にある「テーブル作成」ボタンを押します。
- 「テーブル作成」画面で各種設定し、DynamoDBのテーブルを作成します。
入力項目 | 値 |
---|---|
テーブル名 | person |
パーティションキー | mynumber |
ソートキー | name |
具体的な作成手順(画面キャプチャ)
- テーブル作成
- テーブル設定
- 読み込み/書き込みキャパシティーの設定
- テーブルを作成
Lyambdaを作成する
- AWS コンソールにログインして、Lamdbaサービスの画面を開きます。
AWS コンソールの検索でLamdbaを探しましょう
- Lamdbaの画面にある「関数の作成」ボタンを押します。
- 「テーブル作成」画面で各種設定し、Lambda関数を作成します。
入力項目 | 値 |
---|---|
関数名 | insert_person |
ロール名 | person_access_role |
具体的な作成手順(画面キャプチャ)
- 関数の作成
右下の「設定」ボタンを押下する。
- 基本的な情報
- 関数の作成
- Lambda関数のソースコード(javascript)を修正し、デプロイします。
具体的な作成手順(画面キャプチャ)
下記のソースコードをコピペします。
ソースコード(javascript)
var aws = require('aws-sdk');
var dynamo = new aws.DynamoDB();
exports.handler = async (event) => {
let Item_row = {
mynumber:{S:"777455348514"}, // ★適当な値
name:{S:"さいとう たかお"} // ★適当な値
};
let prm={
"TableName":"person", // ★テーブル名
"Item":Item_row//書き込みアイテム
};
let res= await dynamoPutItem(prm);
return res;
};
function dynamoPutItem(obj){
return new Promise((resolve, reject) => {
let params = obj;
dynamo.putItem(params,function(err, data) {
if (err) {
reject(err, err);
} else {
resolve("updated");
}
});
});
}
「デプロイ」ボタンを押します。
動かしてみる
1.「テスト」ボタンを押します。
- 正常に動作すると"成功"と表示されます。
「ResourceNotFoundException」が発生した場合、DynamoDBのテーブル名が間違っていないことを確認しましょう。
また、下記のエラーの場合も、原因はテーブル名を確認しましょう。
- DynamoDBのテーブル確認
「テーブルアイテムの探索」ボタンを押します。
挿入されたレコードがあることを確認します。
まとめ
LamdbdaからDynamoDBにデータを書き込むことはできたでしょうか?
ソースコードをコピーして、動かしてみるだけなら簡単にできると思いますので、このソースコードをベースにLambda実行時にインサートするデータを変数として渡す や CSVファイルからデータを読み込む など、機能を拡張してみると楽しいと思います。
本記事を読んでいただきありがとうございまいた。
少しでもみなさまのお役に立てばうれしいです。