Dies ist das neue CloudFormation Template Reference Guide. Bitte aktualisieren Sie Ihre Lesezeichen und Links. Hilfe zu den ersten CloudFormation Schritten finden Sie im AWS CloudFormationBenutzerhandbuch.
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.
Deklaration
JSON
{ "Fn::GetAtt" : [ "logicalNameOfResource", "attributeName" ] }
YAML
Syntax für den vollständigen Funktionsnamen:
Fn::GetAtt: [logicalNameOfResource,attributeName]
Syntax für die Kurzform:
!GetAttlogicalNameOfResource.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. Informationen über GetAtt-Rückgabewerte für Ressourcen finden Sie in der Dokumentation für die Ressourcen im Ressourcen- und Eigenschaftstypen.
Beispiele
Einen Attributwert zurückgeben
Die folgenden Beispiele geben eine Zeichenkette zurück, die den DNS-Namen des Load Balancers mit dem logischen Namen myELBenthält.
JSON
"Fn::GetAtt" : [ "myELB" , "DNSName" ]
YAML
!GetAtt myELB.DNSName
Mehrere Attributwerte zurückgeben
Die folgenden Beispiele geben die SourceSecurityGroup.OwnerAlias und SourceSecurityGroup.GroupName des Load Balancers mit dem logischen Namen myELBzurü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
Use Fn::Sub inside Fn::GetAtt function
Anmerkung
Wenn Sie die Transformation AWS::LanguageExtensions verwenden, können Sie Fn::GetAtt in Kombination mit anderen intrinsischen Funktionen verwenden. Für unterstützte Funktionen, siehe Unterstützte Funktionen.
Die folgenden Beispiele zeigen, wie Sie Fn::GetAtt mit Fn::Subin Verbindung mit Fn::ForEachim Abschnitt Outputs einer Vorlage verwenden können, um die Länge der Vorlage und die Ausführlichkeit 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 Sie die Funktion AWS::LanguageExtensions transformverwenden, können Sie die folgenden Funktionen innerhalb der Funktion Fn::GetAtt verwenden. Dies gilt entweder für den logischen Namen der Fn::GetAtt-Ressource oder den Fn::GetAtt-Attributnamen.
Wenn die Transformation AWS::LanguageExtensions nicht verwendet wird:
-
Der Name des Attributs
Fn::GetAttkann nur die Funktion Ref verwenden. -
Der logische Name der
Fn::GetAtt-Ressource kann keine Funktionen enthalten. Sie müssen eine Zeichenfolge angeben, die eine logische ID einer Ressource darstellt.