Node.jsエクスプレスで開発されたモバイルアプリケーションバックエンドがあります。ラムダサービスとして展開しようとしました。そのために、サーバーレスフレームワークプロジェクトを作成しました( https://github.com/serverless )。以前は、エクスプレスバックエンドアプリケーションを起動してモバイルアプリをローカルでテストしました。現在、ローカルバックエンドなしでモバイルアプリをローカルでテストする方法が見つかりません。 jaws run
コマンドは、一度呼び出しただけで実行されます。
Webサービスとしてラムダ関数を開始する方法はありますか?または、サーバーレスフレームワークに代わるものはありますか?
現時点ではこれを行う方法はないようですが、バージョン1.4.0がリリースされようとしており、とりわけ、問題に対処する新しいコマンド「jaws serve」が含まれているはずです。
PRは次のとおりです。 https://github.com/jaws-framework/JAWS/pull/269
更新:新しい serverless-serve プラグインを使用できます。
更新2:serverless-serveはしばらく更新されていません。Lambda関数をエミュレートするには、 serverless-offline の方がはるかに優れたオプションのようです。
この質問がまだ関連するかどうかはわかりませんが、 DEEP Framework を使用してコードをローカルでテストしたり、AWS Lambdaにデプロイしたりします。これをチェックしてください:
npm install deepify -g
deepify run-lambda --help
[email protected] - Run Lambda function locally
Usage example: deepify run-lambda path/to/the/lambda -e='{"Name":"John Doe"}'
Arguments:
path: The path to the Lambda (directory of handler itself)
Options:
--event|-e: JSON string used as the Lambda payload
--skip-frontend-build|-f: Skip picking up _build path from the microservices Frontend
--db-server|-l: Local DynamoDB server implementation (ex. LocalDynamo, Dynalite)
--version|-v: Prints command version
--help|-h: Prints command help
開示:私はこのフレームワークへの貢献者の一人です
専用のsevrerlessプラグイン は、ローカルのLambdaを外部からアクセス可能にします。 Postmanを使用したローカルテストとWebhookベースのサービス(Alexa、Slack、Twilioなど)の両方で非常に便利です。
使用するには、プラグインをインストールしてから実行するだけです:
sls proxy
その後、サービスへのリクエストのローカル送信を開始できます。
サーバーレスでのテストに非常に便利なツールだと思います。
lambda-local を使用できるようになりました。
次のようにインストールします。
Sudo -H npm install -g lambda-local
パラメータをJSONオブジェクトとしてファイルに追加します。この例ではevent.json
、およびindex.js
このようなファイル:
lambda-local -l index.js -h handler -e event.json
これは手遅れかもしれません。しかし、今ではServerless-Offline( https://www.npmjs.com/package/serverless-offline )を試すことができます。
また、これはそのためのgithubページです( https://github.com/dherault/serverless-offline )
1.4はまだリリースされていないので...
先週、まったく同じことが必要でした。したがって、ローカルで実行できる小さな模擬サーバーを作成しました: https://github.com/martinlindenberg/JawsLocalServer
サーバーレスフレームワークは、関数をローカルで呼び出す方法を提供するようになりました
それにより、次のようなjsonファイルにクエリを作成できます。
{
"body": "{\"hello\":\"world\"}",
"pathParameters": {
"id": "foo"
},
"queryStringParameters": {
"bar": "42"
}
"requestContext": {
"identity": {
"cognitoIdentityId": "cognito-id"
}
}
}
関数がserverless.yml
ファイルに記述されている場合、次のようにローカルで呼び出すことができます
serverless invoke local --function yourFunction --path path/to/your/mock.json
例 lambda_function.py
:
def lambda_handler(*args, **kwargs):
return 'hello'
ローカルラムダ関数の呼び出し例:
pip install python-lambda-local
echo '{}' >> event.json
python-lambda-local -t 15 -f lambda_handler lambda_function.py event.json
この投稿の日付の時点で、sls function run [name-of-function]
を実行することで関数をローカルで実行できます。関数のevent.json
で使用されるjsonはすべて、関数に渡されます。
エンドポイントをテストするために、 Serverless Offline を使用することもできます。これはserverless-serve
プロジェクトの分岐です。