2016-10-05 20 views
7

Niedawno zaktualizowałem swój projekt bezserwerowy i odkryłem, że wiele rzeczy zmieniło się w ostatnich kilku aktualizacjach.Bezserwerowe wdrażanie wielu funkcji

https://serverless.com/

nie w pełni zrozumieć, co jest poprawny sposób mają wiele funkcji lambda i punkty końcowe bramy API związane z samym projektem. Ze starym serwerem mam każdą lambdę i punkt końcowy jako całkowicie oddzielną funkcję, to działało całkiem dobrze dla mnie.

Nie mogę już tego robić, jeśli spróbuję, moja druga funkcja lambda zastąpi moją pierwszą, prawdopodobnie dlatego, że moja "nazwa usługi" dla obu jest taka sama. Moja nazwa usługi jest taka sama, ponieważ chcę mieć oba punkty końcowe w tym samym interfejsie API w bramce interfejsu API. Ponieważ serwer bez serwera tworzy nazwę interfejsu API na podstawie nazwy usługi.

Tak więc próbowałem dodać obie funkcje do tej samej "usługi". to działało w przeważającej części, z tym że teraz muszę włączyć moją niestandardową instrukcję ról dla wszystkich moich funkcji do tej samej roli (ponieważ ta jedna rola jest teraz połączona z wszystkimi moimi funkcjami). Skutecznie daje więcej uprawnień do każdej indywidualnej funkcji niż powinna. Inną kwestią jest to, że wszystkie moje pliki obsługi dla różnych funkcji są umieszczane w każdym pakiecie wdrażania funkcji.

W zasadzie, nie jestem pewien, jakie jest prawidłowe podejście do wielu funkcji, które odnoszą się do tego samego projektu, ale są odrębne w funkcjonalności. To miało sens, teraz nie ma.

Jeśli ktoś może dać mi jakieś wskazówki proszę

Dzięki

Odpowiedz

5

Rozumiem twoją frustrację. Miałem to samo uczucie, dopóki nie zagłębiłem się w nową wersję i utworzyłem lepsze zrozumienie. Należy jednak pamiętać, że nowa wersja nie jest jeszcze całkowicie ukończona. Jeśli czegoś kompletnie nie ma, możesz zgłosić problem i nadać mu priorytet przed wygaśnięciem wersji 1.0.

Należy zdefiniować wiele funkcji w ramach tej samej usługi pod pozycją functions: sekcji serverless.yml. Aby spakować te funkcje osobno (z wyłączeniem kodu dla innych funkcji), musisz ustawić individually: true w sekcji package:. Następnie możesz użyć opcji włączania i wykluczania na poziomie katalogu głównego i na poziomie funkcji. Nastąpi nadchodząca zmiana, która pozwoli ci użyć składni globalnej w twoich opcjach włączania i wykluczania (przykład **/* - fn.js). Więcej informacji na temat pakowania można znaleźć tutaj: https://serverless.com/framework/docs/guide/packaging/.

Nie wiesz, jak korzystać z różnych ról w różnych funkcjach w ramach tej samej usługi. Jak to zrobiliście za pomocą 0,5?

+0

Dzięki za odpowiedź, opakowania odpowiedziały na moją pierwszą obawę. Kiedyś przypisywałem różne role do różnych funkcji za pomocą znacznika "customRole", który wskazuje funkcję do arn roli. Ta funkcja jest przypisana do każdej funkcji, więc możesz przypisać jej inną rolę, aby ograniczyć ją tylko do uprawnień, które powinna mieć – 3uPh0riC

1

Próbowałem znaleźć rozwiązanie dla poszczególnych ról iam na funkcję. Nie mogłem znaleźć sposobu, aby to zrobić, ale gdy przeglądałem dokumentację, znalazłem wiersz: "Wkrótce pojawi się obsługa oddzielnych ról IAM dla funkcji." na this page, więc przynajmniej wiemy, że nad nim pracują.

Powiązane problemy