La fonction Fn::GetJsonValue analyse une chaîne JSON et renvoie la valeur d'une clé spécifiée au premier niveau.
Déclaration
-
JSON
{ "Fn::GetJsonValue": [ "key", "json_string" ] } -
YAML
-
Syntaxe du nom complet de la fonction :
Fn::GetJsonValue: - key - json_string -
Syntaxe de la forme courte :
!GetJsonValue [key, json_string]
-
Paramètres
key: clé dont la valeur doit être récupérée.json_string: chaîne JSON à analyser.
Exemples
Dans l'exemple suivant, l'instance WebServer exécute UserData et renvoie une chaîne JSON. L'instance WebServer2 récupère ensuite une valeur de clé à partir de cette chaîne.
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