调用内部函数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