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
]
パラメータ
両方のパラメータを指定する必要があります。
- delimiter
-
ソース文字列を分割する場所を決める文字列値。
- ソース文字列
-
分割する文字列値。
戻り値
文字列値のリスト。
例
次の例では、Fn::Split
関数の動作を示します。
シンプルなリスト
次の例では、縦線 (|
) ごとに文字列を分割します。この関数は ["a", "b", "c"]
を返します。
JSON
{ "Fn::Split" : [ "|" , "a|b|c" ] }
YAML
!Split [ "|" , "a|b|c" ]
空の文字列値を使用したリスト
継続した区切り記号で文字列を分割する場合、返されるリストには空の文字列が含まれます。次の例では、2 つの連続した区切り記号と追加された区切り記号を持つ文字列がどのように分割されるかを示しています。この関数は ["a", "", "c",
""]
を返します。
JSON
{ "Fn::Split" : [ "|" , "a||c|" ] }
YAML
!Split [ "|" , "a||c|" ]
インポートされた出力値の分割
次の例では、インポートされた出力値を分割し、Fn::Select
関数で指定されるように、返されるサブネット ID のリストから 3 番目の要素を選択します。
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