Fn::GetAtt - AWS CloudFormation

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 relativa alle risorse in. Informazioni di riferimento su proprietà e risorse

Esempi

Restituisce un valore di attributo

I seguenti esempi restituiscono una stringa contenente il nome DNS del load balancer con il nome logico. myELB

JSON

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

YAML

!GetAtt myELB.DNSName

Restituisce più valori di attributo

I seguenti esempi restituiscono SourceSecurityGroup.OwnerAlias la fine SourceSecurityGroup.GroupName del load balancer con il nome myELB logico.

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 la funzione Fn::Sub interna Fn::GetAtt

Nota

Quando si utilizza la AWS::LanguageExtensions trasformazione, è possibile utilizzarla Fn::GetAtt in combinazione con altre funzioni intrinseche. Per le funzioni supportate, vedere. Funzioni supportate

Gli esempi seguenti mostrano come utilizzare Fn::GetAtt withFn::Sub, insieme a, nella Outputs sezione di un modello per ridurre la lunghezza e la verbosità del modello. Fn::ForEach 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 si utilizza il AWS::LanguageExtensions transform, è possibile utilizzare le seguenti funzioni all'interno della Fn::GetAtt funzione. 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:

  • Il nome dell'Fn::GetAttattributo può utilizzare solo la Ref funzione.

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