調用內部函數Fn::Select,通過索引返回列表或字典中的數據。
函數聲明
獲取列表(數組)中的數據
根據索引獲取單個數據
JSON
{ "Fn::Select": [ "index", [ "value1", "value2", ... ], "default_value" ] }
YAML
完整函數名的語法。
Fn::Select: - index - - value1 - value2 - ... - default_value
縮寫形式語法。
!Select [index, [value1, value2, ...], default_value]
根據索引獲取多個數據
JSON
{ "Fn::Select": [ "start:stop:step", [ "value1", "value2", ... ] ] }
YAML
完整函數名的語法。
Fn::Select: - start:stop:step - - value1 - value2 - ...
縮寫形式語法。
!Select [start:stop:step, [value1, value2, ...]]
獲取字典(映射表)某個鍵對應的值
JSON
{ "Fn::Select": [ "key", { "key1": "value1", "key2": "value2", ... }, "default_value" ] }
YAML
完整函數名的語法。
Fn::Select: - key - key1: value1 key2: value2 ... - default_value
縮寫形式語法。
!Select [key, {key1:value1, key2:value2}, default_value]
參數信息
index
:待檢索數據的索引。索引是0到N-1之間或者-N到-1之間的某個值(其中N表示列表中元素的數量),負數表示從右往左第幾個元素。當索引不在取值范圍內,如果指定了默認值則返回默認值,如果未指定則返回空字符串。start
、stop
和step
:根據指定的起始位置和終止位置獲取列表中的元素,可以指定步長,即每隔step-1個元素取一個元素,最后返回一個列表。start:stop
:start、stop與index的取值要求相同,start不填時默認為0,stop不填時默認為N。返回列表中第start+1到第stop個元素組成的列表,如果二者取值不在取值范圍內則返回空列表。start:stop:step
:step不填時默認為1,如果step為負數時,則start表示的元素索引應大于stop表示的元素索引,從第start個元素到第stop+1元素,每隔-step-1個元素取一個元素,返回一個列表。
key
:字典中的某個鍵,返回鍵對應的值。當字典中不存在該鍵,如果指定了默認值則返回默認值,如果未指定默認值則返回空字符串。default_value
:index或key未命中時返回的默認值。如果未指定,則返回空字符串。
返回值
選定的數據。
使用示例
獲取列表或數組中的值
!Select ['1', [apples, grapes, oranges, mangoes]]
{ "Fn::Select": [ "1", ["apples", "grapes", "oranges", "mangoes"] ] }
返回值:grapes。
!Select ['1:3', [1,2,3,4,5]]
{ "Fn::Select": [ "1:3", [1,2,3,4,5] ] }
返回值:[2, 3]。
!Select ['::2', [1,2,3,4,5]]
{ "Fn::Select": [ "::2", [1,2,3,4,5] ] }
返回值:[1, 3, 5]。
!Select ['5:0:-2', [1,2,3,4,5]]
{ "Fn::Select": [ "5:0:-2", [1,2,3,4,5] ] }
返回值:[5, 3]。
獲取字典某個鍵對應的值
!Select [key1, {key1: grapes, key2: mangoes}]
{
"Fn:Select": [
"key1",
{
"key1": "grapes",
"key2": "mangoes"
}
]
}
返回值:grapes。
如果數據元列表是一個CommaDelimitedList
Parameters:
userParam:
Type: CommaDelimitedList
Default: 10.0.0.1, 10.0.0.2, 10.0.0.3
Resources:
resourceID:
Properties:
CidrBlock:
!Select:
- '0'
- !Ref userParam
返回值:10.0.0.1。
支持的函數
對于Fn::Select索引值,您可以使用Ref函數。
對于對象的Fn::Select列表,您可以使用以下函數。