Маршрутизация трафика c на несколько шлюзов API - PullRequest
0 голосов
/ 03 мая 2020

Я хотел бы разделить свой шаблон со всеми лямбда-функциями на несколько шаблонов для каждого домена (products, users et c). Предполагается, что доступ к лямбдам осуществляется из API. Я не могу создать единый API для них, CloudFormation вызывает проблемы, связанные с тем, что ApiEvents следует внедрить в тот же шаблон, что и сам API. И это не поможет, если я вложу стеки. Поэтому мой подход заключается в том, что каждый шаблон имеет свой собственный API, из которого доступны лямбды. Но каждый API, естественно, имеет свой собственный URL, когда CF развертывает их.

События для функций без сервера описываются для каждой функции как:

GetFoos:
  Type: AWS::Serverless::Function
  Properties:
    ...
    Events:
       GetFoos:
         Type: Api 
         Properties:
           Path: /foo
           Method: get
           RestApiId: 
             !Ref MyApi

Очевидно, я хотел бы получить доступ ко всем лямбдам с того же базового URL. Таким образом, test.myproject.com/products будет получать доступ к функциям в шаблоне продуктов через его API, а test.myproject.com/users будет получать доступ к функциям в пользовательской команде через его API. Как это можно сделать?

Могу ли я использовать Elasti c Load Balancer для маршрутизации traffi c к различным API на основе запрошенного пути? Route53? Должен ли я использовать AWS :: ApiGateway :: DomainName и AWS :: ApiGateway :: BasePathMapping?

Или мне нужен полный макияж для моего проекта? Это было бы плохой новостью, так как проект близок к сроку. Я только столкнулся с проблемой с более чем 200 ресурсами на один шаблон, и что-то должно быть сделано. В моем шаблоне функций содержится около 70 лямбд, но CF создает AWS :: Lambda :: Permission ресурсы для каждой из этих лямбд, чтобы Api мог их вызывать. Можно ли сделать это вручную, чтобы у Api было только одно разрешение на доступ к каждой лямбде?

...