内置函数(BuiltinFunctions)
函数说明
- Fn::Base64Encode:返回输入字符串的Base64编码结果。
- Fn::Base64Decode:返回输入字符串的Base64解码结果。
- Fn::MergeMap:将列表中多个Map合并成一个Map。
- Fn::Join:将一组值连接起来,用特定分隔符隔开。
- Fn::Select:数据元容器通过查询索引返回的单个数据元。
- Fn::Split:通过指定分隔符对字符串进行切片,并返回所有切片组成的列表。
- Fn::Replace:将字符串中指定子字符串用新字符串替换。
- Fn::Min:返回列表中最小元素。
- Fn::Max:返回列表中最大元素。
- Fn::First:返回列表中第一个元素。
- Fn::Last:返回列表中最后一个元素。
- Fn::ListJoin:将多个参数转换成列表。
- Fn::Equals:比较两个值是否相等。
- Fn::If:根据判断条件真假返回不同的值。
- Fn::Not:对值取否操作。
- Fn::AddHour:对一个UTCT时间向后推移N小时。
- Fn::FormatUTCTime:按不同单位精度进行格式化UTC时间。
- Fn::Eval:执行字符串中的单行表达式,并返回执行结果。
- Fn::And:逻辑与。
- Fn::Or: 逻辑或。
- Fn::Intersection:取多个数组的交集。
- Fn::Union:取多个数组的并集。
- Fn::Difference:取多个数组的并集与交集的差集。
- Fn::MapJoin:将两个List组合成一个Map,组合时,会把第一个List内的所有值,作为Map中每个键值对的键,会把第二个List内的值,作为Map中每个键值对。
- Fn::Sub:将输入字符串中的变量替换为指定的值。
- Fn::ConvertMapToList:转化JSON对象为Key、Value格式的列表。
- Fn::GetAtt: 通常用于COS产品中,用于获取指定资源的属性。
- Fn::Exists: 返回指定的key是否存在
使用函数
内建函数的使用主要由内置函数名和待处理参数组成。调用函数的声明表达式即表示函数处理参数后返回的结果,且表达式作为函数返回的结果可以像其他参数一样被引用。
Fn::Base64Encode
返回输入字符串的Base64编码结果。
声明
{"Fn::Base64Encode": "StringToBeBase64"}
参数
StringToBeBase64:要进行Base64编码的String。
返回值
Base64方式表示的原始字符串。
示例
{"Fn::Base64Encode": "hello"}
示例返回
"aGVsbG8="
Fn::Base64Decode
返回Base64字符串的解码结果。
声明
{"Fn::Base64Decode": "Base64ToBeString"}
参数
Base64ToBeString:Base64编码方式表示的String。
返回值
Base64解码后的原始String。
示例
{"Fn::Base64Decode": "aGVsbG8="}
示例返回
"hello"
Fn::MergeMap
将列表中多个Map合并成一个Map。
声明
{"Fn::MergeMap":"aListConatinsDicts"}
参数
aListConatinsDicts:含有多个映射的List。
返回值
List中多个Map合并成的一个Map。
示例
{"Fn::MergeMap":[{"key_1":"value_1"},{"key_2":"value_2"}]}
示例返回
{"key_1":"value_1","key_2":"value_2"}
Fn::Join
将一组值连接起来,用特定分隔符隔开。
声明
{"Fn::Join":["Connector","aListContainsString"]}
参数
Connector:作为连接符String。
aListContainsString:包含字符串的List。
返回值
List内多个元素连接后的字符串。
示例
{"Fn::Join":[",",["a","b","c"]]}
示例返回
"a,b,c"
Fn::Select
数据元容器通过查询索引返回的单个数据元。
声明
{"Fn::Select":["Index","Container"]}
参数
Index:被查询Container的索引String或Number。
Container:被查询的List或Map。
返回值
查询指定索引返回的结果。
示例1
{"Fn::Select":["IpAddress",{"IpAddress":["192.168.1.123","192.168.1.234"]}]}
示例1返回
["192.168.1.123","192.168.1.234"]
示例2
{"Fn::Select":["1",["192.168.1.123","192.168.1.234"]]}
示例2返回
"192.168.1.234"
Fn::Split
通过指定分隔符对字符串进行切片,并返回所有切片组成的列表。
声明
{"Fn::Split":["Separator","StringToSeprate"]}
参数
Separator:作为分隔符的String。
StringToSeprate:将被按分隔符分成一个List的String。
返回值
StringToSeprate按分隔符分成的一个List。
示例
{"Fn:: Split":[",","a,b,c"]}
示例返回
["a","b","c"]
Fn::Replace
将字符串中指定子字符串用新字符串替换。
声明
{ "Fn::Replace": [{"$varName": "StringToReplaceWith"}, "StringToReplace"]}
参数
$varName:占位符,以$开始后面连接普通参数名即可,其中$后面参数名命名要求同模板参数名。
StringToReplaceWith:占位符将被替换成的值。
StringToReplace:将被替换的值(含占位符),如"$varName is foo"。
返回值
若参数StringToReplaceWith是"baz",则返回为"baz is foo"。
示例
{ "Fn::Replace": [{"$varName": "baz"}, "$varName is foo" ]}
示例返回
"baz is foo"
Fn::Min
返回列表中最小元素。
声明
{"Fn::Min":"aList"}
参数
aList:一个含有元素的List;List中元素类型可以为string,int,各元素必须为同一类型。
返回值
忽略值为None的元素,返回List中最小的元素,若集合元素全部为None则返回None。
示例
{"Fn::Min":["123","234"]}
示例返回
"123"
Fn::Max
返回列表中最大元素。
声明
{"Fn::Max":"aList"}
参数
aList:一个含有元素的List;List中元素类型可以为string、int,各元素必须为同一类型。
返回值
忽略值为None的元素,返回List中最大的元素,若集合元素全部为None则返回None。
示例
{"Fn::Max":["123","234"]}
示例返回
"234"
Fn::First
返回列表中第一个元素。
声明
{"Fn::First":"aList"}
参数
aList:一个含有元素的List;List中元素类型不限。
返回值
输出为集合中迭代返回的第一个元素;对loop来说,按照Items中迭代返回的Item生成的task execution id进行排序。
示例
{"Fn::First":["123","234"]}
示例返回
"123"
Fn::Last
返回列表中最后一个元素。
声明
{"Fn::Last":"aList"}
参数
aList:一个含有元素的List;List中元素类型不限。
返回值
输出为集合中迭代返回的最后一个元素;对loop来说,按照Items中迭代返回的Item生成的task execution id进行排序。
示例
{"Fn::Last":["123","234"]}
示例返回
"234"
Fn::ListJoin
将多个参数转换成列表。
声明
{"Fn::ListJoin": "IterableContainer"}
参数
IterableContainer是一个可迭代的集合,集合中元素类型不限。
返回值
将集合转换成List输出。
示例
{"Fn::ListJoin": ["a",2, 3]}
示例返回
["a",2,3]
Fn::Equals
比较两个值是否相等。如果两个值相等,则返回true;如果不相等,则返回false。
声明
{"Fn::Equals": ["parameter1", "parameter2"]}
参数
parameter1,parameter2为两个任意类型值。
返回值
如果两个值相等,则返回true;如果不相等,则返回false。
示例
{"Fn::Equals": ["Running","Stopped"]}
示例返回
false
Fn::If
如果指定的条件计算为true,则返回一个值;如果指定的条件计算为false,则返回另一个值。
声明
{"Fn::If":["condition","value_if_true","value_if_false"]}
参数
condition_name:待判断的条件参数。
value_if_true:当指定的条件计算为true时,返回此值。
value_if_false:当指定的条件计算为false时,返回此值。
返回值
当条件计算为true时,返回value_if_true。
当条件计算为false时,返回value_if_false。
示例
{"Fn::If":[false,"Stopped","Running"]}
示例返回
"Running"
Fn::Or
逻辑或操作。
声明
{"Fn::Or": ["condition1","condition2"]}
参数
condition1、condition2:将进行逻辑或的条件。
返回值
当condition1和condition2均为false时,返回false;否则,返回true。
示例
{"Fn::Or":[true,false]}
示例返回
true
Fn::And
逻辑或操作。
声明
{"Fn::And": [ "condition1", "condition2"]}
参数
condition1、condition2·:将要进行逻辑与的条件。
返回值
当condition1和condition2均为true时,返回true;否则,返回false。
示例
{"Fn::And": [true,false]}
示例返回
false
Fn::Not
对值取否操作。
声明
{"Fn::Not": "condition"}
参数
condition:将要取否的条件。
返回值
当condition为true时,返回false;当condition为false时,返回true。
示例
{"Fn::Not": true}
示例返回
false
Fn::AddHour
表示对一个UTCT时间向后推移N小时,使其成为一个新的UTC时间。
声明
{"Fn::AddHour": ["utc_time", "hours_count" ]}
参数
utc_time:一个要向后推移的UTC时间。
hours_count:要向后推移的小时数,限取整数。
返回值
utc_time被推移hours_count小时后的新UTC时间。
示例
{"Fn::AddHour": ["2019-06-01T02:12:45Z", 6]}
示例返回
"2019-06-01T08:12:45Z"
Fn::FormatUTCTime
表示对一个UTC时间按不同单位精度进行格式化,生成的新时间其精度只保留到需要的时间单位。
声明
{"Fn::FormatUTCTime": ["utc_time", "to_be_utc_time_format" ]}
参数
utc_time:待被格式化的UTC时间。
to_be_utc_time_format:将要把utc_time格式化成的新时间格式。
返回值
新格式的时间。
示例
{"Fn::FormatUTCTime": ["2019-06-01T02:12:45Z","%Y-%m-%dT%H:%MZ"]}
示例返回
"2019-06-01T02:12Z"
Fn::Eval
表示执行一个字符串中的表达式(不支持表达式中含换行),并返回执行结果。
声明
{"Fn::Eval":["expression"]}
参数
expression:被执行的表达式(如运算式)。
返回值
表达式执行结果。
示例
{"Fn::Eval":["1+3*2+3%2+1"]}
示例返回
9
Fn::Intersection
对多个数组取交集,返回共同包含的值。
声明
{"Fn::Intersection":[ list1, list2]}
参数
list1、list2:要取交集的数组。
返回值
一个数组,其中的元素是多个数组共同包含的值。
示例
{"Fn::Intersection":[["i-1","i-2"],["i-1","i-3"]]}
示例返回
["i-1"]
Fn::Union
对多个数组中的元素去重后合并为一个数组,返回合并后的新数组。
声明
{"Fn::Union":[ list1, list2]}
参数
list1、list2:要合并的数组。
返回值
一个数组,其中的元素是多个数组的并集。
示例
{"Fn::Union":[["i-1","i-2"],["i-1","i-3"]]}
示例返回
["i-1","i-2","i-3"]
Fn::Difference
查看多个数组的并集与交集的差集,返回包含差集结果的新数组。
声明
{"Fn::Difference":[ list1, list2]}
参数
list1、list2:要筛选存在不同元素的数组。
返回值
一个数组,其元素是多个数组的并集与交集的差集。
示例
{"Fn::Difference":[["i-1","i-2"],["i-1"]]}
示例返回
["i-2"]
Fn::MapJoin
将两个List组合成一个Map,组合时,会把第一个List内的所有值,作为Map中每个键值对的键,会把第二个List内的值,作为Map中每个键值对的值。
声明
{'Fn::MapJoin': [List1, List2] }
参数
aListConatinsDicts:含有多个映射的List。
返回值
一个Map,其中每个键值对的键是List1的对应元素,每个键值对的值是List2的对应元素。
示例
{'Fn::MapJoin':[['i-1', 'i-2', 'i-3'],[1,2,3]]}
示例返回
{'i-1':1, 'i-2':2, 'i-3':3}
Fn::Sub
将输入字符串中的变量替换为指定的值。
声明
{'Fn::Sub':[TargetString, JSON]}
参数
TargetString、JSON
返回值
String
示例
{"Fn::Sub":["Var1: ${Var1}, Var2: ${Var2}",{"Var1":"Var1Value","Var2":"Var2Value"}]}
示例返回
"Var1: Var1Value, Var2: Var2Value"
Fn::ConvertMapToList
转化JSON对象为Key、Value格式的列表。
声明
{'Fn::ConvertMapToList':[JSON/JSONString]}
参数
JSON
返回值
List
示例1
{"Fn::ConvertMapToList":[{"key1":"value1","key2":"value2"}]}
示例1返回
[{"Key":"key1","Value":"value1"},{"Key":"key2","Value":"value2"}]
示例2
{"Fn::ConvertMapToList":["{\"key1\": \"value1\", \"key2\": \"value2\"}"]}
示例2返回
[{"Key":"key1","Value":"value1"},{"Key":"key2","Value":"value2"}]