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-IDAWS::EC2::Instance
zurück. Weitere Informationen zuRef
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::Sub
wird 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.