Fn::GetAtt
A função intrínseca Fn::GetAtt
retorna o valor de um atributo obtido de um recurso no modelo. Para obter mais informações sobre valores de retorno GetAtt
para um recurso específico, consulte a documentação desse recurso na Referência de propriedades e recursos.
Declaração
JSON
{ "Fn::GetAtt" : [ "
logicalNameOfResource
", "attributeName
" ] }
YAML
Sintaxe para o nome da função completo:
Fn::GetAtt: [
logicalNameOfResource
,attributeName
]
Sintaxe para a forma resumida:
!GetAtt
logicalNameOfResource
.attributeName
Parâmetros
logicalNameOfResource
-
O nome lógico (também chamado de ID lógico) do recurso que contém o atributo que você deseja.
attributeName
-
O nome do atributo específico do recurso cujo valor é desejado. Consulte a página de referência do recurso para obter mais detalhes sobre os atributos disponíveis para esse tipo de recurso.
Valor de retorno
O valor de atributo.
Exemplos
Retornar uma string
Este snippet retorna uma string que contém o nome DNS do load balancer com o nome lógico myELB
.
JSON
"Fn::GetAtt" : [ "myELB" , "DNSName" ]
YAML
!GetAtt myELB.DNSName
Retornar várias strings
O modelo de exemplo a seguir retorna SourceSecurityGroup.OwnerAlias
e SourceSecurityGroup.GroupName
do load balancer com o nome lógico myELB
.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "myELB": { "Type": "AWS::ElasticLoadBalancing::LoadBalancer", "Properties": { "AvailabilityZones": [ "eu-west-1a" ], "Listeners": [ { "LoadBalancerPort": "80", "InstancePort": "80", "Protocol": "HTTP" } ] } }, "myELBIngressGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "ELB ingress group", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "SourceSecurityGroupOwnerId": { "Fn::GetAtt": [ "myELB", "SourceSecurityGroup.OwnerAlias" ] }, "SourceSecurityGroupName": { "Fn::GetAtt": [ "myELB", "SourceSecurityGroup.GroupName" ] } } ] } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Resources: myELB: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: AvailabilityZones: - eu-west-1a Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: HTTP myELBIngressGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: ELB ingress group SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 SourceSecurityGroupOwnerId: !GetAtt myELB.SourceSecurityGroup.OwnerAlias SourceSecurityGroupName: !GetAtt myELB.SourceSecurityGroup.GroupName
Funções compatíveis
Para o nome do recurso lógico Fn::GetAtt
, você não pode usar funções. É necessário especificar uma string que seja um ID lógico do recurso.
Para o nome de atributo Fn::GetAtt
, você pode usar a função Ref
.