如何在 AWS-SAM 中为每个阶段类型指定不同的环境变量 template.yml
How to specify different environment variables for each stage type in AWS-SAM template.yml
我希望在 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 账户 (AWS Organizations),其中您有一个单独的账户用于暂存,另一个账户用于生产。
因此,如果您想在单个帐户中解决此问题,您可以使用 SSM 参数或 SAM 模板中的映射。
引用现有系统管理器参数
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 ]
我希望在 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 账户 (AWS Organizations),其中您有一个单独的账户用于暂存,另一个账户用于生产。
因此,如果您想在单个帐户中解决此问题,您可以使用 SSM 参数或 SAM 模板中的映射。
引用现有系统管理器参数
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 ]