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: AutoScalingGroup 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. EIPSumber daya AWS:EC2::, misalnya, mengembalikan alamat IP, dan AWS::EC2: :Instance mengembalikan ID instance.
Tip
Anda juga dapat menggunakan Ref
untuk menambahkan nilai ke Outputs referensi sintaks bagian untuk template CloudFormation 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 EC2 instance dari sebuah instance 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 panggung. Fn::Sub
pertama kali digunakan Fn::GetAtt
untuk mendapatkan SQS antrian Amazon yang sesuai untuk mengatur dimensi CloudWatch alarm Amazon. ARN 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 panggung. Fn::Sub
pertama kali digunakan untuk mendapatkan SNS topik Amazon yang sesuai untuk mengatur dimensi CloudWatch alarm Amazon. ARN 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.