Fn::FindInMap
A função intrínseca Fn::FindInMap
retorna o valor correspondente às chaves em um mapa de dois níveis que é declarado na seção Mappings
.
Para obter mais informações sobre aprimoramentos na função intrínseca Fn::FindInMap
ao usar a transformação AWS::LanguageExtensions
, consulte Fn::FindInMap enhancements.
Declaração
JSON
{ "Fn::FindInMap" : [ "
MapName
", "TopLevelKey
", "SecondLevelKey
"] }
YAML
Sintaxe para o nome da função completo:
Fn::FindInMap: [
MapName
,TopLevelKey
,SecondLevelKey
]
Sintaxe para a forma resumida:
!FindInMap [
MapName
,TopLevelKey
,SecondLevelKey
]
nota
Você não pode aninhar duas instâncias de duas funções na forma abreviada.
Parâmetros
- MapName
-
O nome lógico de um mapeamento declarado na seção de mapeamento que contém as chaves e os valores.
- TopLevelKey
-
O nome da chave de nível superior. Seu valor é uma lista de pares de chave/valor.
- SecondLevelKey
-
O nome da chave de segundo nível, que é definido para uma das chaves na lista atribuída ao
TopLevelKey
.
Valor de retorno:
O valor que é atribuído a SecondLevelKey
.
Exemplo
O exemplo a seguir mostra como usar Fn::FindInMap
em um modelo com uma seção Mappings
que contém um único mapa, RegionMap
, que associa AMIs com regiões da AWS.
-
O mapa tem 5 chaves de nível superior que correspondem a várias regiões da AWS.
-
Cada chave de nível superior é atribuída a uma lista com duas chaves de segundo nível,
"HVM64"
e"HVMG2"
, que correspondem à arquitetura da AMI. -
Cada uma das chaves de segundo nível é atribuída com um nome de AMI apropriada.
O modelo de exemplo a seguir contém um recurso AWS::EC2::Instance
cuja propriedade ImageId
é definida pela função FindInMap
.
O MapName
é definido como o mapa de interesse, que é "RegionMap"
neste exemplo. A TopLevelKey
é definida como a região na qual a pilha é criada, que é determinada usando o pseudoparâmetro "AWS::Region"
. A SecondLevelKey
está definida como a arquitetura desejada, que é "HVM64"
para este exemplo.
FindInMap
retorna a AMI atribuída à FindInMap
. Para uma instância HVM64 em us-east-1, FindInMap
retornaria "ami-0ff8a91507f77f867"
.
JSON
{ ... "Mappings" : { "RegionMap" : { "us-east-1" : { "HVM64" : "ami-0ff8a91507f77f867", "HVMG2" : "ami-0a584ac55a7631c0c" }, "us-west-1" : { "HVM64" : "ami-0bdb828fd58c52235", "HVMG2" : "ami-066ee5fd4a9ef77f1" }, "eu-west-1" : { "HVM64" : "ami-047bb4163c506cd98", "HVMG2" : "ami-0a7c483d527806435" }, "ap-southeast-1" : { "HVM64" : "ami-08569b978cc4dfa10", "HVMG2" : "ami-0be9df32ae9f92309" }, "ap-northeast-1" : { "HVM64" : "ami-06cd52961ce9f0d85", "HVMG2" : "ami-053cdd503598e4a9d" } } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "HVM64" ] }, "InstanceType" : "m1.small" } } } }
YAML
Mappings: RegionMap: us-east-1: HVM64: "ami-0ff8a91507f77f867" HVMG2: "ami-0a584ac55a7631c0c" us-west-1: HVM64: "ami-0bdb828fd58c52235" HVMG2: "ami-066ee5fd4a9ef77f1" eu-west-1: HVM64: "ami-047bb4163c506cd98" HVMG2: "ami-31c2f645" ap-southeast-1: HVM64: "ami-08569b978cc4dfa10" HVMG2: "ami-0be9df32ae9f92309" ap-northeast-1: HVM64: "ami-06cd52961ce9f0d85" HVMG2: "ami-053cdd503598e4a9d" Resources: myEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: !FindInMap - RegionMap - !Ref 'AWS::Region' - HVM64 InstanceType: m1.small
Funções compatíveis
Você pode usar as seguintes funções em uma função Fn::FindInMap
:
-
Fn::FindInMap
-
Ref