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. 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::Subwird 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::Subwird 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.