Tous les produits
Search
Centre de documentation

Resource Orchestration Service:Fn::Sub

Dernière mise à jour :Aug 10, 2026

La fonction Fn::Sub remplace les variables d'une chaîne par les valeurs que vous spécifiez.

Déclaration

  • JSON

    {
      "Fn::Sub": [
        "String",
        {
          "Var1Name": "Var1Value",
          "Var2Name": "Var2Value",
          ...
        }
      ]
     }
  • YAML

    • Syntaxe du nom complet de la fonction :

      Fn::Sub:
        - String
        - Var1Name: Var1Value
          Var2Name: Var2Value
          ...
    • Syntaxe de la forme courte :

      !Sub [String, {"Var1Name": "Var1Value", "Var2Name": "Var2Value"}]

Paramètres

  • String : la chaîne contenant les variables à substituer.

    Les variables utilisent le format ${VarName} et peuvent faire référence aux paramètres du modèle, aux pseudo-paramètres, aux noms de ressources, aux propriétés de ressources ou aux entrées d'un mappage clé-valeur. Si vous faites uniquement référence aux paramètres du modèle, aux pseudo-paramètres, aux noms de ressources et aux propriétés de ressources, le mappage clé-valeur est facultatif. Pour plus d'informations, consultez la section Exemple de syntaxe dans un modèle.

    Lorsque vous faites référence aux paramètres du modèle, aux pseudo-paramètres ou aux noms de ressources tels que ${MyParameter}, Resource Orchestration Service (ROS) les résout de la même manière que la fonction Ref. Lorsque vous faites référence aux propriétés de ressources telles que ${MyInstance.InstanceId}, ROS les résout de la même manière que la fonction Fn::GetAtt.

    Remarque

    Pour empêcher la substitution d'une variable, ajoutez un point d'exclamation (!) après l'accolade ouvrante, comme dans ${!VarName}. Par exemple, ${!Literal} est résolu en texte littéral ${Literal}.

  • VarName : le nom d'une variable dans la chaîne.

  • VarValue : la valeur qui remplace la variable associée.

Valeur renvoyée

La chaîne avec toutes les variables remplacées par leurs valeurs correspondantes.

Exemple de syntaxe dans un modèle

Lorsque vous faites uniquement référence aux paramètres du modèle, aux pseudo-paramètres, aux noms de ressources ou aux attributs de ressources, vous pouvez utiliser directement le format ${} sans mappage clé-valeur. Pour plus d'informations, consultez la section Pseudo-paramètres.

  • Renvoyer la valeur d'un paramètre référencé :

    Fn::Sub: ${String}
    {"Fn::Sub": "${String}"}
  • Renvoyer la valeur d'une chaîne référencée :

    Fn::Sub: String
    {"Fn::Sub": "String"}

Exemple de code :

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"
      }
    }
  }
}

Le résultat suivant est renvoyé :

StackId1: 0f848ecd-c6fb-47aa-add5-910799c2****
StackId2: ALIYUN::StackId

Exemple de modèle

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 'Return value of the resource: ${Vpc.VpcId}. Resource 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": "Return value of the resource: ${Vpc.VpcId}. Resource ID: ${Vpc}"
 }
 }
 }
}

Le résultat suivant est renvoyé :

Var1: Var1Value, Var2: Var2Value, StackName: SubTest, Region: cn-hangzhou
Return value of the resource: vpc-bp11eu7avmtvr37hl****. Resource ID: vpc-bp11eu7avmtvr37hl****

Fonctions prises en charge

Fn::Indent