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 systeminterne Funktion Ref gibt den Wert eines bestimmten Parameters, einer bestimmten Ressource oder einer anderen systeminternen Funktion zurück. Diese Funktion wird häufig verwendet, um Verweise zwischen Ressourcen innerhalb einer Vorlage zu erstellen. CloudFormation

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

Der Rückgabewert von Ref hängt vom Typ der Entität ab, auf die verwiesen wird:

  • Wenn Sie den logischen Namen eines Parameters angeben, wird der Wert des Parameters zurückgegeben. Weitere Informationen finden Sie unter CloudFormation Vorlage Parameters Syntax.

  • Wenn Sie den logischen Namen einer Ressource angeben, wird ein Wert zurückgegeben, mit dem Sie diese Ressource identifizieren. Normalerweise ist das der Name der Ressource. Bei einigen Ressourcen wird jedoch ein Bezeichner zurückgegeben, der im Kontext der Ressource eine andere wichtige Bedeutung hat. Beispielsweise gibt die AWS::EC2::EIP Ressource die IP-Adresse und die Instanz-ID AWS::EC2::Instance zurück. Weitere Informationen zu Ref Rückgabewerten für eine Ressource finden Sie in der Dokumentation zu dieser Ressource imRessourcen- und Eigenschaftstypen.

  • Wenn Sie eine intrinsische Funktion angeben, wird die Ausgabe dieser Funktion zurückgegeben.

Beispiele

Erstellen Sie Verweise zwischen Ressourcen

Die folgende Ressourcendeklaration für eine Elastic IP-Adresse benötigt die Instanz-ID einer EC2 Instanz. Sie verwendet die Ref Funktion, um die Instanz-ID der MyEC2Instance Ressource anzugeben, die an anderer Stelle in der Vorlage deklariert wurde.

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

Gibt eine Ressourcen-ID als Stack-Ausgabe zurück

Die folgenden Beispiele zeigen, wie die Ref Funktion verwendet wird, um den Namen eines Amazon S3 S3-Buckets mit dem logischen Namen MyBucket als Stack-Ausgabe zurückzugeben.

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

Verwenden Sie eine Fn::Join intrinsische Funktion innerhalb der Funktion Ref

Anmerkung

Wenn Sie die AWS::LanguageExtensions Transformation verwenden, können Sie sie Ref in Kombination mit anderen systemeigenen Funktionen verwenden. Informationen zu unterstützten Funktionen finden Sie unter. Unterstützte Funktionen

Die folgenden Beispiele zeigen, wie Ressourcenbezeichner mithilfe der systemeigenen FunktionFn::Sub, der Bedingungen und der Eingabe für den Parameter festgelegt werden. Stage Die Funktionen Ref und die Fn::GetAtt Funktionen verweisen dann auf die entsprechenden Werte, die auf der 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 Fn::Join wird mit verwendet, Ref um den Namen des SNS-Themas für die AlarmActions Eigenschaft 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 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

Unterstützte Funktionen

Wenn Sie das verwenden AWS::LanguageExtensions transformieren, können Sie die folgenden Funktionen innerhalb der Ref Funktion verwenden.