Fn::GetAtt - AWS CloudFormation

Questa è la nuova Guida di riferimento ai modelli CloudFormation . Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la Guida AWS CloudFormation per l'utente.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fn::GetAtt

La funzione intrinseca Fn::GetAtt restituisce il valore di un attributo di una risorsa nel modello.

Dichiarazione

JSON

{ "Fn::GetAtt" : [ "logicalNameOfResource", "attributeName" ] }

YAML

Sintassi per il nome completo della funzione:

Fn::GetAtt: [ logicalNameOfResource, attributeName ]

Sintassi per la forma breve:

!GetAtt logicalNameOfResource.attributeName

Parametri

logicalNameOfResource

Il nome logico (noto anche come ID logico) della risorsa che contiene l’attributo desiderato.

attributeName

Il nome dell’attributo specifico della risorsa di cui desideri il valore. Consulta la pagina di riferimento della risorsa per i dettagli sugli attributi disponibili per quel tipo di risorsa.

Valore restituito

Il valore dell’attributo. Per informazioni sui valori GetAtt restituiti per le risorse, consulta la documentazione per le risorse in Informazioni di riferimento su proprietà e risorse.

Esempi

Restituire un valore dell’attributo

L’esempio seguente restituisce una stringa contenente il nome DNS del bilanciatore del carico con il nome logico myELB.

JSON

"Fn::GetAtt" : [ "myELB" , "DNSName" ]

YAML

!GetAtt myELB.DNSName

Restituire più valori dell’attributo

Il seguente esempio restituisce SourceSecurityGroup.OwnerAlias e SourceSecurityGroup.GroupName del bilanciatore del carico con il nome logico 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

Usa Fn::Sub all’interno della funzione Fn::GetAtt

Nota

Quando usi la trasformazione AWS::LanguageExtensions, puoi utilizzare Fn::GetAtt in combinazione con altre funzioni intrinseche. Per le funzioni supportate, consulta Funzioni supportate.

Gli esempi seguenti mostrano come utilizzare Fn::GetAtt con Fn::Sub, in combinazione con Fn::ForEach, nella sezione Outputs di un modello per ridurne la lunghezza e la verbosità. L’uso di Fn::Sub all’interno di Fn::GetAtt consente al modello di contenere una funzione intrinseca che può fare riferimento a un bucket diverso a ogni iterazione della chiamata Fn::ForEach.

JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::LanguageExtensions", "Mappings": { "Buckets": { "Properties": { "Identifiers": ["A", "B", "C"] } } }, "Resources": { "Fn::ForEach::Buckets": [ "Identifier", {"Fn::FindInMap": ["Buckets", "Properties", "Identifiers"]}, { "S3Bucket${Identifier}": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead", "MetricsConfigurations": [ { "Id": {"Fn::Sub": "EntireBucket${Identifier}"} } ], "WebsiteConfiguration": { "IndexDocument": "index.html", "ErrorDocument": "error.html", "RoutingRules": [ { "RoutingRuleCondition": { "HttpErrorCodeReturnedEquals": "404", "KeyPrefixEquals": "out1/" }, "RedirectRule": { "HostName": "ec2-11-22-333-44.compute-1.amazonaws.com", "ReplaceKeyPrefixWith": "report-404/" } } ] } }, "DeletionPolicy": "Retain", "UpdateReplacePolicy": "Retain" } } ] }, "Outputs": { "Fn::ForEach::BucketOutputs": [ "Identifier", {"Fn::FindInMap": ["Buckets", "Properties", "Identifiers"]}, { "Fn::ForEach::GetAttLoop": [ "Property", ["Arn", "DomainName", "WebsiteURL"], { "S3Bucket${Identifier}${Property}": { "Value": { "Fn::GetAtt": [{"Fn::Sub": "S3Bucket${Identifier}"}, {"Ref": "Property"}] } } } ] } ] } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::LanguageExtensions Mappings: Buckets: Properties: Identifiers: - A - B - C Resources: 'Fn::ForEach::Buckets': - Identifier - Fn::FindInMap: - Buckets - Properties - Identifiers - 'S3Bucket${Identifier}': Type: 'AWS::S3::Bucket' Properties: AccessControl: PublicRead MetricsConfigurations: - Id: Fn::Sub: 'EntireBucket${Identifier}' WebsiteConfiguration: IndexDocument: index.html ErrorDocument: error.html RoutingRules: - RoutingRuleCondition: HttpErrorCodeReturnedEquals: '404' KeyPrefixEquals: out1/ RedirectRule: HostName: ec2-11-22-333-44.compute-1.amazonaws.com ReplaceKeyPrefixWith: report-404/ DeletionPolicy: Retain UpdateReplacePolicy: Retain Outputs: 'Fn::ForEach::BucketOutputs': - Identifier - Fn::FindInMap: - Buckets - Properties - Identifiers - 'Fn::ForEach::GetAttLoop': - Property - - Arn - DomainName - WebsiteURL - 'S3Bucket${Identifier}${Property}': Value: !GetAtt - !Sub 'S3Bucket${Identifier}' - !Ref Property

Funzioni supportate

Quando usi la trasformazione AWS::LanguageExtensions, puoi utilizzare le seguenti funzioni all’interno della funzione Fn::GetAtt. Questo vale sia per il nome della risorsa logica Fn::GetAtt che per il nome dell’attributo Fn::GetAtt.

Quando la trasformazione AWS::LanguageExtensions non viene utilizzata:

  • Per il nome dell’attributo Fn::GetAtt, puoi utilizzare solo la funzione Ref.

  • Per il nome logico della risorsa Fn::GetAtt, non puoi utilizzare funzioni. Devi specificare invece una stringa che è un ID logico della risorsa.