Fn::GetAZs - AWS CloudFormation

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-zonesda 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 especificar AWS::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.