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. Quando viene utilizzata la trasformazione Trasformazione AWS::LanguageExtensions, è possibile utilizzare le funzioni intrinseche come parametro per Fn::GetAtt
. Per ulteriori informazioni sui valori GetAtt
restituiti per una risorsa specifica, consulta la documentazione per la risorsa in Informazioni di riferimento su proprietà e risorse.
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.
Esempi
Restituzione di una stringa
Questo frammento di esempio restituisce una stringa contenente il nome DNS del sistema di load balancer con il nome logico myELB
.
JSON
"Fn::GetAtt" : [ "myELB" , "DNSName" ]
YAML
!GetAtt myELB.DNSName
Restituzione di più stringhe
Il seguente modello di esempio restituisce SourceSecurityGroup.OwnerAlias
e SourceSecurityGroup.GroupName
del sistema di load balancer 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
Esempio: Utilizzo di un identificatore standard per più risorse tramite Fn::Sub
all'interno di Fn::GetAtt
, Ref
e Fn::ForEach
Gli esempi seguenti mostrano come utilizzare Fn::GetAtt con Fn::Sub, in combinazione conFn::ForEach, nel 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 la trasformazione Trasformazione AWS::LanguageExtensions non viene utilizzata:
Quando la trasformazione Trasformazione AWS::LanguageExtensions viene utilizzata all'interno della funzione Fn::GetAtt
, puoi utilizzare le seguenti funzioni. Questo vale sia per il nome della risorsa logica Fn::GetAtt
che per il nome dell'attributo Fn::GetAtt
.