2017-12-05 7 views
1

AWS Lambdasをローカルに実行するデベロッパーサーバーはありますか?私の要件はAWS Lambda用Local Dev Server

  • nodejsサーバー、無rubyまたはgoか何かnode以外のインストールが必要とnpmパッケージ
  • は私が様々な送信するwget/curlまたはAPIテストツールを使用して照会することができ、サーバを作成するだろうイベントに
  • 私はそのファイルを変更すると、サーバがラムダとして使用するファイルを指定し、サーバを再起動/更新する必要があります
+2

AWS API GatewayとLambdaシミュレーションのサーバーレスオフラインプラグインをローカルで使用してサーバーレスフレームワークを試したことがありますか? – Ashan

+0

[Cloud9](https://aws.amazon.com/cloud9/)IDEが役立つかもしれませんか? –

答えて

1

ここには、serverlessまたはclaudiajsを必要としないソリューションがあります。

私は通常、この目的のために自分自身の小さなexpressスクリプトを書いています。私はいつもラムダプロキシの統合を使用するだけで簡単です。

次に、このような何か...

const bodyParser = require('body-parser') 
const express = require('express') 

// Two different Lambda handlers 
const { api } = require('../src/api') 
const { login } = ('../src/login') 

const app = express() 

app.use(bodyParser.json()) 

// route and their handlers 
app.post('/login', lambdaProxyWrapper(login)) 
app.all('/*', lambdaProxyWrapper(api)) 


app.listen(8200,() => console.info('Server running on port 8200...')) 


function lambdaProxyWrapper(handler) { 
    return (req, res) => { 
    // Here we convert the request into a Lambda event 
    const event = { 
     httpMethod: req.method, 
     queryStringParameters: req.query, 
     pathParameters: { 
     proxy: req.params[0], 
     }, 
     body: JSON.stringify(req.body), 
    } 

    return handler(event, null, (err, response) => { 
     res.status(response.statusCode) 
     res.set(response.headers) 

     return res.json(JSON.parse(response.body)) 
    }) 
    } 
} 

、それは必要に応じてファイルやリロードを監視nodemonでそれを実行します。

nodemon --watch '{src,scripts}/**/*.js' scripts/server.js 
+0

他の回答とコメントは巨大すぎます私はこの答えを受け入れるつもりはない。 – Lukas

0

あなたはSAMローカルをチェックしましたか? https://github.com/awslabs/aws-sam-local

+0

申し訳ありませんが、SAM LocalはGOで作成され、SAM用に作成されています.GU stuffやSAM(SAM Localが使用する)をインストールしたくありません。しかし、ありがとう。 – Lukas

+0

少なくともサーバーではありませんが、少なくともJSはコマンドラインからローカルに実行されます:https://www.npmjs.com/package/lambda-local – smcstewart