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.
Ref
Die intrinsische Funktion Ref
gibt den Wert des angegebenen Parameters oder der angegebenen Ressource zurück. Wenn die Transformation AWS::LanguageExtensions-Transformation verwendet wird, können Sie intrinsische Funktionen als Parameter für Ref und Fn::GetAtt verwenden.
-
Wenn Sie den logischen Namen eines Parameters angeben, wird der Wert des Parameters zurückgegeben.
-
Wenn Sie den logischen Namen einer Ressource angeben, wird ein Wert zurückgegeben, mit dem Sie üblicherweise auf diese Ressource verweisen können, z. B. eine physische ID.
-
Wenn Sie eine intrinsische Funktion angeben, wird die Ausgabe dieser Funktion zurückgegeben.
Wenn Sie eine Ressource in einer Vorlage deklarieren und eine andere Vorlagenressource mit dem Namen angeben müssen, können Sie mit der Ref
-Funktion auf die andere Ressource verweisen. Im Allgemeinen gibt Ref
den Namen der Ressource zurück. Beispielsweise gibt ein Verweis auf ein AWS:::AutoScaling: den Namen dieser Auto Scaling Scaling-Gruppenressource AutoScalingGroup zurück.
Für einige Ressourcen wird eine ID zurückgegeben, die im Kontext der Ressource eine andere signifikante Bedeutung hat. Eine AWS::EC2: EIP -Ressource gibt beispielsweise die IP-Adresse zurück, und eine AWS:EC2: :Instance gibt die Instanz-ID zurück.
Tipp
Sie können Ref
auch verwenden, um Outputs Abschnittssyntaxreferenz für CloudFormation Vorlagen-Nachrichten Werte hinzuzufügen.
Weitere Informationen zu Ref
-Rückgabewerten für eine bestimmte Ressource oder Eigenschaft finden Sie in der Dokumentation für die betreffende Ressource oder Eigenschaft in der Ressourcen- und Eigenschaftstypen.
Deklaration
JSON
{ "Ref" : "
logicalName
" }
{ "Ref" : "
IntrinsicFunction
" }
YAML
Syntax für den vollständigen Funktionsnamen:
Ref:
logicalName
Ref:
IntrinsicFunction
Syntax für die Kurzform:
!Ref
logicalName
!Ref
IntrinsicFunction
Parameter
- logicalName
-
Der logische Name der Ressource oder des Parameters, die bzw. der zu referenzieren ist.
- IntrinsicFunction
-
Die intrinsische Funktion, die als gültige Zeichenfolge aufgelöst wird. Sie sollte Verweise auf Parameter oder Kennungen und keine logischen Ressourcenkennungen enthalten.
Rückgabewert
Wenn der Parameter ein ist logicalName
, ist der Rückgabewert die physische ID der Ressource oder der Wert des Parameters.
Wenn der Parameter ein ist IntrinsicFunction
, der Rückgabewert ist der Rückgabewert der intrinsischen Funktion
Beispiele
Beispiel
Die folgende Ressourcendeklaration für eine Elastic IP-Adresse benötigt die Instanz-ID einer EC2 Instanz und verwendet die Ref
Funktion, um die Instanz-ID der MyEC2Instance
Ressource anzugeben:
JSON
"MyEIP" : { "Type" : "AWS::EC2::EIP", "Properties" : { "InstanceId" : { "Ref" : "MyEC2Instance" } } }
YAML
MyEIP: Type: "AWS::EC2::EIP" Properties: InstanceId: !Ref MyEC2Instance
Beispiel für die Generierung einer Kennung für mehrere Stufen
Dieses Beispiel zeigt, wie Sie die intrinsische Funktion Fn::Sub
verwenden können, um Werte für die Kennung für verschiedene Stufen zu ersetzen. Die Funktionen Ref
und die Fn::GetAtt
Funktionen können dann verwendet werden, um auf die entsprechenden Werte zu verweisen, die auf der Eingabe für die Stufe basieren. Fn::Sub
wird zunächst mit verwendetFn::GetAtt
, um die ARN entsprechende SQS Amazon-Warteschlange abzurufen, um die Abmessungen des CloudWatch Amazon-Alarms festzulegen. Als Nächstes wird Fn::Join mit Ref
verwendet, um die logische ID-Zeichenfolge des Stage
-Parameters zu erstellen.
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
Beispiel für die Verwendung der intrinsischen Funktion Fn::Sub
innerhalb der Funktion Ref
Dieses Beispiel zeigt, wie Sie mithilfe der intrinsischen Funktion Fn::Sub
Werte für die Funktion Ref
ersetzen. Die Funktionen Ref
und die Fn::GetAtt
Funktionen können dann verwendet werden, um auf die entsprechenden Werte zu verweisen, die auf der Eingabe für die Stufe basieren. Fn::Sub
wird zunächst verwendet, um das ARN entsprechende SNS Amazon-Thema zu ermitteln, um die Abmessungen des CloudWatch Amazon-Alarms festzulegen. Als Nächstes wird Fn::Join mit Ref
verwendet, um die logische ID-Zeichenfolge des Stage
-Parameters zu erstellen.
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}'
Unterstützte Funktionen
Wenn die Transformation AWS::LanguageExtensions-Transformation verwendet wird, können Sie in der Funktion Ref
die folgenden Funktionen verwenden.