Ref - AWS CloudFormation

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.

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