質問編集履歴
1
タイトルを修正、コードをわかりやすく修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
DynamoDBに複数の項目を追加する
|
1
|
+
DynamoDBに複数の項目を追加するプログラムでcontext.done()をコールするタイミングがわかりません
|
body
CHANGED
@@ -32,24 +32,21 @@
|
|
32
32
|
//S3からJSONファイルを読み込む
|
33
33
|
var bucket = event.Records[0].s3.bucket.name;
|
34
34
|
var key = event.Records[0].s3.object.key;
|
35
|
-
console.log(
|
35
|
+
console.log('Bucket:', bucket, ' Key:', key);
|
36
36
|
s3.getObject({Bucket: bucket, Key: key}, function(err, data) {
|
37
37
|
if (err) {
|
38
38
|
console.log(err);
|
39
|
-
context.fail(
|
39
|
+
context.fail('S3 object get error!! ' + err.code + ":" + err.message);
|
40
40
|
}
|
41
41
|
else {
|
42
|
+
//テーブル名
|
42
|
-
|
43
|
+
var tablename = 'test';
|
44
|
+
|
43
45
|
//読み込んだJSONをDynamoDBのパラメータ形式に変換
|
44
46
|
var content = JSON.parse(String(data.Body));
|
45
|
-
var items = [];
|
46
|
-
for (var table in content) {
|
47
|
-
tablename = table;
|
48
|
-
|
47
|
+
console.log('Table:', tablename, ' Count:', content[tablename].length);
|
49
|
-
|
48
|
+
var items = getItemList(content[tablename]);
|
50
|
-
}
|
51
49
|
for (var i = 0; i < items.length; i++) {
|
52
|
-
//console.log(items[i]);
|
53
50
|
var params = {
|
54
51
|
TableName: tablename,
|
55
52
|
Item: items[i]
|
@@ -58,10 +55,10 @@
|
|
58
55
|
dynamo.putItem(params, function (err, data) {
|
59
56
|
if (err) {
|
60
57
|
console.log(err);
|
61
|
-
context.fail(
|
58
|
+
context.fail('DynamoDB put error!! ' + err.code + ':' + err.message);
|
62
59
|
}
|
63
60
|
else {
|
64
|
-
console.log(
|
61
|
+
console.log('data uploaded successfully.');
|
65
62
|
//★1)doneを呼び出すタイミングは?
|
66
63
|
//context.done();
|
67
64
|
}
|
@@ -97,8 +94,7 @@
|
|
97
94
|
}
|
98
95
|
```
|
99
96
|
|
100
|
-
動作するのは確認できたのですが
|
97
|
+
動作するのは確認できたのですが、わからない点が2つあります。
|
101
|
-
わからないところが2点あります。
|
102
98
|
|
103
99
|
★1) DynamoDBへ書き込む際、複数回putItem()をコールしたときcontext.done()をコールするタイミングがわからない。
|
104
100
|
★2) putItem()のfunctionでワーニングが発生してしまいます。functionはループ内に作成してはいけないようですがどのように修正したらよいでしょうか?
|
@@ -107,7 +103,12 @@
|
|
107
103
|
functionは別に分けてみましたがcontextが参照できなくなってしまいました。
|
108
104
|
|
109
105
|
BatchWriteItem()で一度にまとめて書き込めることは分かったのですが
|
110
|
-
今回のように引数にfunctionをもつ関数を複数回コールしたいときどのようにプログラム
|
106
|
+
今回のように引数にfunctionをもつ関数を複数回コールしたいときどのようにプログラムするのがいいのでしょうか?
|
111
107
|
|
112
108
|
同様のプログラムを作成された方がいましたら
|
113
|
-
教えていただけると助かります。
|
109
|
+
教えていただけると助かります。
|
110
|
+
|
111
|
+
追記)
|
112
|
+
★2はコードをテキストファイルにコピーして貼り付けなおしたところワーニングは消えました。
|
113
|
+
これでいいのかわかりませんが・・・。
|
114
|
+
引き続き★1について何かわかることがあれば教えて下さい。
|