Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Fn::GetAtt
La fonction intrinsèque Fn::GetAtt
renvoie la valeur d'un attribut à partir d'une ressource du modèle. Lorsque la transformation Transformation AWS::LanguageExtensions est utilisée, vous pouvez utiliser des fonctions intrinsèques en tant que paramètre pour Fn::GetAtt
. Pour de plus amples informations sur les valeurs de retour GetAtt
pour une ressource particulière, reportez-vous à la documentation de cette ressource dans Référence des propriétés et des ressources.
Déclaration
JSON
{ "Fn::GetAtt" : [ "
logicalNameOfResource
", "attributeName
" ] }
YAML
Syntaxe pour le nom complet de la fonction :
Fn::GetAtt: [
logicalNameOfResource
,attributeName
]
Syntaxe pour la forme courte :
!GetAtt
logicalNameOfResource
.attributeName
Paramètres
logicalNameOfResource
-
Nom logique (également appelé ID logique) de la ressource qui contient l'attribut souhaité.
attributeName
-
Nom de l'attribut spécifique à une ressource dont vous voulez la valeur. Consultez la page de référence de la ressource pour plus d'informations sur les attributs disponibles pour ce type de ressource.
Valeur renvoyée
Valeur de l'attribut.
Exemples
Renvoi d'une chaîne
Cet exemple d'extrait renvoie une chaîne contenant le DNS nom de l'équilibreur de charge avec le nom logique. myELB
JSON
"Fn::GetAtt" : [ "myELB" , "DNSName" ]
YAML
!GetAtt myELB.DNSName
Renvoi de plusieurs chaînes
Le modèle d'exemple suivant renvoie SourceSecurityGroup.OwnerAlias
et SourceSecurityGroup.GroupName
de l'équilibreur de charge avec le nom logique 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
Exemple : utilisez un identifiant standard pour plusieurs ressources en utilisant Fn::Sub
dans Fn::GetAtt
, Ref
et Fn::ForEach
Les exemples suivants montrent comment utiliser Fn::GetAtt avec Fn::Sub, conjointement avec Fn::ForEach, dans la section Outputs d'un modèle pour réduire la longueur et la quantité de détails du modèle. L'utilisation de Fn::Sub dans Fn::GetAtt permet au modèle de contenir une fonction intrinsèque qui peut faire référence à un compartiment différent à chaque itération de l'appel 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
Fonctions prises en charge
Lorsque la transformation Transformation AWS::LanguageExtensions n'est pas utilisée :
Lorsque la transformation Transformation AWS::LanguageExtensions est utilisée, vous pouvez utiliser les fonctions suivantes dans la fonction Fn::GetAtt
. Cela est vrai à la fois pour le nom de la ressource logique Fn::GetAtt
et le nom de l'attribut Fn::GetAtt
.