在 cloudformation 模板中使用环境变量
Use env variables inside cloudformation templates
我有一个具有多个分支的放大应用程序。
我已使用 amplify add custom
添加了自定义 cloudformation 模板
看起来像:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": { "env": { "Type": "String" } },
"Resources": {
"db": {
"Type": "AWS::Timestream::Database",
"Properties": { "DatabaseName": "dev_db" }
},
"timestreamtable": {
"DependsOn": "db",
"Type": "AWS::Timestream::Table",
"Properties": {
"DatabaseName": "dev_db",
"TableName": "avg_16_4h",
"MagneticStoreWriteProperties": { "EnableMagneticStoreWrites": true },
"RetentionProperties": {
"MemoryStoreRetentionPeriodInHours": "8640",
"MagneticStoreRetentionPeriodInDays": "1825"
}
}
}
},
"Outputs": {},
"Description": "{\"createdOn\":\"Windows\",\"createdBy\":\"Amplify\",\"createdWith\":\"8.3.1\",\"stackType\":\"custom-customCloudformation\",\"metadata\":{}}"
}
你可以看到有一个字段叫做DatabaseName
。在我的放大应用程序中,我编写了一个名为 TIMESTREAM_DB
的环境变量,我想在这个 cloudformation 文件中使用它。
这可能吗,还是我需要全部手写进去?
模板无法访问任意环境变量。相反,CloudFormation 将 deploy-time 值注入到具有 Parameters.
的模板中
Amplify 有助于将 env
变量添加为参数。 A la Amplify docs,使用 env
值作为 AWS::Timestream::Database
名称后缀:
"DatabaseName": "Fn::Join": [ "", [ "my-timestream-db-name-", { "Ref": "env" } ] ]
AWS::Timestream::Table
资源还需要一个 DatabaseName
参数。您可以重复上面的操作,但是获取名称 via the Database's Ref:
更枯燥
"DatabaseName": { "Ref" : "db" }
我有一个具有多个分支的放大应用程序。
我已使用 amplify add custom
看起来像:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": { "env": { "Type": "String" } },
"Resources": {
"db": {
"Type": "AWS::Timestream::Database",
"Properties": { "DatabaseName": "dev_db" }
},
"timestreamtable": {
"DependsOn": "db",
"Type": "AWS::Timestream::Table",
"Properties": {
"DatabaseName": "dev_db",
"TableName": "avg_16_4h",
"MagneticStoreWriteProperties": { "EnableMagneticStoreWrites": true },
"RetentionProperties": {
"MemoryStoreRetentionPeriodInHours": "8640",
"MagneticStoreRetentionPeriodInDays": "1825"
}
}
}
},
"Outputs": {},
"Description": "{\"createdOn\":\"Windows\",\"createdBy\":\"Amplify\",\"createdWith\":\"8.3.1\",\"stackType\":\"custom-customCloudformation\",\"metadata\":{}}"
}
你可以看到有一个字段叫做DatabaseName
。在我的放大应用程序中,我编写了一个名为 TIMESTREAM_DB
的环境变量,我想在这个 cloudformation 文件中使用它。
这可能吗,还是我需要全部手写进去?
模板无法访问任意环境变量。相反,CloudFormation 将 deploy-time 值注入到具有 Parameters.
的模板中Amplify 有助于将 env
变量添加为参数。 A la Amplify docs,使用 env
值作为 AWS::Timestream::Database
名称后缀:
"DatabaseName": "Fn::Join": [ "", [ "my-timestream-db-name-", { "Ref": "env" } ] ]
AWS::Timestream::Table
资源还需要一个 DatabaseName
参数。您可以重复上面的操作,但是获取名称 via the Database's Ref:
"DatabaseName": { "Ref" : "db" }