次のプロジェクトツリーがあります
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を動的に設定できる方法はあり、プロダクションにプッシュする必要がある場合は、正しいものへのパスを変更します。
私はこれを回避し、コンテナ内のサーバーレスオフラインを実行して、私のレイヤーをGULPで/ opt /ディレクトリにコピーします。私はレイヤーの変更を監視し、それらを/ opt/directoryにコピーするためにGULPウォッチを設定します。