AWS(lambda + s3 + apiGateway)を使用してマイクロサービスAPIを構築しようとしていますが、私のすべてのラムダが同じ重量を持っていることに気づいたので、必要なリソースの代わりにすべてのラムダにフルプロジェクトをアップロードしているようです。ラムダ関数の重みを最小限に抑えるにはどうすればいいですか?
私は機能ごとに必要なだけのリソースをアップロードする方法はありますか?これにより実行時間が最小限に抑えられますか?それは価値があるのですか?
AWS(lambda + s3 + apiGateway)を使用してマイクロサービスAPIを構築しようとしていますが、私のすべてのラムダが同じ重量を持っていることに気づいたので、必要なリソースの代わりにすべてのラムダにフルプロジェクトをアップロードしているようです。ラムダ関数の重みを最小限に抑えるにはどうすればいいですか?
私は機能ごとに必要なだけのリソースをアップロードする方法はありますか?これにより実行時間が最小限に抑えられますか?それは価値があるのですか?
は2部でこれに答えるために行く参照してください。
(1)義務は、「なぜ、あなたは気にしていますか?」
私は本当に心配していたので、これを尋ねます。しかし、テストした後、アップロードされたバンドルのサイズ(ラムダディストリビューションバンドルのlibフォルダにあるjarファイル)は、初期アップロード時間(おそらくS3の使用量) )。
ナノプロジェクトとバンドルがたくさんあるのではなく、私は単一のJava Lambda APIモジュールを持っており、すべてのラムダに対して同じアーティファクトをアップロードします。
何らかの理由で(マイクロサービスアーキテクチャ、コードの分離など)何らかの理由で分離するのが意味がある場合は、分割する予定です。
これで、Javaベースのlambdaに本当に影響するようなものは、クラスの読み込み時間です。あなたは、春を使用すると述べました。 Springの設定を読み込まないことをお勧めします。本当に必要のないコードを実行することになります。
あなたのラムダは100msの範囲内にあるのが理想です。 私はAWS SDKを使用していて、AWSクライアントの初期化に13秒かかっていました。 (13000ms)。私は、ノードのパイソンを使用してに切り替えた場合、それは56msに行ってきました...
あなたは時間で充電を取得し、1000倍の倍率は笑い事であること:)
(2)あなたが決めた場合には覚えておいてください分割する際には、子プロジェクトと一緒にgradle配布プラグインを使用して、各子プロジェクトと子プロジェクトのジップ配信を「軽く」することをお勧めします。私はこの道を歩いていましたが、実際にはコンポーネントを本当に分割していることに気付きました...そして、私はプロジェクト間で構成を複製するかどちらかです。また、プロジェクトの依存関係を作成した場合、依存関係ツリー全体を再度バンドルすることになります。
gradle/mavenに依存せずにチェリーピックする必要があることが既に分かっている場合は、gradle zipタスクを作成して異なるLambdaディストリビューションパッケージを作成することができます。
AWSドキュメント:http://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html
あなたは、ドキュメントをリンクすることができた場合: http://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html 次のユーザーのためのあなたの答えに、それはいいだろう。 ありがとう – Jnewbie
ラムダ関数ごとに異なる3つのjarファイルを作成してビルドする必要があります。それぞれのjarファイルにクラスとリソースが含まれているスーパーセットjarを作成するのではなく、ラムダ関数。
この方法では、瓶はより軽くなります。ラムダjarを構築の詳細については
「重量」とはどういう意味ですか?関数のサイズを意味しますか?あなたは同じサイズで複数の機能を持つことを心配していますか? –
Serverlessのような特定のフレームワークを使用していますか? – Ashan
私は、Spring以外のフレームワークを使用していません。そう、未使用のコードがハンドラにアップロードされていることを意味します。 – Jnewbie