🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

1回答

3803閲覧

AWS Lambdaを使用してDaynamoDBの全レコードを更新したい

gngngngn

総合スコア7

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

1クリップ

投稿2019/09/18 10:25

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)" ] }

どのようにすればよいでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

おそらくこちらと同じ原因かと思います。
https://teratail.com/questions/83328

Lambdaで標準で使用できるもの以外のモジュールを使用する場合はそれを含めてzipで上げる必要があります。
調べると色々出てくると思いますが、例えばこの辺が参考になると思います。
https://www.business-on-it.com/2003-aws-lambda-create-function/

投稿2019/09/18 14:34

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問