3

オープン気象NPMモジュールを使用するラムダ関数を作成するためにServerless Frameworkを使用しようとしています。しかし、次の例外が発生しますが、node_modulesには特定のライブラリが含まれています。AWS Lambdaエラーを伴うサーバーレスフレーム "モジュールが見つかりません"

サンプル(https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb)を正常に実行できました。ノードモジュールを追加して公開天気APIを統合するようになりました。

Endpoint response body before transformations: {"errorMessage":"Cannot find module 'Openweather-Node'","errorType":"Error","stackTrace":["Module.require (module.js:353:17)","require (internal/module.js:12:17)","Object.<anonymous> (/var/task/todos/weather.js:4:17)","Module._compile (module.js:409:26)","Object.Module._extensions..js 

私のコード

'use strict'; 

    const AWS = require('aws-sdk'); // eslint-disable-line import/no-extraneous-dependencies 
    var weather = require('Openweather-Node'); 

    const dynamoDb = new AWS.DynamoDB.DocumentClient(); 

    module.exports.weather = (event, context, callback) => { 
    const params = { 
     TableName: process.env.DYNAMODB_TABLE, 
     Key: { 
     id: event.pathParameters.id, 
     }, 
    }; 

    weather.setAPPID("mykey"); 
    //set the culture 
    weather.setCulture("fr"); 
    //set the forecast type 
    weather.setForecastType("daily"); 

    const response = { 
     statusCode: 200, 
     body: "{test response}", 
    }; 
    callback(null, response);   
    }; 

答えて

7

はあなたserverless deployを行う前に、あなたの作業ディレクトリ内npm installましたか? aws-sdkノードモジュールはすべてのラムダ関数で使用できますが、他のすべてのノード依存関係の場合は、それらをインストールして、展開時にラムダでパッケージ化されるようにする必要があります。

この問題は、サーバレスリポジトリ(https://github.com/serverless/serverless/issues/948)で見つけることができます。

+0

優れています..これ以外のすべては行いました..迅速な答えをありがとう! – Charith

1

を参照してください私は、複数のラムダ関数を展開するサーバーレスフレームワークと同じ問題を抱えています。私はあなたがhandler: foldername/exports.handler

  • 名(あなたはハンドラに名前を何でも)exports.jsとしてフォルダ内のファイル
  • 実行などのハンドラでパスを保つものは何でも、次の手順
    1. で固定serverless deploy

    これはあなたの問題を解決するはずです

  • +0

    これは、sam localを使用してラムダを開発する場合に便利です –

    関連する問題