Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Ref
La funzione intrinseca Ref
restituisce il valore del parametro o della risorsa specificati. Quando viene utilizzata la trasformazione Trasformazione AWS::LanguageExtensions, è possibile utilizzare le funzioni intrinseche come parametro per Ref e Fn::GetAtt.
-
Quando specifichi il nome logico di un parametro, viene restituito il valore del parametro.
-
Quando specifichi il nome logico di una risorsa, viene restituito un valore che in genere puoi utilizzare per fare riferimento a tale risorsa, ad esempio un ID fisico.
-
Quando si specifica una funzione intrinseca, viene restituito l'output di tale funzione.
Quando dichiari una risorsa in un modello e devi specificare un'altra risorsa del modello in base al nome, puoi utilizzare Ref
per fare riferimento all'altra risorsa. In genere, Ref
restituisce il nome della risorsa. Ad esempio, un riferimento a AWS::AutoScaling: AutoScalingGroup restituisce il nome di quella risorsa del gruppo Auto Scaling.
Per alcune risorse, viene restituito un identificatore con un altro significato importante nel contesto della risorsa. Una EIP risorsa AWS::EC2:, ad esempio, restituisce l'indirizzo IP e una risorsa AWS::EC2: :Instance restituisce l'ID dell'istanza.
Suggerimento
Puoi anche utilizzare Ref
per aggiungere valori ai messaggi Outputs riferimento alla sintassi della sezione per i modelli CloudFormation .
Per ulteriori informazioni sui valori Ref
restituiti per una risorsa o una proprietà specifica, consulta la documentazione per la risorsa o la proprietà in Informazioni di riferimento su proprietà e risorse.
Dichiarazione
JSON
{ "Ref" : "
logicalName
" }
{ "Ref" : "
IntrinsicFunction
" }
YAML
Sintassi per il nome completo della funzione:
Ref:
logicalName
Ref:
IntrinsicFunction
Sintassi per la forma breve:
!Ref
logicalName
!Ref
IntrinsicFunction
Parametri
- logicalName
-
Il nome logico della risorsa o del parametro di riferimento desiderato.
- IntrinsicFunction
-
La funzione intrinseca che restituisce una stringa valida. Deve contenere riferimenti a parametri o identificatori e non deve contenere identificatori logici di risorse.
Valore restituito
Quando il parametro è un logicalName
, il valore restituito è l'ID fisico della risorsa o il valore del parametro.
Quando il parametro è un IntrinsicFunction
, il valore restituito è il valore restituito dalla funzione intrinseca
Esempi
Esempio
La seguente dichiarazione di risorsa per un indirizzo IP elastico richiede l'ID di istanza di un'EC2istanza e utilizza la Ref
funzione per specificare l'ID di istanza della MyEC2Instance
risorsa:
JSON
"MyEIP" : { "Type" : "AWS::EC2::EIP", "Properties" : { "InstanceId" : { "Ref" : "MyEC2Instance" } } }
YAML
MyEIP: Type: "AWS::EC2::EIP" Properties: InstanceId: !Ref MyEC2Instance
Esempio di generazione di un identificatore per più fasi
Questo esempio dimostra come utilizzare la funzione intrinseca Fn::Sub
per sostituire i valori dell'identificatore per fasi diverse. Le funzioni Ref
e le Fn::GetAtt
funzioni possono quindi essere utilizzate per fare riferimento ai valori appropriati, in base all'input per lo stage. Fn::Sub
viene prima utilizzato con Fn::GetAtt
per ottenere ARN la SQS coda Amazon appropriata per impostare le dimensioni dell' CloudWatchallarme Amazon. Successivamente, Fn::Join viene utilizzato con Ref
per creare la stringa ID logica del parametro Stage
.
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
Esempio: uso della funzione Fn::Sub
intrinseca all'interno della funzione Ref
Questo esempio dimostra come utilizzare la funzione intrinseca Fn::Sub
per sostituire i valori per la funzione Ref
. Le funzioni Ref
e le Fn::GetAtt
funzioni possono quindi essere utilizzate per fare riferimento ai valori appropriati, in base all'input per lo stage. Fn::Sub
viene utilizzato innanzitutto per ottenere ARN l'SNSargomento Amazon appropriato per impostare le dimensioni dell' CloudWatch allarme Amazon. Successivamente, Fn::Join viene utilizzato con Ref
per creare la stringa ID logica del parametro Stage
.
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}'
Funzioni supportate
Quando la trasformazione Trasformazione AWS::LanguageExtensions viene utilizzata all'interno della funzione Ref
, puoi utilizzare le seguenti funzioni.