Fn::Split
要将字符串拆分为一列字符串值,以便从结果字符串列表中选择一个元素,请使用 Fn::Split
内部函数。用分隔符 (例如逗号 ,
) 指定拆分位置。在您拆分字符串后,请使用 Fn::Select 函数选择特定的元素。
例如,如果将以逗号分隔的子网 ID 字符串导入您的堆栈模板,您可以在每个逗号的位置拆分字符串。在子网 ID 列表中,使用 Fn::Select
内部函数来指定资源的子网 ID。
声明
JSON
{ "Fn::Split" : [ "
", "
delimiter
source string
" ] }
YAML
完整函数名称的语法:
Fn::Split: [
,
delimiter
source string
]
短格式的语法:
!Split [
,
delimiter
source string
]
参数
您必须指定两个参数。
- 分隔符
-
确定源字符串划分位置的字符串值。
- 源字符串
-
要拆分的字符串值。
返回值
字符串值的列表。
示例
以下示例演示了 Fn::Split
函数的行为。
简单列表
以下示例在每个竖条处拆分字符串 (|
)。该函数返回 ["a", "b", "c"]
。
JSON
{ "Fn::Split" : [ "|" , "a|b|c" ] }
YAML
!Split [ "|" , "a|b|c" ]
空字符串值的列表
如果您用连续的分隔符拆分字符串,则结果列表将包含空字符串。以下示例显示了带有两个连续的分隔符和一个附加分隔符的字符串如何进行拆分。该函数返回 ["a", "", "c",
""]
。
JSON
{ "Fn::Split" : [ "|" , "a||c|" ] }
YAML
!Split [ "|" , "a||c|" ]
拆分已导入的输出值
以下示例拆分已导入的输出值,然后按照 Fn::Select
函数所指定的,从子网 ID 的结果列表中选择第三个元素。
JSON
{ "Fn::Select" : [ "2", { "Fn::Split": [",", {"Fn::ImportValue": "AccountSubnetIDs"}]}] }
YAML
!Select [2, !Split [",", !ImportValue AccountSubnetIDs]]
支持的函数
对于 Fn::Split
分隔符,不能使用任何函数。您必须指定字符串值。
对于值的 Fn::Split
列表,您可使用以下函数:
-
Fn::Base64
-
Fn::FindInMap
-
Fn::GetAtt
-
Fn::GetAZs
-
Fn::If
-
Fn::ImportValue
-
Fn::Join
-
Fn::Select
-
Fn::Sub
-
Ref