AWS SAM模板:在不同的SAM模板文件之间共享资源

时间:2020-02-07 19:28:22

标签: amazon-web-services yaml aws-serverless

是否可以在SAM文件中声明无服务器应用程序所需的AWS资源(例如sam-common.yaml),然后将其包含在其他SAM文件中,例如(sam-dev.yaml,sam-prod.yaml等) )。

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 的模板引擎em>和 ejs 做)。这样可以避免在不同的环境特定文件中复制所有资源。

有一些方法可以将yaml文件包含到另一个文件中,如此处How can I include a YAML file inside another?所述。但是我不确定处理这些文件的AWS后端是否使用这些解决方案中的任何一种。

0 个答案:

没有答案