Dies ist das neue CloudFormation Template Reference Guide. Bitte aktualisieren Sie Ihre Lesezeichen und Links. Hilfe bei den ersten Schritten mit CloudFormation finden Sie im AWS CloudFormation Benutzerhandbuch.
Ref
Die intrinsische Funktion Ref gibt den Wert eines angegebenen Parameters, einer Ressource oder einer anderen intrinsischen Funktion zurück. Diese Funktion wird üblicherweise verwendet, um Referenzen zwischen Ressourcen innerhalb einer CloudFormation-Vorlage zu erstellen.
Deklaration
JSON
{ "Ref" : "logicalName" }
{ "Ref" : "IntrinsicFunction" }
YAML
Syntax für den vollständigen Funktionsnamen:
Ref:logicalName
Ref:IntrinsicFunction
Syntax für die Kurzform:
!ReflogicalName
!RefIntrinsicFunction
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 von der Art 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 können. Normalerweise ist das der Name der Ressource. Für einige Ressourcen wird jedoch ein Identifikator zurückgegeben, der im Kontext der Ressource eine andere Bedeutung hat. Die Ressource
AWS::EC2::EIPgibt zum Beispiel die IP-Adresse zurück und die RessourceAWS::EC2::Instancedie Instance-ID. Weitere Informationen überRef-Rückgabewerte für eine Ressource finden Sie in der Dokumentation für diese Ressource im Abschnitt Ressourcen- und Eigenschaftstypen. -
Wenn Sie eine intrinsische Funktion angeben, wird die Ausgabe dieser Funktion zurückgegeben.
Beispiele
Referenzen zwischen Ressourcen erstellen
Die folgende Ressourcendeklaration für eine Elastic IP-Adresse benötigt die Instance-ID einer EC2-Instance. Sie verwendet die Funktion Ref, um die Instance-ID der an anderer Stelle in der Vorlage deklarierten Ressource MyEC2Instance anzugeben.
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
Rückgabe einer Ressourcenkennung als Stack-Ausgabe
Die folgenden Beispiele zeigen, wie Sie die Funktion Ref verwenden, um den Namen eines Amazon 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 die intrinsische Funktion Fn::Join innerhalb der Funktion Ref .
Anmerkung
Wenn Sie die Transformation AWS::LanguageExtensions verwenden, können Sie Ref in Kombination mit anderen intrinsischen Funktionen verwenden. Für unterstützte Funktionen, siehe Unterstützte Funktionen.
Die folgenden Beispiele zeigen, wie Sie mit der intrinsischen Funktion Fn::Sub, den Bedingungen und der Eingabe für den Parameter Stage Identifikatoren von Ressourcen festlegen. Die Funktionen Ref und Fn::GetAtt verweisen dann auf die entsprechenden Werte, die auf der Stufe basieren. Fn::Sub wird zunächst mit Fn::GetAtt verwendet, um die ARN der entsprechenden Amazon SQS-Warteschlange zu erhalten und die Dimensionen des Amazon CloudWatch-Alarms festzulegen. Als nächstes wird Fn::Join mit Ref verwendet, um den Namen des SNS-Themas für die Eigenschaft AlarmActions 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 die Funktion AWS::LanguageExtensions transformverwenden, können Sie die folgenden Funktionen innerhalb der Funktion Ref verwenden.