All Products
Search
Document Center

Resource Orchestration Service:Fn::GetJsonValue

Last Updated:Mar 15, 2024

The built-in function Fn::GetJsonValue resolves a JSON string and queries the value of a key from the first layer.

Declaration

  • JSON

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

    • Syntax for the full function name:

      Fn::GetJsonValue:
       - key
       - json_string
    • Syntax for the short form:

      !GetJsonValue [key, json_string]

Parameters

  • key: the key value.

  • json_string: the JSON string that you want to resolve.

Examples

In the following example, the WebServer instance executes UserData and returns a JSON string. Then, the WebServer2 instance queries the key value from the string.

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

Supported functions