

Ini adalah *Panduan Referensi CloudFormation Template* baru. Harap perbarui bookmark dan tautan Anda. Untuk bantuan memulai CloudFormation, lihat [Panduan AWS CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

# `Ref`
<a name="intrinsic-function-reference-ref"></a>

Fungsi intrinsik `Ref` mengembalikan nilai parameter tertentu, sumber daya, atau fungsi intrinsik lainnya. Fungsi ini biasanya digunakan untuk membuat referensi antar sumber daya dalam CloudFormation template. 

## Pernyataan
<a name="ref-declaration"></a>

### JSON
<a name="intrinsic-function-reference-ref-syntax.json"></a>

```
{ "Ref" : "logicalName" }
```

```
{ "Ref" : "IntrinsicFunction" }
```

### YAML
<a name="intrinsic-function-reference-ref-syntax.yaml"></a>

Sintaks untuk nama fungsi penuh:

```
Ref: logicalName
```

```
Ref:
   IntrinsicFunction
```

Sintaks untuk bentuk pendek:

```
!Ref logicalName
```

```
!Ref
   IntrinsicFunction
```

## Parameter
<a name="ref-parameters"></a>

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
<a name="ref-return-value"></a>

Nilai pengembalian `Ref` tergantung pada jenis entitas yang direferensikan:
+ Ketika Anda menentukan nama logis parameter, ia mengembalikan nilai dari parameter. Untuk informasi selengkapnya, lihat [Parameterssintaks CloudFormation template](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html).
+ Saat Anda menentukan nama logis sumber daya, ia mengembalikan nilai yang Anda gunakan untuk mengidentifikasi sumber daya tersebut. Biasanya, itulah nama sumber daya. Namun, untuk beberapa sumber daya, pengidentifikasi dikembalikan yang memiliki makna signifikan lainnya dalam konteks sumber daya. Misalnya, `AWS::EC2::EIP` sumber daya mengembalikan alamat IP, dan `AWS::EC2::Instance` mengembalikan ID instance. Untuk informasi selengkapnya tentang nilai `Ref` pengembalian sumber daya, lihat dokumentasi untuk sumber daya tersebut di[Referensi sumber daya dan properti](aws-template-resource-type-ref.md).
+ Ketika Anda menentukan fungsi intrinsik, ia mengembalikan output dari fungsi itu.

## Contoh
<a name="ref-examples"></a>

### Buat referensi antar sumber daya
<a name="intrinsic-function-reference-ref-example"></a>

Deklarasi sumber daya berikut untuk alamat IP Elastis membutuhkan ID instance dari instans EC2. Ini menggunakan `Ref` fungsi untuk menentukan ID instance dari `MyEC2Instance` sumber daya yang dideklarasikan di tempat lain dalam template.

#### JSON
<a name="intrinsic-function-reference-ref-example.json"></a>

```
{
  "AWSTemplateFormatVersion":"2010-09-09",
  "Resources":{
  
      ...
  
    "MyEIP":{
      "Type":"AWS::EC2::EIP",
      "Properties":{
        "InstanceId":{
          "Ref":"MyEC2Instance"
        }
      }
    }
  }
}
```

#### YAML
<a name="intrinsic-function-reference-ref-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Resources:

  ...

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

### Kembalikan pengenal sumber daya sebagai output tumpukan
<a name="intrinsic-function-reference-ref-example-2"></a>

Contoh berikut menunjukkan cara menggunakan `Ref` fungsi untuk mengembalikan nama bucket Amazon S3 dengan nama logis `MyBucket` sebagai output tumpukan. 

#### JSON
<a name="intrinsic-function-reference-ref-example-2.json"></a>

```
{
  "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
<a name="intrinsic-function-reference-ref-example-2.yaml"></a>

```
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
```

### Gunakan fungsi `Fn::Join` intrinsik di dalam fungsi `Ref`
<a name="ref-example-intrinsic-functions-multiple-stages"></a>

**catatan**  
Ketika Anda menggunakan `AWS::LanguageExtensions` transformasi, Anda dapat menggunakan `Ref` dalam kombinasi dengan fungsi intrinsik lainnya. Untuk fungsi yang didukung, lihat[Fungsi yang didukung](#ref-supported-functions).

Contoh berikut menunjukkan cara mengatur pengidentifikasi sumber daya menggunakan fungsi `Fn::Sub` intrinsik, kondisi, dan input untuk parameter. `Stage` `Fn::GetAtt`Fungsi `Ref` dan kemudian mereferensikan nilai yang sesuai, berdasarkan panggung. `Fn::Sub`pertama kali digunakan `Fn::GetAtt` untuk mendapatkan ARN dari antrian Amazon SQS yang sesuai untuk mengatur dimensi alarm Amazon. CloudWatch Selanjutnya, [`Fn::Join`](intrinsic-function-reference-join.md) digunakan dengan `Ref` untuk membuat nama topik SNS untuk `AlarmActions` properti. 

#### JSON
<a name="ref-example-intrinsic-functions-multiple-stages.json"></a>

```
{
    "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
<a name="ref-example-intrinsic-functions-multiple-stages.yaml"></a>

```
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
```

## Fungsi yang didukung
<a name="ref-supported-functions"></a>

Saat Anda menggunakan [AWS::LanguageExtensionstransformasi](transform-aws-languageextensions.md), Anda dapat menggunakan fungsi-fungsi berikut dalam `Ref` fungsi tersebut.
+ [`Fn::Base64`](intrinsic-function-reference-base64.md)
+ [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md)
+ [`Fn::If`](intrinsic-function-reference-conditions.md#intrinsic-function-reference-conditions-if)
+ [`Fn::ImportValue`](intrinsic-function-reference-importvalue.md)
+ [`Fn::Join`](intrinsic-function-reference-join.md)
+ [`Fn::Sub`](intrinsic-function-reference-sub.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)
+ `Ref`