Ref - AWS CloudFormation

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. Ein Verweis auf eine AWS::AutoScaling::AutoScalingGruppe gibt beispielsweise den Namen dieser Auto Scaling Scaling-Gruppenressource 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 und eine die Instance-ID AWS::EC2::Instancezurück.

Tipp

Sie können Ref auch verwenden, um Outputs-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 logicalName ist, ist der Rückgabewert die physische ID der Ressource oder der Wert des Parameters.

Wenn der Parameter ein ist IntrinsicFunction, ist der Rückgabewert der Rückgabewert der systemeigenen Funktion

Beispiele

Beispiel

In der folgenden Ressourcendeklaration für eine Elastic-IP-Adresse wird die Instance-ID einer EC2-Instance benötigt und die Ref-Funktion verwendet, um die Instance-ID der Ressource MyEC2Instance 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::Subwird zuerst mit verwendetFn::GetAtt, um den ARN der entsprechenden Amazon SQS SQS-Warteschlange abzurufen, um die Dimensionen 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::Subwird zunächst verwendet, um den ARN des entsprechenden Amazon SNS SNS-Themas abzurufen und 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.