Ref - AWS CloudFormation

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Ref

Fungsi intrinsik Ref mengembalikan nilai parameter atau sumber daya yang ditentukan. Ketika Tansformasi AWS::LanguageExtensions transformasi digunakan, Anda dapat menggunakan fungsi intrinsik sebagai parameter untuk Ref dan. Fn::GetAtt

  • Ketika Anda menentukan nama logis parameter, ia mengembalikan nilai dari parameter.

  • Ketika Anda menentukan nama logis sumber daya, ia mengembalikan nilai yang biasanya dapat Anda gunakan untuk direferensikan ke sumber daya tersebut, seperti ID fisik.

  • Ketika Anda menentukan fungsi intrinsik, ia mengembalikan output dari fungsi itu.

Ketika anda menyatakan sumber daya di templat dan Anda perlu menentukan sumber daya templat lainnya berdasarkan nama, Anda dapat menggunakan Ref untuk direferensikan ke sumber daya lainnya tersebut. Secara umum, Ref mengembalikan nama sumber daya. Misalnya, referensi ke AWS::AutoScaling::AutoScalingGrup mengembalikan nama sumber daya grup Auto Scaling tersebut.

Untuk beberapa sumber daya, pengidentifikasi yang dikembalikan adalah yang memiliki arti signifikan lainnya dalam konteks sumber daya. Sumber daya AWS: :EC2: :EIP, misalnya, mengembalikan alamat IP, dan AWS::EC2::Instancemengembalikan ID instance.

Tip

Anda juga dapat menggunakan Ref untuk menambahkan nilai ke Output pesan.

Untuk informasi lebih lanjut tentang nilai kembali Ref untuk sumber daya atau properti tertentu, jadikan dokumentasi untuk sumber daya atau properti di Referensi sumber daya dan properti sebagai referensi.

Pernyataan

JSON

{ "Ref" : "logicalName" }
{ "Ref" : "IntrinsicFunction" }

YAML

Sintaks untuk nama fungsi penuh:

Ref: logicalName
Ref: IntrinsicFunction

Sintaks untuk bentuk pendek:

!Ref logicalName
!Ref IntrinsicFunction

Parameter

logicalName

Nama logis dari sumber daya atau parameter yang ingin Anda referensikan.

IntrinsicFunction

Fungsi intrinsik yang menyelesaikan string yang valid. Ini harus berisi referensi ke parameter atau pengidentifikasi, dan tidak boleh berisi pengidentifikasi logis sumber daya.

Nilai yang dikembalikan

Ketika parameternya adalah LogicalName, nilai yang dikembalikan adalah ID fisik sumber daya atau nilai parameter.

Ketika parameternya adalah IntrinsicFunction, nilai yang dikembalikan adalah nilai kembali dari fungsi intrinsik

Contoh

Contoh

Deklarasi sumber daya berikut untuk alamat IP Elastis memerlukan ID instance dari instans EC2 dan menggunakan Ref fungsi untuk menentukan ID instance MyEC2Instance sumber daya:

JSON

"MyEIP" : { "Type" : "AWS::EC2::EIP", "Properties" : { "InstanceId" : { "Ref" : "MyEC2Instance" } } }

YAML

MyEIP: Type: "AWS::EC2::EIP" Properties: InstanceId: !Ref MyEC2Instance

Contoh pengenal penghasil untuk beberapa tahap

Contoh ini menunjukkan bagaimana menggunakan fungsi Fn::Sub intrinsik untuk menggantikan nilai untuk Identifier untuk tahapan yang berbeda. Fungsi Ref dan Fn::GetAtt fungsi kemudian dapat digunakan untuk referensi nilai yang sesuai, berdasarkan input untuk tahap. Fn::Subpertama kali digunakan Fn::GetAtt untuk mendapatkan ARN dari antrian Amazon SQS yang sesuai untuk mengatur dimensi alarm Amazon. CloudWatch Selanjutnya, Fn::Join digunakan dengan Ref untuk membuat string ID logis dari Stage parameter.

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

Contoh menggunakan fungsi Fn::Sub intrinsik di dalam fungsi Ref

Contoh ini menunjukkan bagaimana menggunakan fungsi Fn::Sub intrinsik untuk menggantikan nilai untuk fungsi tersebut. Ref Fungsi Ref dan Fn::GetAtt fungsi kemudian dapat digunakan untuk referensi nilai yang sesuai, berdasarkan input untuk tahap. Fn::Subpertama kali digunakan untuk mendapatkan ARN dari topik Amazon SNS yang sesuai untuk mengatur dimensi alarm Amazon. CloudWatch Selanjutnya, Fn::Join digunakan dengan Ref untuk membuat string ID logis dari Stage parameter.

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}'

Fungsi yang didukung

Saat Tansformasi AWS::LanguageExtensions transformasi digunakan, di dalam Ref fungsi, Anda dapat menggunakan fungsi-fungsi berikut.