0

Je me demande si quelqu'un utilise un framework sans serveur avec des fonctions azur et comment gérer le code de partage entre les fonctions & bundling?sans serveur avec des fonctions azur et webpack

Je suis la conversion app hapi.js à serverless + serverless-azure-functions et je suis en train de regrouper mon code avant de déployer afin de pouvoir utiliser différents require pour les modules réutilisables.

Je trouve serverless-webpack et il crée des faisceaux qui fonctionne probablement sur AWS Lambda, mais il y a un problème sur azur à cause du manque de function.json fichiers (ex. list-function.json), de sorte que les fonctions ne sont pas visibles du tout à l'intérieur d'azur portail ni Je ne peux pas les invoquer.

Également trouvé article à propos de ce problème, mais Il montre comment gérer cela avec azure-functions-cli qui ne supporte que la plate-forme Windows.

Best, JH

Répondre

1

Giting laisse deviner de https://medium.com/a-man-with-no-server/deploying-a-serverless-application-using-webpack-and-babel-to-support-es2015-to-aws-2f61cff8bafb, j'ai modifié une Serverless fonctions d'azur projet de test de démarrage avec serverless-webpack, qui semble être satified avec vos besoins.

J'ai créé un dossier src dans le répertoire racine du projet fonctions azure serverless, en tant que dossier de développement du code source. Avec 2 fichiers de test:
handler.js

'use strict'; 
let tool = require("./tool"); 
/* eslint-disable no-param-reassign */ 

module.exports.hello = function (context) { 
    context.log('JavaScript HTTP trigger function processed a request.'); 

    context.res = { 
    // status: 200, /* Defaults to 200 */ 
    body: tool.hello(), 
    }; 

    context.done(); 
}; 

tool.js

module.exports={ 
    hello:()=>{ 
     return "hello world"; 
    } 
} 

webpack.config.js dans le répertoire racine:

var nodeExternals = require('webpack-node-externals') 

module.exports = { 
    entry: './src/handler.js', 
    target: 'node', 
    externals: [nodeExternals()], 
    output: { 
     libraryTarget: 'commonjs', 
     path: __dirname, 
     filename: 'handler.js', // this should match the first part of function handler in serverless.yml 
    }, 
    module: { 
     loaders: [ 
     { 
      test: /\.jsx?$/, 
      exclude: /node_modules/, 
      include: __dirname, 
      loaders: ["babel-loader"] 
     } 
     ] 
    } 
}; 

Avec quel fichier de configuration, le fichier extrait fourni sera être situé dans service/handler.js dans le répertoire racine.

Je modifié serverless.yml aussi bien, il semble en partie maintenant comme:

package: 
    include: 
    - service/handler.js 
    exclude: 
    - handler.js 

functions: 
    hello: 
    handler: service/handler.hello 
    events: 
     - http: true 
     x-azure-settings: 
      authLevel : anonymous 
     - http: true 
     x-azure-settings: 
      direction: out 
      name: res 

custom: 
    webpackIncludeModules: 
    packagePath: './package.json' 

Après ces modifiés, utilisez serverless deploy regrouperons les fichiers dans le dossier src puis package et déployer à la fonction d'azur.

Espérons que ça aide.

+0

Salut, merci, pourriez-vous partager ce repo avec moi? – JJ23

+0

https://github.com/Walk4Muscle/az-function-serverless-babel –

+0

Un grand merci, malheureusement j'ai eu cette erreur. './Node/NodeTemplatePlugin' même chose que [ici] (https://stackoverflow.com/questions/44812204/serverless-webpack-cannot-find-module-node-nodetemplateplugin) – JJ23