【问题标题】:How to specify different environment variables for each stage type in AWS-SAM template.yml如何在 AWS-SAM template.yml 中为每个阶段类型指定不同的环境变量
【发布时间】:2021-02-10 22:35:56
【问题描述】:

我希望在我的 template.yml 中为每个构建阶段设置不同的环境变量

我会想象这样的事情:

Globals:
  Function:
    Environment:
      Variables:
        SomeHost: x.amazonaws.com
        DBName: somename
        DBPort: 5430
        DBUsername: ${var1}
        API_BASE_URL: ${var2}

Parameters:
  paramEnvironment:
    Type: String
    AllowedValues:
    - stage
    - prod
    Default: stage

哪里可以设置

stage:
  var1: user1
  API_BASE_URL: https://baseurl1.com
prod:
  var1: user2
  API_BASE_URL: https://baseurl2.com

 当我使用 paramEnvironment 运行部署时,环境将获取所有基于阶段的变量

【问题讨论】:

    标签: aws-lambda environment-variables yaml aws-sam


    【解决方案1】:

    处理不同环境(尤其是无服务器环境)的理想方法是在同一个组织 (AWS Organizations) 下拥有多个 AWS 账户,其中您有一个单独的账户用于暂存,另一个账户用于生产。

    因此,如果您想在单个帐户中解决此问题,您可以在 SAM 模板中使用 SSM 参数或映射

    引用现有系统管理器参数

    Parameters:
      ApiBaseUrl :
        Type : 'AWS::SSM::Parameter::Value<String>'
        Default:  /${paramEnvironment}/apiBaseUrl
    

    通过 SAM 模板中的映射

    Mappings:
        EnvVariables:
            stage:
               var1: user1
               API_BASE_URL: https://baseurl1.com
            prod:
               var1: user2
               API_BASE_URL: https://baseurl2.com
    

    并参考地图,

    !FindInMap [ EnvVariables, ${paramEnvironment}, API_BASE_URL ] 
    

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 2020-03-22
      • 2018-12-16
      • 2019-05-10
      • 2019-09-21
      • 2021-03-24
      • 2021-10-19
      • 2019-11-14
      • 1970-01-01
      相关资源
      最近更新 更多