web-dev-qa-db-ja.com

サーバーレスで複数の機能をデプロイ

最近サーバーレスプロジェクトを更新しましたが、最近のいくつかの更新で多くのことが変更されていることがわかりました。

https://serverless.com/

同じプロジェクトに関連する複数のラムダ関数とAPIゲートウェイエンドポイントを使用する正しい方法を完全には理解していません。古いサーバーレスでは、すべてのラムダとエンドポイントを完全に別個の関数として持っているので、これは私にとってはかなりうまくいきました。

2番目のラムダ関数が最初のラムダ関数をオーバーライドしようとすると、おそらく両方の「サービス名」が同じであるため、これを行うことができなくなったようです。 API Gatewayの同じAPIに両方のRESTエンドポイントが必要なため、サービス名は同じです。サーバーレスはサービス名に基づいてAPI名を作成するため。

そこで、両方の機能を同じ「サービス」に追加しようとしました。これはほとんどの部分で機能しましたが、すべての関数のカスタムロールステートメントを同じロールに含める必要があります(この1つのロールがすべての関数にリンクされているため)。個々の機能に必要以上の権限を効果的に付与します。もう1つの問題は、さまざまな関数のすべてのハンドラーファイルが各関数デプロイメントバンドルに配置されていることです。

したがって、基本的に、同じプロジェクトに関連しているが機能が分離している複数の機能を持つための正しいアプローチは何かわかりません。以前は意味がありましたが、現在は意味がありません。

誰かが私にいくつかのポインタを与えることができるならお願いします

ありがとう

8
3uPh0riC

私はあなたの欲求不満を理解しています。新しいバージョンを詳しく調べて理解を深めるまで、私は同じ気持ちでした。ただし、新しいバージョンはまだ完全には完成していないことに注意してください。したがって、何かが完全に欠落している場合は、問題を報告して、1.0がリリースされる前に優先順位を付けることができます。

functions:serverless.ymlセクションで、同じサービスの下に複数の関数を定義することになっています。これらの関数を個別にパッケージ化するには(他の関数のコードを除く)、individually: trueセクションの下にpackage:を設定する必要があります。その後、ルートレベルと関数レベルで包含オプションと除外オプションを使用できます。インクルードオプションとエクスクルードオプションでglob構文を使用できるようにする今後の変更があります(例**/* -fn.js)。パッケージングの詳細については、こちらをご覧ください https://serverless.com/framework/docs/guide/packaging/

同じサービスでさまざまな機能にさまざまな役割を使用する方法がわかりません。0.5でどのように使用しましたか?

6
Tolbahady

関数ごとの個々のiamロールの解決策も見つけようとしていました。それを行う方法が見つかりませんでしたが、ドキュメントを調べていると、次の行が見つかりました:「関数ごとに個別のIAMロールのサポートが間もなく開始されます。」on このページ なので、少なくとも彼らがそれに取り組んでいることはわかっています。

1
Kevin Aud