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::GetAtt
attributo 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.