Fungsi bawaan Fn::Sub menggantikan variabel dalam string dengan nilai yang ditentukan.
Deklarasi
JSON
{ "Fn::Sub": [ "String", { "Var1Name": "Var1Value", "Var2Name": "Var2Value", ... } ] }YAML
Sintaks untuk nama fungsi lengkap:
Fn::Sub: - String - Var1Name: Var1Value Var2Name: Var2Value ...Sintaks untuk bentuk singkat:
!Sub [String, {"Var1Name": "Var1Value", "Var2Name": "Var2Value"}]
Parameter
String: string yang variabelnya ingin diganti dengan nilai baru.
Jika Anda menentukan variabel dalam format ${VarName}, variabel tersebut dapat berupa parameter template, parameter semu, nama sumber daya, properti sumber daya, atau variabel dalam peta kunci-nilai. Jika hanya merujuk pada parameter template, parameter semu, nama sumber daya, dan properti sumber daya, tidak perlu menentukan peta kunci-nilai. Untuk informasi lebih lanjut, lihat Contoh sintaks dalam template.
Jika Anda menentukan parameter template, parameter semu, atau nama sumber daya dalam format ${VarName}, seperti ${MyParameter}, Resource Orchestration Service (ROS) akan mengembalikan nilai yang sama seperti saat menggunakan fungsi bawaan Ref. Jika Anda menentukan properti sumber daya dalam format ${VarName}, seperti ${MyInstance.InstanceId}, ROS akan mengembalikan nilai yang sama seperti saat menggunakan fungsi bawaan Fn::GetAtt.
CatatanUntuk mencegah penggantian variabel, tambahkan tanda seru (!) ke kurung kurawal pembuka ({), misalnya ${!VarName}. Sebagai contoh, jika Anda menentukan ${!Literal}, ROS akan menyelesaikan teks sebagai ${Literal}.
VarName: nama variabel yang terkandung dalam string.
VarValue: nilai yang digunakan ROS untuk menggantikan nama variabel terkait.
Nilai pengembalian
String yang variabelnya telah diganti dengan nilai baru.
Contoh sintaks dalam template
Jika hanya merujuk pada parameter template, parameter semu, nama sumber daya, dan atribut sumber daya, tidak perlu menggunakan data tipe kamus untuk mengganti variabel. Dalam hal ini, Anda dapat menggunakan format ${}. Untuk informasi lebih lanjut, lihat Parameter semu.
Mengembalikan nilai parameter yang dirujuk:
Fn::Sub: ${String}{"Fn::Sub": "${String}"}Mengembalikan nilai string yang dirujuk:
Fn::Sub: String{"Fn::Sub": "String"}
Contoh kode:
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"
}
}
}
}Hasil berikut dikembalikan:
StackId1: 0f848ecd-c6fb-47aa-add5-910799c2****
StackId2: ALIYUN::StackIdContoh template
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 'Nilai pengembalian sumber daya: ${Vpc.VpcId}. ID Sumber Daya: ${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": "Nilai pengembalian sumber daya: ${Vpc.VpcId}. ID Sumber Daya: ${Vpc}"
}
}
}
}Hasil berikut dikembalikan:
Var1: Var1Value, Var2: Var2Value, StackName: SubTest, Region: cn-hangzhou
Nilai pengembalian sumber daya: vpc-bp11eu7avmtvr37hl****. ID Sumber Daya: vpc-bp11eu7avmtvr37hl****