Fn::GetAZs
A função intrínseca Fn::GetAZs
retorna uma matriz que lista as zonas de disponibilidade para uma região específica 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 codificar uma lista completa das zonas de disponibilidade de uma região especificada.
Para a plataforma EC2-Classic, a função Fn::GetAZs
gera todas as zonas de disponibilidade de uma região. Para a plataforma EC2-VPC, a função Fn::GetAZs
gera apenas as zonas de disponibilidade que têm uma sub-rede padrão, a menos que nenhuma das zonas de disponibilidade tenha uma sub-rede padrão; neste caso, todas as zonas de disponibilidade são geradas.
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 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
Valor de retorno
A lista de zonas de disponibilidade para a região.
Exemplos
Avaliar uma região
Para esses exemplos, o CloudFormation avalia Fn::GetAZs
para a matriz a seguir, 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" ]
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
Use a função Ref
na função Fn::GetAZs
.