Fn::GetAZs
A função intrínseca Fn::GetAZs
retorna uma matriz que lista as zonas de disponibilidade para uma região especificada em ordem alfabética. Como os clientes têm acesso a diferentes zonas de disponibilidade, a função intrínseca Fn::GetAZs
permite que os autores do modelo gravem modelos que se adaptam ao acesso do usuário da chamada. Dessa forma, não é necessário realizar a codificação rígida de uma lista completa de zonas de disponibilidade para uma região especificada.
Importante
A função Fn::GetAZs
retorna apenas as zonas de disponibilidade que tenham uma sub-rede padrão, a menos que nenhuma das zonas de disponibilidade tenha uma sub-rede padrão. Nesse caso, todas as zonas de disponibilidade são retornadas.
Da mesma forma que a resposta do comando describe-availability-zones
da AWS CLI, a ordem dos resultados da função Fn::GetAZs
não é garantida e pode ser alterada quando novas zonas de disponibilidade forem adicionadas.
Permissões do IAM
As permissões necessárias para usar a função Fn::GetAZs
dependem da plataforma em que você estiver iniciando as instâncias do Amazon EC2. Para ambas as plataformas, são necessárias permissões para as ações do Amazon EC2 DescribeAvailabilityZones
e DescribeAccountAttributes
. Para o EC2-VPC, também são necessárias permissões para a ação do Amazon EC2DescribeSubnets
.
Declaração
JSON
{ "Fn::GetAZs" : "
região
" }
YAML
Sintaxe para o nome da função completo:
Fn::GetAZs:
região
Sintaxe para a forma resumida:
!GetAZs
região
Parâmetros
- região
-
O nome da região cujas zonas de disponibilidade você deseja obter.
É possível usar o pseudoparâmetro
AWS::Region
para especificar a região na qual a pilha será criada. Especificar uma string vazia é equivalente a especificarAWS::Region
.
Valor de retorno
A lista de zonas de disponibilidade da região.
Exemplos
Avaliar uma região
Para esses exemplos, o CloudFormation avalia Fn::GetAZs
para a seguinte matriz, assumindo que o usuário criou a pilha na região us-east-1
:
[ "us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d", "us-east-1e" ]
JSON
{ "Fn::GetAZs" : "" } { "Fn::GetAZs" : { "Ref" : "AWS::Region" } } { "Fn::GetAZs" : "us-east-1" }
YAML
Fn::GetAZs: "" Fn::GetAZs: Ref: "AWS::Region" Fn::GetAZs: us-east-1
Especificar a zona de disponibilidade de uma sub-rede
O exemplo a seguir usa Fn::GetAZs
para especificar uma zona de disponibilidade da sub-rede:
JSON
"mySubnet" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : "10.0.0.0/24", "AvailabilityZone" : { "Fn::Select" : [ 0, { "Fn::GetAZs" : "" } ] } } }
YAML
mySubnet: Type: "AWS::EC2::Subnet" Properties: VpcId: !Ref VPC CidrBlock: 10.0.0.0/24 AvailabilityZone: Fn::Select: - 0 - Fn::GetAZs: ""
Funções aninhadas com YAML em forma abreviada
Os exemplos a seguir mostram os padrões válidos para usar as funções intrínsecas aninhadas usando a forma abreviada YAML. Você não pode aninhar funções em forma abreviada consecutivamente, portanto, um padrão como !GetAZs !Ref
é inválido.
YAML
AvailabilityZone: !Select - 0 - !GetAZs Ref: 'AWS::Region'
YAML
AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref 'AWS::Region'
Funções compatíveis
É possível usar a função Ref na função Fn::GetAZs
.