Jeśli mam dwie usługi: "Użytkownicy" i "Produkty", każdy z wieloma funkcjami z punktami końcowymi zdefiniowanymi dla każdego z nich (jak mógłby to zrobić każdy tradycyjny API), czy możliwe jest, aby być zorganizowane osobno w bazie kodu (dla jasności), ale po wdrożeniu mają ten sam podstawowy adres URL interfejsu API? Rozważmy na przykład mam następującą strukturę:Architektura bezserwerowa - dwie usługi pod jednym punktem końcowym APIGW
/src
-- /users
---- event.json
---- handler.js
---- serverless.yml
-- /products
---- event.json
---- handler.js
---- serverless.yml
i mój src/users/serverless.yml
ma następującą definicją:
functions:
create:
handler: handler.create
events:
- http: POST user
read:
handler: handler.read
events:
- http: GET user
i mój src/products/serverless.yml
w zasadzie to samo, tylko zamiana „użytkownik” do „produktów” .
Obecnie, zarówno tych usług zostaną wdrożone do wyraźnie różne punkty końcowe API, jeden z URL https://fghijklmnop.execute-api...
a drugi z adresem URL https://abcdevwxyz.execute-api....
moje pytanie, to byłoby możliwe, aby usługi te są wdrażane, ale pozostają pod jednym interfejsem API z jednym adresem URL (aby oba były obsługiwane pod adresem URL https://abcdevwxyz.execute-api....
)?
Zakładam, że odpowiedź brzmi: "Nie, ponieważ formacja chmurowa ...", ale pomyślałem, że zamieściłbym tutaj pytanie tylko po to, by porozmawiać i pomóc w zrozumieniu budowy aplikacji bezserwerowych.
Jestem świadomy używania niestandardowych domen, zgodnie z the answer here, ale dla szybszego cyklu rozwoju nie jest to idealne rozwiązanie.
Jedynym moim dotychczasowym rozwiązaniem byłoby po prostu utworzenie usługi o nazwie "api", która zawierałaby wszystkie punkty końcowe, których potrzebowałby mój interfejs API, które po prostu wywoływałyby bezpośrednio moje funkcje Lambda innych usług, a nie za pośrednictwem wcześniej skonfigurowanych punktów końcowych. Byłaby to naprawdę warstwa abstrakcji, ale dodaję potencjalnie niepotrzebne warstwy do mojej aplikacji. Znowu ciekawi, co społeczność na to czuje.
To prawda, ale usługi te są ściśle powiązane i muszą być zawsze wdrażane i zarządzane razem. Jeśli chcesz zachować odrębne usługi (ale połączone przez warstwę API), to nie działa. Nazwa usługi musi być taka sama, na przykład. –