全部產品
Search
文件中心

Resource Orchestration Service:Fn::GetJsonValue

更新時間:Jun 19, 2024

調用內建函式Fn::GetJsonValue,解析JSON字串,擷取指定的Key在第一層所對應的值。

函式宣告

  • JSON

    {
      "Fn::GetJsonValue": [
        "key",
        "json_string"
      ]
    }
  • YAML

    • 完整函數的文法。

      Fn::GetJsonValue:
       - key
       - json_string
    • 縮寫形式。

      !GetJsonValue [key, json_string]

參數資訊

  • key:索引值。

  • json_string:指定的需要解析的JSON字串。

使用樣本

WebServer2從WebServer執行個體執行完UserData返回的JSON字串中,擷取對應的值。

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  WebServer:
    Type: ALIYUN::ECS::Instance
    Properties:
      ImageId: m-2ze45uwova5fedlu****
      InstanceType: ecs.n1.medium
      SecurityGroupId: sg-2ze7pxymaix640qr****
      Password: Wenqiao****
      IoOptimized: optimized
      VSwitchId: vsw-2zei67xd9nhcqxzec****
      VpcId: vpc-2zevx9ios1rszqv0a****
      SystemDiskCategory: cloud_ssd
      UserData:
        Fn::Replace:
          - ros-notify:
              Fn::GetAtt:
                - WaitConHandle
                - CurlCli
          - Fn::Join:
              - ''
              - - |
                  #!/bin/sh
                - |
                  mkdir ~/test_ros
                - |
                  print hello > ~/1.txt
                - |
                  cmd="ros-notify -d '{\"id\" : \"1\", \"data\" : [\"1111\", \"2222\"]}'"
                - |
                  eval $cmd
      PrivateIpAddress: 192.168.XX.XX
      HostName: userdata-1
  WaitConHandle:
    Type: ALIYUN::ROS::WaitConditionHandle
  WaitCondition:
    Type: ALIYUN::ROS::WaitCondition
    Properties:
      Handle:
        Ref: WaitConHandle
      Timeout: 900
  WebServer2:
    Type: ALIYUN::ECS::Instance
    Properties:
      ImageId: m-2ze45uwova5fedlu****
      InstanceType: ecs.n1.medium
      SecurityGroupId: sg-2ze7pxymaix640qr****
      Password: Wenqiao****
      IoOptimized: optimized
      VSwitchId: vsw-2zei67xd9nhcqxzec****
      VpcId: vpc-2zevx9ios1rszqv0a****
      SystemDiskCategory: cloud_ssd
      UserData:
        Fn::Join:
          - ''
          - - |
              #!/bin/sh
            - |
              mkdir ~/test_ros
            - |
              echo hello > ~/1.txt
            - server_1_token=
            - !GetJsonValue
                - '1 '
                - !GetAtt WaitCondition.Data
            - |+
      PrivateIpAddress: 192.168.XX.XX
      HostName: userdata-2
Outputs:
  InstanceId:
    Value: !GetAtt WebServer.InstanceId
  PublicIp:
    Value: !GetAtt WebServer.PublicIp

支援的函數