web-dev-qa-db-ja.com

Lambdaレイヤからロードされたときのサーバーレスオフライン未定義モジュール

次のプロジェクトツリーがあります

enter image description here

Nodejsフォルダは、次のserverless.yamlで定義されたLambdaレイヤーです。

service: aws-nodejs # NOTE: update this with your service name


provider:
  name: aws
  runtime: nodejs8.10
  stage: dev

plugins:
  - serverless-offline
layers:
  layer1:
    path: nodejs # required, path to layer contents on disk
    name: ${self:provider.stage}-layerName # optional, Deployed Lambda layer name

functions:
  hello:
    handler: handler.hello
    layers:
      - {Ref: Layer1LambdaLayer}
    events:
      - http:
          path: /dev
          method: get
 _

Layer1にはUUIDパッケージのみが含まれています。

そのため、サーバーレスオフラインプラグインを使用してLAMBDAをローカルに実行しようとすると、モジュールのUUIDが見つかりません。

しかし、私がコードをAWSに展開するとき、それは魅力のように実行されます。

テスト目的のためにローカルにラムダレイヤーを実行できるようにしてください。そして開発をスピードアップするために?

または、開発中にLayerフォルダを指すようにNode_Module Pathを動的に設定できる方法はあり、プロダクションにプッシュする必要がある場合は、正しいものへのパスを変更します。

8
ِAllloush

私はこれを回避し、コンテナ内のサーバーレスオフラインを実行して、私のレイヤーをGULPで/ opt /ディレクトリにコピーします。私はレイヤーの変更を監視し、それらを/ opt/directoryにコピーするためにGULPウォッチを設定します。

0
Sam Chung