Fn::GetAtt - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fn::GetAtt

Die intrinsische Fn::GetAtt-Funktion gibt den Wert eines Attributs aus einer Ressource in der Vorlage zurück. Wenn die Transformation AWS::LanguageExtensions-Transformation verwendet wird, können Sie intrinsische Funktionen als Parameter für Fn::GetAtt verwenden. Weitere Informationen zu GetAtt-Rückgabewerten für eine bestimmte Ressource finden Sie in der Dokumentation für die betreffende Ressource in der Ressourcen- und Eigenschaftstypen.

Deklaration

JSON

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

YAML

Syntax für den vollständigen Funktionsnamen:

Fn::GetAtt: [ logicalNameOfResource, attributeName ]

Syntax für die Kurzform:

!GetAtt logicalNameOfResource.attributeName

Parameter

logicalNameOfResource

Der logische Name (auch als logische ID) der Ressource, die das gewünschte Attribut enthält.

attributeName

Der Name des ressourcenspezifischen Attributs, dessen Wert Sie abrufen möchten. Auf der Referenzseite der Ressource finden Sie weitere Details zu Attributen, die für diesen Ressourcentyp verfügbar sind.

Rückgabewert

Der Attributwert.

Beispiele

Zurückgeben einer Zeichenfolge

In diesem Beispielausschnitt wird eine Zeichenfolge mit dem DNS-Namen des Load Balancer mit dem logischen Namen myELB zurückgegeben.

JSON

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

YAML

!GetAtt myELB.DNSName

Zurückgeben mehrerer Zeichenfolgen

Die folgende Beispielvorlage gibt den SourceSecurityGroup.OwnerAlias und den SourceSecurityGroup.GroupName des Load Balancers mit dem logischen Namen myELB zurück.

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

Beispiel: Verwenden einer Standardkennung für mehrere Ressourcen mithilfe von Fn::Sub in Fn::GetAtt, Ref und Fn::ForEach

Die folgenden Beispiele zeigen, wie Sie Fn::GetAtt mit Fn::Sub in Verbindung mit Fn::ForEach in den Outputs einer Vorlage verwenden können, um die Länge und Ausführlichkeit der Vorlage zu reduzieren. Durch die Verwendung von Fn::Sub in Fn::GetAtt kann die Vorlage eine intrinsische Funktion enthalten, die bei jeder Iteration des Fn::ForEach-Aufrufs auf einen anderen Bucket verweisen kann.

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

Unterstützte Funktionen

Wenn die Transformation AWS::LanguageExtensions-Transformation nicht verwendet wird:

  • Der logische Name der Fn::GetAtt-Ressource kann keine Funktionen enthalten. Sie müssen eine Zeichenfolge angeben, die eine logische ID einer Ressource darstellt. Für den Fn::GetAtt-Attributnamen können Sie die Funktion Ref verwenden.

  • Der Fn::GetAtt-Attributname kann die Funktion Ref enthalten.

Wenn die Transformation AWS::LanguageExtensions-Transformation verwendet wird, können Sie in der Funktion Fn::GetAtt die folgenden Funktionen verwenden. Dies gilt entweder für den logischen Namen der Fn::GetAtt-Ressource oder den Fn::GetAtt-Attributnamen.