私はこれを少し扱っており、かなりイライラしています。あなたの設定から展開する場合、あなたのAPIはどのように見えるのですか?個々のserverless.yaml
ファイルでは、独立したapiエンドポイントになります(s3のようなものではなく、api呼び出しで起動していると仮定します)。
私はこのような構造になってしまった:私はdist/
ディレクトリに個々の機能の出力にサーバーレスWebPACKのプラグインを使用
|- serverless/
|--- serverlsss.yml
|--- web pack.config.js
|--- dist/
|--- node_modules() /* dev and common code */
|--- src/
|----- function1/
|-------- node_modules
|-------- package.json
|-------- index.js
|----- function2/
|-------- node_modules
|-------- package.json
|-------- index.js
。 serverless.yaml
は、これらを指します。ちょうどあなたがWebPACKのプラグインは非常にいいですし、重い物を持ち上げるのほとんどを行いserverless.yml
package:
individually: true
で個々のフラグを設定していることを確認した後
const nodeExternals = require('webpack-node-externals');
const path = require('path');
module.exports = {
entry: {
'function1': './src/function1/index.js',
'function2': './src/function2/index.js',
},
target: 'node',
output:{
libraryTarget: 'commonjs2',
path: path.join(__dirname, './dist'),
filename: '[name].js'
},
externals: [nodeExternals()],
module: {
loaders: [
/* Babel is nice, but it's adding a some bulk and I don't need it
{
test: /\.js$/,
loaders: ['babel'],
include: __dirname,
exclude: /node_modules/,
}, */
{
test: /\.json$/,
loaders: ['json']}
],
},
};
// externals: [nodeExternals()],
// nodeExternals seems to break aws-sdk when serving locally
// aws-sdk should be in dev-dependencies of root folder
// that way it's available in dev but doesn't get packaged.
// It's available to the lambdas when deployed.
:
webpack.config.js
は次のようになります。これで私は単一の展開を行うことができ、すべての関数は個々のラムダ関数として1つのAPI終点の下にすべて終わります。また、Webpack開発サーバーを入手して、serverless webpack serve
を実行して機能をテストできます。
セットアップには苦労しましたが、うまくいきました。