Как заставить файл шаблона SAM работать для двух разных сред? - PullRequest
0 голосов
/ 19 мая 2019

Я использую AWS SAM для развертывания своей лямбды на AWS.Я создал файл template.yaml и SAM будет использовать этот файл для генерации упакованного yaml.Он отлично работает, но я не знаю, как сделать один и тот же файл шаблона для двух сред prod и staging.Я хочу изменить имя лямбда-функции и API-интерфейс шлюза для разных env.Например, я хотел бы назвать это mylambda-prod для производства и mylambda-staging для постановки.Имя функции определяется в файле шаблона жестко закодированным способом.Ниже мой файл шаблона.Как сделать имя функции и путь к шлюзу API динамическими?Я знаю, что могу определить два разных файла шаблона, но я ищу лучший способ.

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      CodeUri: hello-world/
      Handler: app.lambdaHandler
      Runtime: nodejs8.10
      Events:
        HelloWorld:
          Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /hello
            Method: post

1 Ответ

0 голосов
/ 19 мая 2019

Я не думаю, что вы можете изменить имена функций, но вы можете динамически назначать пути и использовать комбинацию Map и Parameters, чтобы иметь разные значения, основанные на разных значениях параметров. как то так:

Parameters: 
  Environment: 
  Type: String
  Default: dev
Mappings: 
  PathsMap:
     dev:
       path1: /hello1
       path2: /hello2
     prd:
       path1: hello11
       path2: /hello12

и в определении вашей функции вы назначаете путь следующим образом

Path: !FindInMap [ PathsMap, !Ref Environment, path1]

вы можете переопределить значение параметра при развертывании шаблона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...