All Products
Search
Document Center

Resource Orchestration Service:Fn::Sub

Last Updated:Jul 02, 2025

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.

    Catatan

    Untuk 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::StackId

Contoh 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****

Fungsi yang didukung

Fn::Indent