AWS Шаблон SAM: Совместное использование ресурсов между различными файлами шаблона SAM. - PullRequest
0 голосов
/ 07 февраля 2020

Можно ли объявить AWS ресурсы, необходимые для безсерверного приложения, в файле SAM (скажем, sam-common.yaml), а затем включить его в другие файлы SAM, такие как (sam-dev.yaml, sam-prod.yaml) , et c.).

Файл sam-common.yaml выглядит следующим образом:

Resources:
  Function1:
    Type: 'AWS::Serverless::Function'
    Properties:
      FunctionName: !Ref EnvironmentSpecificLambdaName
      .
      .
      .
      Environment:
        Variables:
          S3_BUCKET_NAME: !Sub 'some-bucket-${EnvName}'
          .
          .
          .
      Tags:
        Environment: !Ref TagEnvironment
  SQSQueue1:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Sub 'some-sqs-queue-${EnvName}'
      VisibilityTimeout: 200

Файл sam-dev.yaml выглядит следующим образом:

AWSTemplateFormatVersion: '2010-09-09'
Transform: ....
Description: ...
Parameters:
  TagEnvironment:
    Type: String
    Default: 'DEV'
  EnvironmentSpecificLambdaName:
    Type: String
    Default: 'some-lambda-dev'
  EnvName:
    Type: String
    Default: 'dev'

Цель состоит в том, чтобы включить sam-common.yaml как частичное внутри sam-dev.yaml (что-то похожее на то, что движки шаблонов, такие как thymeleaf и е js до). Это позволит избежать дублирования всех ресурсов в разных файлах среды, указанных c.

Существуют способы включения файла yaml в другой, как описано здесь Как включить файл YAML в другой файл? . Но я не уверен, использует ли бэкэнд AWS, который обрабатывает эти файлы, какое-либо из этих решений.

...