質問するログイン新規登録

質問編集履歴

1

タイトルを修正、コードをわかりやすく修正

2016/03/29 12:47

投稿

akabei
akabei

スコア21

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("Bucket:", bucket, "Key:", key);
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("S3 object get error!! " + err.code + ":" + err.message);
39
+ context.fail('S3 object get error!! ' + err.code + ":" + err.message);
40
40
  }
41
41
  else {
42
+ //テーブル名
42
- //console.log("Body:", String(data.Body));
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
- console.log('Table: ', tablename, ' Count: ', content[table].length);
47
+ console.log('Table:', tablename, ' Count:', content[tablename].length);
49
- items = getItemList(content[table]);
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("DynamoDB put error!! " + err.code + ":" + err.message);
58
+ context.fail('DynamoDB put error!! ' + err.code + ':' + err.message);
62
59
  }
63
60
  else {
64
- console.log("data uploaded successfully.", data);
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について何かわかることがあれば教えて下さい。