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.
Ref
La fonction intrinsèque Ref
renvoie la valeur d'un paramètre ou d'une ressource spécifique. Lorsque la transformation Transformation AWS::LanguageExtensions est utilisée, vous pouvez utiliser des fonctions intrinsèques en tant que paramètre pour Ref et Fn::GetAtt.
-
Lorsque vous spécifiez le nom logique d'un paramètre, elle renvoie la valeur du paramètre.
-
Lorsque vous spécifiez le nom logique d'une ressource, elle renvoie une valeur que vous pouvez généralement utiliser pour faire référence à cette ressource, comme un ID physique.
-
Lorsque vous spécifiez une fonction intrinsèque, elle renvoie la sortie de cette fonction.
Lorsque vous déclarez une ressource dans un modèle et que vous devez spécifier un autre modèle ressource en fonction de son nom, vous pouvez utiliser la fonction Ref
pour faire référence à cette autre ressource. En général, Ref
renvoie le nom de la ressource. Par exemple, une référence à un AWS::AutoScaling::AutoScalinggroupe renvoie le nom de cette ressource de groupe Auto Scaling.
Pour certaines ressources, l'identifiant renvoyé a une autre signification dans le cadre de la ressource. Une ressource AWS : :EC2 : :EIP, par exemple, renvoie l'adresse IP et l'ID de l'instance AWS::EC2::Instance.
Astuce
Vous pouvez également utiliser Ref
pour ajouter des valeurs aux messages Outputs.
Pour de plus amples informations sur les valeurs de retour Ref
pour une ressource ou une propriété particulière, reportez-vous à la documentation de cette ressource ou de cette propriété dans Référence des propriétés et des ressources.
Déclaration
JSON
{ "Ref" : "
logicalName
" }
{ "Ref" : "
IntrinsicFunction
" }
YAML
Syntaxe pour le nom complet de la fonction :
Ref:
logicalName
Ref:
IntrinsicFunction
Syntaxe pour la forme courte :
!Ref
logicalName
!Ref
IntrinsicFunction
Paramètres
- logicalName
-
Le nom logique de la ressource ou du paramètre que vous souhaitez référencer.
- IntrinsicFunction
-
La fonction intrinsèque qui se résout dans une chaîne valide. Elle doit contenir des références aux paramètres ou aux identifiants, et ne doit pas contenir d'identifiants de ressources logiques.
Valeur renvoyée
Lorsque le paramètre est un logicalName
, la valeur renvoyée est l'ID physique de la ressource ou de la valeur du paramètre.
Lorsque le paramètre est un IntrinsicFunction
, la valeur de retour est la valeur de retour de la fonction intrinsèque
Exemples
Exemple
La déclaration de ressource suivante pour une adresse IP Elastic nécessite l'ID d'une instance EC2 et utilise la fonction Ref
pour spécifier l'ID d'instance de la ressource MyEC2Instance
:
JSON
"MyEIP" : { "Type" : "AWS::EC2::EIP", "Properties" : { "InstanceId" : { "Ref" : "MyEC2Instance" } } }
YAML
MyEIP: Type: "AWS::EC2::EIP" Properties: InstanceId: !Ref MyEC2Instance
Exemple de génération d'un identifiant pour plusieurs étapes
Cet exemple démontre comment utiliser la fonction intrinsèque Fn::Sub
pour substituer des valeurs à l'identifiant pour les différentes étapes. Les Fn::GetAtt
fonctions Ref
et peuvent ensuite être utilisées pour référencer les valeurs appropriées, en fonction de l'entrée pour la scène. Fn::Sub
est d'abord utilisé Fn::GetAtt
pour obtenir l'ARN de la file d'attente Amazon SQS appropriée afin de définir les dimensions de l'alarme Amazon CloudWatch. Ensuite, la fonction Fn::Join est utilisée avec Ref
pour créer la chaîne d'ID logique du paramètre Stage
.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::LanguageExtensions", "Parameters": { "Stage": { "Type": "String", "Default": "Dev", "AllowedValues": [ "Dev", "Prod" ] } }, "Conditions": { "isProd": { "Fn::Equals": [ {"Ref": "Stage"}, "Prod" ] }, "isDev": { "Fn::Equals": [ {"Ref": "Stage"}, "Dev" ] } }, "Resources": { "DevQueue": { "Type": "AWS::SQS::Queue", "Condition": "isDev", "Properties": { "QueueName": {"Fn::Sub": "My${Stage}Queue"} } }, "ProdQueue": { "Type": "AWS::SQS::Queue", "Condition": "isProd", "Properties": { "QueueName": {"Fn::Sub": "My${Stage}Queue"} } }, "DevTopic": { "Condition": "isDev", "Type": "AWS::SNS::Topic" }, "ProdTopic": { "Condition": "isProd", "Type": "AWS::SNS::Topic" }, "MyAlarm": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": "Alarm if queue depth grows beyond 10 messages", "Namespace": "AWS/SQS", "MetricName": "ApproximateNumberOfMessagesVisible", "Dimensions":[ { "Name": {"Fn::Sub": "${Stage}Queue"}, "Value": {"Fn::GetAtt": [{"Fn::Sub": "${Stage}Queue"}, "QueueName"]} } ], "Statistic": "Sum", "Period": 300, "EvaluationPeriods": 1, "Threshold": 10, "ComparisonOperator": "GreaterThanThreshold", "AlarmActions": [ { "Ref": {"Fn::Join": ["", [{"Ref": "Stage"}, "Topic"]]} } ] } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Transform: 'AWS::LanguageExtensions' Parameters: Stage: Type: String Default: Dev AllowedValues: - Dev - Prod Conditions: isProd: !Equals - !Ref Stage - Prod isDev: !Equals - !Ref Stage - Dev Resources: DevQueue: Type: 'AWS::SQS::Queue' Condition: isDev Properties: QueueName: !Sub 'My${Stage}Queue' ProdQueue: Type: 'AWS::SQS::Queue' Condition: isProd Properties: QueueName: !Sub 'My${Stage}Queue' DevTopic: Condition: isDev Type: 'AWS::SNS::Topic' ProdTopic: Condition: isProd Type: 'AWS::SNS::Topic' MyAlarm: Type: 'AWS::CloudWatch::Alarm' Properties: AlarmDescription: Alarm if queue depth grows beyond 10 messages Namespace: AWS/SQS MetricName: ApproximateNumberOfMessagesVisible Dimensions: - Name: !Sub '${Stage}Queue' Value: !GetAtt - !Sub '${Stage}Queue' - QueueName Statistic: Sum Period: 300 EvaluationPeriods: 1 Threshold: 10 ComparisonOperator: GreaterThanThreshold AlarmActions: - !Ref 'Fn::Join': - '' - - !Ref Stage - Topic
Exemple d'utilisation d'une fonction intrinsèque Fn::Sub
dans une fonction Ref
Cet exemple démontre comment utiliser la fonction intrinsèque Fn::Sub
pour substituer des valeurs pour la fonction Ref
. Les Fn::GetAtt
fonctions Ref
et peuvent ensuite être utilisées pour référencer les valeurs appropriées, en fonction de l'entrée pour la scène. Fn::Sub
est d'abord utilisé pour obtenir l'ARN de la rubrique Amazon SNS appropriée afin de définir les dimensions de l'alarme Amazon CloudWatch . Ensuite, la fonction Fn::Join est utilisée avec Ref
pour créer la chaîne d'ID logique du paramètre Stage
.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::LanguageExtensions", "Parameters": { "Stage": { "Type": "String", "Default": "Dev", "AllowedValues": [ "Dev", "Prod" ] } }, "Resources": { "TopicDev": { "Type": "AWS::SNS::Topic", "Properties": { "TopicName": "
MyTopic
" } } }, "Outputs": { "stageOutput": { "Value": { "Ref": { "Fn::Sub": "Topic${Stage}" } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Transform: 'AWS::LanguageExtensions' Parameters: Stage: Type: String Default: Dev AllowedValues: - Dev - Prod Resources: TopicDev: Type: 'AWS::SNS::Topic' Properties: TopicName: MyTopic Outputs: stageOutput: Value: !Ref 'Fn::Sub': 'Topic${Stage}'
Fonctions prises en charge
Lorsque la transformation Transformation AWS::LanguageExtensions est utilisée, vous pouvez utiliser les fonctions suivantes dans la fonction Ref
.