質問編集履歴
1
タイトルを修正、コードをわかりやすく修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
DynamoDBに複数の項目を追加する
|
1
|
+
DynamoDBに複数の項目を追加するプログラムでcontext.done()をコールするタイミングがわかりません
|
test
CHANGED
@@ -66,7 +66,7 @@
|
|
66
66
|
|
67
67
|
var key = event.Records[0].s3.object.key;
|
68
68
|
|
69
|
-
console.log(
|
69
|
+
console.log('Bucket:', bucket, ' Key:', key);
|
70
70
|
|
71
71
|
s3.getObject({Bucket: bucket, Key: key}, function(err, data) {
|
72
72
|
|
@@ -74,68 +74,62 @@
|
|
74
74
|
|
75
75
|
console.log(err);
|
76
76
|
|
77
|
-
context.fail(
|
77
|
+
context.fail('S3 object get error!! ' + err.code + ":" + err.message);
|
78
78
|
|
79
79
|
}
|
80
80
|
|
81
81
|
else {
|
82
82
|
|
83
|
+
//テーブル名
|
84
|
+
|
83
|
-
|
85
|
+
var tablename = 'test';
|
86
|
+
|
87
|
+
|
84
88
|
|
85
89
|
//読み込んだJSONをDynamoDBのパラメータ形式に変換
|
86
90
|
|
87
91
|
var content = JSON.parse(String(data.Body));
|
88
92
|
|
89
|
-
var items = [];
|
90
|
-
|
91
|
-
for (var table in content) {
|
92
|
-
|
93
|
-
tablename = table;
|
94
|
-
|
95
|
-
|
93
|
+
console.log('Table:', tablename, ' Count:', content[tablename].length);
|
96
|
-
|
94
|
+
|
97
|
-
|
95
|
+
var items = getItemList(content[tablename]);
|
96
|
+
|
97
|
+
for (var i = 0; i < items.length; i++) {
|
98
|
+
|
99
|
+
var params = {
|
100
|
+
|
101
|
+
TableName: tablename,
|
102
|
+
|
103
|
+
Item: items[i]
|
104
|
+
|
105
|
+
};
|
106
|
+
|
107
|
+
//DynamoDBへ書き込む
|
108
|
+
|
109
|
+
dynamo.putItem(params, function (err, data) {
|
110
|
+
|
111
|
+
if (err) {
|
112
|
+
|
113
|
+
console.log(err);
|
114
|
+
|
115
|
+
context.fail('DynamoDB put error!! ' + err.code + ':' + err.message);
|
116
|
+
|
117
|
+
}
|
118
|
+
|
119
|
+
else {
|
120
|
+
|
121
|
+
console.log('data uploaded successfully.');
|
122
|
+
|
123
|
+
//★1)doneを呼び出すタイミングは?
|
124
|
+
|
125
|
+
//context.done();
|
126
|
+
|
127
|
+
}
|
128
|
+
|
129
|
+
}); //★2)ワーニング: Don't make functions within a loop.
|
98
130
|
|
99
131
|
}
|
100
132
|
|
101
|
-
for (var i = 0; i < items.length; i++) {
|
102
|
-
|
103
|
-
//console.log(items[i]);
|
104
|
-
|
105
|
-
var params = {
|
106
|
-
|
107
|
-
TableName: tablename,
|
108
|
-
|
109
|
-
Item: items[i]
|
110
|
-
|
111
|
-
};
|
112
|
-
|
113
|
-
//DynamoDBへ書き込む
|
114
|
-
|
115
|
-
dynamo.putItem(params, function (err, data) {
|
116
|
-
|
117
|
-
if (err) {
|
118
|
-
|
119
|
-
console.log(err);
|
120
|
-
|
121
|
-
context.fail("DynamoDB put error!! " + err.code + ":" + err.message);
|
122
|
-
|
123
|
-
}
|
124
|
-
|
125
|
-
else {
|
126
|
-
|
127
|
-
console.log("data uploaded successfully.", data);
|
128
|
-
|
129
|
-
//★1)doneを呼び出すタイミングは?
|
130
|
-
|
131
|
-
//context.done();
|
132
|
-
|
133
|
-
}
|
134
|
-
|
135
|
-
}); //★2)ワーニング: Don't make functions within a loop.
|
136
|
-
|
137
|
-
}
|
138
|
-
|
139
133
|
}
|
140
134
|
|
141
135
|
});
|
@@ -196,9 +190,7 @@
|
|
196
190
|
|
197
191
|
|
198
192
|
|
199
|
-
動作するのは確認できたのですが
|
193
|
+
動作するのは確認できたのですが、わからない点が2つあります。
|
200
|
-
|
201
|
-
わからないところが2点あります。
|
202
194
|
|
203
195
|
|
204
196
|
|
@@ -216,10 +208,20 @@
|
|
216
208
|
|
217
209
|
BatchWriteItem()で一度にまとめて書き込めることは分かったのですが
|
218
210
|
|
219
|
-
今回のように引数にfunctionをもつ関数を複数回コールしたいときどのようにプログラム
|
211
|
+
今回のように引数にfunctionをもつ関数を複数回コールしたいときどのようにプログラムするのがいいのでしょうか?
|
220
212
|
|
221
213
|
|
222
214
|
|
223
215
|
同様のプログラムを作成された方がいましたら
|
224
216
|
|
225
217
|
教えていただけると助かります。
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
追記)
|
222
|
+
|
223
|
+
★2はコードをテキストファイルにコピーして貼り付けなおしたところワーニングは消えました。
|
224
|
+
|
225
|
+
これでいいのかわかりませんが・・・。
|
226
|
+
|
227
|
+
引き続き★1について何かわかることがあれば教えて下さい。
|