調用內部函數Fn::Sub,將字符串中的變量(key)的值替換為您指定的值。
函數聲明
JSON
{ "Fn::Sub": [ "String", { "Var1Name": "Var1Value", "Var2Name": "Var2Value", ... } ] }
YAML
完整函數名的語法。
Fn::Sub: - String - Var1Name: Var1Value Var2Name: Var2Value ...
縮寫形式語法。
!Sub [String, {"Var1Name": "Var1Value", "Var2Name": "Var2Value"}]
參數信息
String:一個能進行變量替換的字符串。
如果您以${VarName}的形式編寫變量,變量可以為模板參數、偽參數、資源名稱、資源屬性或鍵值對映射中的變量名稱等。如果您僅指定模板參數、偽參數、資源名稱和資源屬性,則不需要指定鍵值對映射,請參見特殊示例。
當您指定模板參數、偽參數或資源名稱時(例如${MyParameter}),ROS返回的值與您使用Ref內部函數返回的值相同。當您指定資源屬性(例如${MyInstance.InstanceId}),ROS返回的值與使用Fn::GetAtt內部函數返回的值相同。
說明如果您想要保留變量不被替換,請在左大括號后添加英文感嘆號(!)。例如${!Literal},ROS會將該文本解析為${Literal}。
VarName:字符串中包含的變量名稱。
VarValue:字符串中對應變量名稱待替換的新值。
返回值
返回替換變量后的字符串。
特殊示例
如果您只需要引用模板參數、偽參數(Pseudo parameters)、資源名稱以及資源屬性,則不需要指定變量字典,您可以結合${}一起使用。
返回引用參數的對應值。
Fn::Sub: ${String}
{"Fn::Sub": "${String}"}
返回引用的字符串。
Fn::Sub: String
{"Fn::Sub": "String"}
示例:
ROSTemplateFormatVersion: '2015-09-01'
Outputs:
StackId1:
Value:
Fn::Sub: ${ALIYUN::StackId}
StackId2:
Value:
Fn::Sub: ALIYUN::StackId
{
"ROSTemplateFormatVersion": "2015-09-01",
"Outputs": {
"StackId1": {
"Value": {
"Fn::Sub": "${ALIYUN::StackId}"
}
},
"StackId2": {
"Value": {
"Fn::Sub": "ALIYUN::StackId"
}
}
}
}
返回值:
StackId1:0f848ecd-c6fb-47aa-add5-910799c2****
StackId2:ALIYUN::StackId
完整使用示例
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
VpcName:
Type: String
Default: vpc
Resources:
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
VpcName:
Ref: VpcName
CidrBlock: 10.0.XX.XX
Outputs:
Pseudo:
Value:
!Sub
- 'Var1: ${Var1}, Var2: ${Var2}, StackName: ${ALIYUN::StackName}, Region: ${ALIYUN::Region}'
- Var1: Var1Value
Var2: Var2Value
VpcId:
Value:
!Sub '資源的返回值:${Vpc.VpcId}, 資源ID: ${Vpc}'
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"VpcName": {
"Type": "String",
"Default": "vpc"
}
},
"Resources": {
"Vpc": {
"Type": "ALIYUN::ECS::VPC",
"Properties": {
"VpcName": {
"Ref": "VpcName"
},
"CidrBlock": "10.0.XX.XX"
}
}
},
"Outputs": {
"Pseudo": {
"Value": {
"Fn::Sub": [
"Var1: ${Var1}, Var2: ${Var2}, StackName: ${ALIYUN::StackName}, Region: ${ALIYUN::Region}",
{
"Var1": "Var1Value",
"Var2": "Var2Value"
}
]
}
},
"VpcId": {
"Value": {
"Fn::Sub": "資源的返回值:${Vpc.VpcId}, 資源ID: ${Vpc}"
}
}
}
}
返回值:
Var1: Var1Value, Var2: Var2Value, StackName: SubTest, Region: cn-hangzhou
資源的返回值:vpc-bp11eu7avmtvr37hl****, 資源ID: vpc-bp11eu7avmtvr37hl****
支持的函數
文檔內容是否對您有幫助?