Fn::FindInMap - AWS CloudFormation

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