Ref - AWS CloudFormation

Questa è la nuova Guida di riferimento ai modelli CloudFormation . Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la Guida AWS CloudFormation per l'utente.

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 di un parametro, di una risorsa o di un’altra funzione intrinseca. Questa funzione viene comunemente utilizzata per creare riferimenti tra risorse all’interno di un modello CloudFormation.

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

Il valore restituito di Ref dipende dal tipo di entità a cui si fa riferimento:

  • Quando specifichi il nome logico di un parametro, viene restituito il valore del parametro. Per ulteriori informazioni, consulta CloudFormation template Parameters syntax.

  • Quando specifichi il nome logico di una risorsa, viene restituito un valore che usi per identificare quella risorsa. Di solito, è il nome della risorsa. Tuttavia, per alcune risorse, viene restituito un identificatore con un altro significato importante nel contesto della risorsa. Ad esempio, la risorsa AWS::EC2::EIP restituisce l’indirizzo IP e AWS::EC2::Instance restituisce l’ID dell’istanza. Per ulteriori informazioni sui valori Ref restituiti per una risorsa, consulta la documentazione per quella risorsa in Informazioni di riferimento su proprietà e risorse.

  • Quando si specifica una funzione intrinseca, viene restituito l’output di tale funzione.

Esempi

Crea riferimenti tra le risorse

La seguente dichiarazione di risorse per un indirizzo IP elastico richiede l’ID istanza di un’istanza EC2. Utilizza la funzione Ref per specificare l’ID di istanza della risorsa MyEC2Instance dichiarata altrove nel modello.

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

Restituisce un identificatore di risorsa come output dello stack

Gli esempi seguenti mostrano come utilizzare la funzione Ref per restituire il nome di un bucket Amazon S3 con il nome logico MyBucket come output dello stack.

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

Usa la funzione intrinseca Fn::Join all’interno della funzione Ref

Nota

Quando usi la trasformazione AWS::LanguageExtensions, puoi utilizzare Ref in combinazione con altre funzioni intrinseche. Per le funzioni supportate, consulta Funzioni supportate.

Gli esempi seguenti mostrano come impostare gli identificatori di risorse utilizzando la funzione intrinseca Fn::Sub, le condizioni e l’input per il parametro Stage. Le funzioni Ref e Fn::GetAtt possono quindi fare riferimento ai valori appropriati in base alla fase. Fn::Sub viene utilizzato innanzitutto con Fn::GetAtt per ottenere l’ARN della coda Amazon SQS appropriata e impostare le dimensioni dell’allarme Amazon CloudWatch. Successivamente, Fn::Join viene utilizzato con Ref per creare il nome dell’argomento SNS per la proprietà AlarmActions.

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

Funzioni supportate

Quando usi la trasformazione AWS::LanguageExtensions, puoi utilizzare le seguenti funzioni all’interno della funzione Ref.