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, d'une ressource ou d'une autre fonction intrinsèque spécifiés. Cette fonction est couramment utilisée pour créer des références entre les ressources d'un CloudFormation modèle.
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
La valeur de retour de Ref
dépend du type d'entité référencée :
-
Lorsque vous spécifiez le nom logique d'un paramètre, elle renvoie la valeur du paramètre. Pour plus d'informations, voir le CloudFormation modèle Parameters syntaxe.
-
Lorsque vous spécifiez le nom logique d'une ressource, il renvoie une valeur que vous utilisez pour identifier cette ressource. Il s'agit généralement du nom de la ressource. Cependant, pour certaines ressources, un identifiant est renvoyé qui a une autre signification significative dans le contexte de la ressource. Par exemple, la
AWS::EC2::EIP
ressource renvoie l'adresse IP et l'AWS::EC2::Instance
ID de l'instance. Pour plus d'informations sur les valeursRef
renvoyées pour une ressource, consultez la documentation de cette ressource dans leRéférence des propriétés et des ressources. -
Lorsque vous spécifiez une fonction intrinsèque, elle renvoie la sortie de cette fonction.
Exemples
Création de références entre les ressources
La déclaration de ressource suivante pour une adresse IP élastique nécessite l'ID d'instance d'une EC2 instance. Elle utilise la Ref
fonction pour spécifier l'ID d'instance de la MyEC2Instance
ressource déclarée ailleurs dans le modèle.
JSON
{ "AWSTemplateFormatVersion":"2010-09-09", "Resources":{
...
"MyEIP":{ "Type":"AWS::EC2::EIP", "Properties":{ "InstanceId":{ "Ref":"MyEC2Instance" } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Resources:
...
MyEIP: Type: "AWS::EC2::EIP" Properties: InstanceId: !Ref MyEC2Instance
Renvoie un identifiant de ressource en tant que sortie de pile
Les exemples suivants montrent comment utiliser la Ref
fonction pour renvoyer le nom d'un compartiment Amazon S3 avec le nom logique MyBucket
comme sortie de pile.
JSON
{ "AWSTemplateFormatVersion":"2010-09-09", "Resources":{ "MyBucket":{ "Type":"AWS::S3::Bucket", "Properties":{ "BucketName":{ "Fn::Sub": "${AWS::StackName}-mybucket" } } } }, "Outputs":{ "BucketNameOutput":{ "Description":"The name of the S3 bucket", "Value":{ "Ref":"MyBucket" } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Resources: MyBucket: Type: AWS::S3::Bucket Properties: BucketName: !Sub ${AWS::StackName}-mybucket Outputs: BucketNameOutput: Description: The name of the S3 bucket Value: !Ref MyBucket
Utiliser la fonction Fn::Join
intrinsèque à l'intérieur de Ref
la fonction
Note
Lorsque vous utilisez la AWS::LanguageExtensions
transformation, vous pouvez l'utiliser Ref
en combinaison avec d'autres fonctions intrinsèques. Pour les fonctions prises en charge, voirFonctions prises en charge.
Les exemples suivants montrent comment définir des identifiants de ressources à l'aide de la fonction Fn::Sub
intrinsèque, des conditions et de l'entrée du Stage
paramètre. Les Fn::GetAtt
fonctions Ref
et font ensuite référence aux valeurs appropriées, en fonction de 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, Fn::Join est utilisé avec Ref
pour créer le nom de la rubrique SNS pour la AlarmActions
propriété.
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 ProdQueu: 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
Fonctions prises en charge
Lorsque vous utilisez le AWS::LanguageExtensions transformer, vous pouvez utiliser les fonctions suivantes dans la Ref
fonction.