AWS Lambdaを使用してDaynamoDBのテーブル名tableのすべてのレコードで項目stateの値を1に変更したいです。
以下の関数を作成して実行しました。
javascript
1var async = require('async'); 2var AWS = require('aws-sdk'); 3var dynamo = new AWS.DynamoDB.DocumentClient({ 4 region: 'ap-northeast-1' 5}); 6 7exports.handler = (event, context, callback) => { 8 var params = { 9 TableName: "table" 10 }; 11 console.log("event:", event); 12 dynamo.scan(params, function (err, data) { 13 console.log("dynamo_data:", data); 14 console.log("dynamo_err:", err); 15 context.done(null, data); 16 var funcs = []; 17 data.Items.forEach(function (item) { 18 funcs.push(function (cb) { 19 let params = { 20 TableName: 'table', 21 Key: { 'id': item.id }, 22 UpdateExpression: 'set #a = :x', 23 ExpressionAttributeNames: { '#a': 'state' }, 24 ExpressionAttributeValues: { ':x': '1' } 25 }; 26 27 dynamo.update(params, function (err, data) { 28 if (err) 29 console.log(err); 30 else 31 console.log(data); 32 }); 33 }); 34 }); 35 36 async.series(funcs, function (err, results) { 37 console.log('Finished'); 38 39 if (err) { 40 context.fail(err); 41 } else { 42 callback(null, 'Finished'); 43 } 44 }); 45 }); 46};
以下のエラーが発生しうまくいきません。
{ "errorType": "Runtime.ImportModuleError", "errorMessage": "Error: Cannot find module 'async'", "trace": [ "Runtime.ImportModuleError: Error: Cannot find module 'async'", " at _loadUserApp (/var/runtime/UserFunction.js:100:13)", " at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)", " at Object.<anonymous> (/var/runtime/index.js:45:30)", " at Module._compile (internal/modules/cjs/loader.js:778:30)", " at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)", " at Module.load (internal/modules/cjs/loader.js:653:32)", " at tryModuleLoad (internal/modules/cjs/loader.js:593:12)", " at Function.Module._load (internal/modules/cjs/loader.js:585:3)", " at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)", " at startup (internal/bootstrap/node.js:283:19)" ] }
どのようにすればよいでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。