私は2つのサービス(それぞれの従来のAPIと同じように、エンドポイントが定義された複数の機能を持つ 'ユーザー'と '製品')を使用すると、コードベースで分けることができます(分かりやすくするために)。しかし、一度配備すれば同じAPIベースのURLを共有できますか?サーバレスフレームワーク - 1つのAPIGWエンドポイントで2つのサービスを提供
/src
-- /users
---- event.json
---- handler.js
---- serverless.yml
-- /products
---- event.json
---- handler.js
---- serverless.yml
と私src/users/serverless.yml
は以下の通り定義されています:
functions:
create:
handler: handler.create
events:
- http: POST user
read:
handler: handler.read
events:
- http: GET user
と私のsrc/products/serverless.yml
は基本的に同じものがあり、単に「製品」の「ユーザー」を入れ替える例えば、私は次のような構造を持って考えます。現在
、これらのサービスの両方がhttps://abcdevwxyz.execute-api....
私の質問は、これらのサービスを展開することは可能であってもよいが残る、あるURLでの明らかに異なるAPIエンドポイント、URL https://fghijklmnop.execute-api...
と1と別の展開されます1つのURLを持つ単一のAPIの下で(両方ともURL https://abcdevwxyz.execute-api....
で提供されます)?
私は答えは「いいえ、雲の形成のため...」と思っていますが、ここでは単に議論のために質問を投稿し、サーバーレスアプリケーションを構築するための自分の理解を助けると思っていました。
the answer hereのようにカスタムドメインを使用していることがわかりましたが、これは開発サイクルが短くても理想的なソリューションではありません。
私の唯一の解決策は、私のAPIが必要とするすべてのエンドポイントを含む 'api'というサービスを単に作成することです。これは以前設定されたエンドポイントではなく直接他のサービスのラムダ関数を呼び出します。それは抽象レイヤーですが、不要なレイヤーをアプリケーションに追加する可能性があります。再び、コミュニティがこれについて何を感じているのかを知りたい。
これは当てはまりますが、これらのサービスは緊密に連携しており、常に展開して管理する必要があります。サービスをはっきりと区別して(ただしAPIレイヤーを介して)リンクしたい場合は、これは機能しません。たとえば、サービス名は同じでなければなりません。 –