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:
!GetAttlogicalNameOfResource.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.