2017-10-22 2 views
0

私はserverlessフレームワークを使ってaws lambda関数を配備しています。私の問題は、sls deploy -f any_fnを実行するたびに展開されるlarge file(44MB)です。私はnode_modulesフォルダ(かなり大きいかもしれません)があるときに同様の問題を抱えています。サーバーレス展開のサイズを減らすにはどうすればいいですか?

共通ファイルを1回だけアップロードすることで(そしてすべての機能に対して)アップロードサイズを減らす方法はありますか?今は変わらないが、同じバイナリファイルを何度も何度も圧縮し展開しているからだ。

+0

あなたの機能とその依存関係についてもっと教えていただけますか?そこからサイズを減らす方法があるかもしれません。 – dashmug

+0

@dashmug私はこのプロジェクトをhttps://github.com/sambaiz/puppeteer-lambda-starter-kit(44MB)を使用してこのプロジェクトを使用してこの問題を2回直しました。このプロジェクトを使用している時間はhttps://github.com/arainesです/ serverless-php(24MB) – supersan

答えて

2

あなたが提案したことを行う方法はありません。 AWS Lambdaでは、毎回すべての依存関係を含むパッケージ全体をアップロードする必要があります。すべてがLambdaに展開されたzipファイルの中になければなりません。

+0

私は方法を考えましたが、実現可能であれば入力が必要です。サーバレスのプロキシ関数、つまり入力パラメータとしてファイルを受け入れるserverlessで作成されたlamba関数を作成するとどうなりますか?この関数は、この入力ファイルと(S3バケットからの)静的ファイルを結合し、 'AWS.Lambda' nodejs APIを使用して実際に関数をデプロイします。このように私は変更のみを送信し、残りの部分はプロキシラムダ関数を介してスタティックファイルで新しいラムダ関数を作成します。それは意味をなさないでしょうか?私はそれが多くの仕事だが、それは動作するのでしょうか? – supersan

+0

ローカルコンピュータから最終パッケージをビルドしてアップロードする必要がないように、配備を管理するものを探しているだけの場合は、AWS CodePipelineのような継続的インテグレーション/継続配信サービスを使用できます。 –

+0

AWSラムダへのすべての静的資産を使用してラムダ関数を展開するために、AWS codepipelineを使用する方法の研究を開始すると思います。 – supersan

関連する問題