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 Abschnittssyntaxreferenz für CloudFormation Vorlagen 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:
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.