

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.

# Fungsi aturan
<a name="intrinsic-function-reference-rules"></a>

Fungsi aturan adalah fungsi khusus yang hanya berfungsi di `Rules` bagian CloudFormation templat. Fungsi-fungsi ini membantu Anda memvalidasi nilai parameter menggunakan logika kustom. Semua validasi terjadi sebelum CloudFormation membuat atau memperbarui sumber daya apa pun.

Aturan berguna ketika batasan parameter standar tidak mencukupi. Misalnya, ketika SSL diaktifkan, sertifikat dan nama domain harus disediakan. Aturan dapat memastikan bahwa dependensi ini terpenuhi.

Dalam syarat atau pernyataan aturan, Anda dapat menggunakan fungsi intrinsik, seperti `Fn::Equals`, `Fn::Not`, dan `Fn::RefAll`. Properti kondisi menentukan apakah CloudFormation berlaku pernyataan. Jika kondisi mengevaluasi`true`, CloudFormation mengevaluasi pernyataan untuk memverifikasi apakah nilai parameter valid ketika tumpukan dibuat atau diperbarui. Jika nilai parameter tidak valid, CloudFormation tidak membuat atau memperbarui tumpukan. Jika kondisi dievaluasi`false`, CloudFormation tidak memeriksa nilai parameter dan melanjutkan operasi tumpukan.

Jika Anda baru menggunakan aturan di template Anda, kami sarankan Anda terlebih dahulu meninjau topik [Rulessintaks CloudFormation template](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/rules-section-structure.html) di *Panduan AWS CloudFormation Pengguna*.

**Topics**
+ [`Fn::And`](#fn-and)
+ [`Fn::Contains`](#fn-contains)
+ [`Fn::EachMemberEquals`](#fn-eachmemberequals)
+ [`Fn::EachMemberIn`](#fn-eachmemberin)
+ [`Fn::Equals`](#fn-equals)
+ [`Fn::Not`](#fn-not)
+ [`Fn::Or`](#fn-or)
+ [`Fn::RefAll`](#fn-refall)
+ [`Fn::ValueOf`](#fn-valueof)
+ [`Fn::ValueOfAll`](#fn-valueofall)
+ [Fungsi yang didukung](#supported-rule-functions)
+ [Atribut yang didukung](#rules-parameter-attributes)

## `Fn::And`
<a name="fn-and"></a>

Menghasilkan `true` jika semua syarat yang ditentukan mengevaluasi ke `true`; menghasilkan `false` jika salah satu syarat mengevaluasi ke `false`. `Fn::And` bertindak sebagai operator AND. Jumlah minimum syarat yang dapat Anda sertakan adalah dua, dan maksimum adalah sepuluh.

### Pernyataan
<a name="fn-and-declaration"></a>

```
"Fn::And" : [{condition}, {...}]
```

### Parameter
<a name="fn-and-parameters"></a>

*syarat*  
Fungsi intrinsik khusus aturan yang mengevaluasi ke `true` atau `false`.

### Contoh
<a name="fn-and-example"></a>

Contoh berikut mengevaluasi ke `true` jika nama grup keamanan yang direferensikan sama dengan `sg-mysggroup` dan jika nilai parameter `InstanceType` adalah `t3.large` atau `t3.small`:

```
"Fn::And": [
  {
    "Fn::Equals": [
      "sg-mysggroup",
      {"Ref": "ASecurityGroup"}
    ]
  },
  {
    "Fn::Contains": [
      [
        "t3.large",
        "t3.small"
      ],
      {"Ref": "InstanceType"}
    ]
  }
]
```

## `Fn::Contains`
<a name="fn-contains"></a>

Menghasilkan `true` jika string yang ditentukan cocok dengan setidaknya satu nilai dalam daftar string.

### Pernyataan
<a name="fn-contains-declaration"></a>

```
"Fn::Contains" : [[list_of_strings], string]
```

### Parameter
<a name="fn-contains-parameters"></a>

*list\$1of\$1strings*  
Daftar string, seperti `"A", "B", "C"`.

*string*  
Sebuah string, seperti `"A"`, yang ingin Anda bandingkan terhadap daftar string.

### Contoh
<a name="fn-contains-example"></a>

Fungsi berikut mengevaluasi ke `true` jika nilai parameter `InstanceType` yang terdapat dalam daftar (`t3.large` atau `t3.small`):

```
"Fn::Contains" : [
  ["t3.large", "t3.small"], {"Ref" : "InstanceType"}
]
```

## `Fn::EachMemberEquals`
<a name="fn-eachmemberequals"></a>

Menghasilkan `true` jika string yang ditentukan cocok dengan semua nilai dalam daftar.

### Pernyataan
<a name="fn-eachmemberequals-declaration"></a>

```
"Fn::EachMemberEquals" : [[list_of_strings], string]
```

### Parameter
<a name="fn-eachmemberequals-parameters"></a>

*list\$1of\$1strings*  
Daftar string, seperti `"A", "B", "C"`.

*string*  
Sebuah string, seperti `"A"`, yang ingin Anda bandingkan terhadap daftar string.

### Contoh
<a name="fn-eachmemberequals-example"></a>

Fungsi berikut mengembalikan `true` jika `Department` tag untuk semua parameter tipe `AWS::EC2::VPC::Id` memiliki nilai`IT`:

```
"Fn::EachMemberEquals" : [
  {"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]}, "IT"
]
```

## `Fn::EachMemberIn`
<a name="fn-eachmemberin"></a>

Menghasilkan `true` jika setiap anggota dalam daftar string cocok dengan setidaknya satu nilai dalam daftar string kedua.

### Pernyataan
<a name="fn-eachmemberin-declaration"></a>

```
"Fn::EachMemberIn" : [[strings_to_check], [strings_to_match]]
```

### Parameter
<a name="fn-eachmemberin-parameters"></a>

*strings\$1to\$1check*  
Daftar string, seperti`"A", "B", "C"`. CloudFormation memeriksa apakah setiap anggota dalam `strings_to_check` parameter ada dalam `strings_to_match` parameter.

*strings\$1to\$1match*  
Daftar string, seperti `"A", "B", "C"`. Setiap anggota di parameter `strings_to_match` dibandingkan terhadap anggota parameter `strings_to_check`.

### Contoh
<a name="fn-eachmemberin-example"></a>

Fungsi berikut memeriksa apakah pengguna menentukan subnet yang di Virtual Private Cloud (VPC) yang valid. VPC harus ada di akun dan Wilayah tempat pengguna bekerja dengan tumpukan. Fungsi ini berlaku untuk semua parameter tipe `AWS::EC2::Subnet::Id`.

```
"Fn::EachMemberIn" : [ 
  {"Fn::ValueOfAll" : ["AWS::EC2::Subnet::Id", "VpcId"]}, {"Fn::RefAll" : "AWS::EC2::VPC::Id"}
]
```

## `Fn::Equals`
<a name="fn-equals"></a>

Membandingkan dua nilai untuk menentukan apakah mereka sama. Menghasilkan `true` jika dua nilai sama dan `false` jika tidak.

### Pernyataan
<a name="fn-equals-declaration"></a>

```
"Fn::Equals" : ["value_1", "value_2"]
```

### Parameter
<a name="fn-equals-parameters"></a>

*`value`*  
Nilai dari jenis apa pun yang ingin Anda bandingkan dengan nilai lain.

### Contoh
<a name="fn-equals-example"></a>

Contoh berikut mengevaluasi ke `true` jika nilai untuk parameter `EnvironmentType` adalah sama dengan `prod`:

```
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]
```

## `Fn::Not`
<a name="fn-not"></a>

Menghasilkan `true` untuk syarat yang mengevaluasi ke `false`, dan menghasilkan `false` untuk syarat yang mengevaluasi ke `true`. `Fn::Not` bertindak sebagai operator NOT.

### Pernyataan
<a name="fn-not-declaration"></a>

```
"Fn::Not" : [{condition}]
```

### Parameter
<a name="fn-not-parameters"></a>

*`condition`*  
Fungsi intrinsik khusus aturan yang mengevaluasi ke `true` atau `false`.

### Contoh
<a name="fn-not-example"></a>

Contoh berikut mengevaluasi ke `true` jika nilai untuk parameter `EnvironmentType` tidak sama dengan `prod`:

```
"Fn::Not" : [{"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]}]
```

## `Fn::Or`
<a name="fn-or"></a>

Menghasilkan `true` jika salah satu dari syarat yang ditentukan mengevaluasi ke `true`; menghasilkan `false` jika semua syarat mengevaluasi ke `false`. `Fn::Or` bertindak sebagai operator OR. Jumlah minimum syarat yang dapat Anda sertakan adalah dua, dan maksimum adalah sepuluh.

### Pernyataan
<a name="fn-or-declaration"></a>

```
"Fn::Or" : [{condition}, {...}]
```

### Parameter
<a name="fn-or-parameters"></a>

*`condition`*  
Fungsi intrinsik khusus aturan yang mengevaluasi ke `true` atau `false`.

### Contoh
<a name="fn-or-example"></a>

Contoh berikut mengevaluasi ke `true` jika nama grup keamanan yang direferensikan sama dengan `sg-mysggroup` atau jika nilai parameter `InstanceType` adalah `t3.large` atau `t3.small`:

```
"Fn::Or" : [
  {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]},
  {"Fn::Contains" : [["t3.large", "t3.small"], {"Ref" : "InstanceType"}]}
]
```

## `Fn::RefAll`
<a name="fn-refall"></a>

Menghasilkan semua nilai untuk tipe parameter tertentu.

### Pernyataan
<a name="fn-refall-declaration"></a>

```
"Fn::RefAll" : "parameter_type"
```

### Parameter
<a name="fn-refall-parameters"></a>

*parameter\$1type*  
Jenis parameter AWS-spesifik, seperti `AWS::EC2::SecurityGroup::Id` atau`AWS::EC2::VPC::Id`. Untuk informasi selengkapnya, lihat [Jenis parameter AWS khusus yang didukung](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-supplied-parameter-types.html#aws-specific-parameter-types-supported) di *Panduan AWS CloudFormation Pengguna*.

### Contoh
<a name="fn-refall-example"></a>

Fungsi berikut mengembalikan daftar semua VPC IDs untuk Wilayah dan Akun AWS di mana tumpukan sedang dibuat atau diperbarui:

```
"Fn::RefAll" : "AWS::EC2::VPC::Id"
```

## `Fn::ValueOf`
<a name="fn-valueof"></a>

Menghasilkan nilai atribut atau daftar nilai untuk parameter dan atribut tertentu.

### Pernyataan
<a name="fn-valueof-declaration"></a>

```
"Fn::ValueOf" : [ "parameter_logical_id", "attribute" ]
```

### Parameter
<a name="fn-valueof-parameters"></a>

*atribut*  
Nama atribut untuk mengambil nilai dari. Untuk informasi selengkapnya tentang perubahan atribut, lihat [Atribut yang didukung](#rules-parameter-attributes).

*parameter\$1logical\$1id*  
Nama parameter untuk mengambil nilai atribut dari. Parameter harus dideklarasikan di bagian `Parameters` dari templat.

### Contoh
<a name="fn-valueof-examples"></a>

Contoh berikut menghasilkan nilai dari tanda `Department` untuk VPC yang ditentukan oleh parameter `ElbVpc`:

```
"Fn::ValueOf" : ["ElbVpc", "Tags.Department"]
```

Jika Anda menentukan beberapa nilai untuk parameter, ValueOf fungsi Fn:: dapat mengembalikan daftar. Misalnya, Anda dapat menentukan beberapa subnet dan mendapatkan daftar Availability Zone di mana setiap anggota adalah Availability Zone dari subnet tertentu:

```
"Fn::ValueOf" : ["ListOfElbSubnets", "AvailabilityZone"]
```

## `Fn::ValueOfAll`
<a name="fn-valueofall"></a>

Menghasilkan daftar semua nilai atribut untuk tipe parameter dan atribut tertentu.

### Pernyataan
<a name="fn-valueofall-declaration"></a>

```
"Fn::ValueOfAll" : ["parameter_type", "attribute"]
```

### Parameter
<a name="fn-valueofall-parameters"></a>

*atribut*  
Nama dari atribut yang ingin Anda ambil nilainya. Untuk informasi selengkapnya tentang perubahan atribut, lihat [Atribut yang didukung](#rules-parameter-attributes).

*parameter\$1type*  
Jenis parameter AWS-spesifik, seperti `AWS::EC2::SecurityGroup::Id` atau`AWS::EC2::VPC::Id`. Untuk informasi selengkapnya, lihat [Jenis parameter AWS khusus yang didukung](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-supplied-parameter-types.html#aws-specific-parameter-types-supported) di *Panduan AWS CloudFormation Pengguna*.

### Contoh
<a name="fn-valueofall-example"></a>

Dalam contoh berikut, `Fn::ValueOfAll` fungsi mengembalikan daftar nilai, di mana setiap anggota adalah nilai `Department` tag untuk VPCs dengan tag itu:

```
"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]
```

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

Anda tidak dapat menggunakan fungsi lain dalam fungsi `Fn::ValueOf` dan `Fn::ValueOfAll`. Namun, Anda dapat menggunakan fungsi berikut dalam semua fungsi intrinsik khusus aturan lainnya:
+ `Ref`
+ Fungsi intrinsik khusus aturan lainnya

## Atribut yang didukung
<a name="rules-parameter-attributes"></a>

Daftar berikut ini menjelaskan nilai atribut yang dapat Anda ambil untuk sumber daya dan tipe parameter tertentu:

Jenis `AWS::EC2::VPC::Id` parameter atau VPC IDs.  
+ DefaultNetworkAcl
+ DefaultSecurityGroup
+ Tag. *tag\$1key*

Jenis `AWS::EC2::Subnet::Id` parameter atau subnet IDs,  
+ AvailabilityZone
+ Tag. *tag\$1key*
+ VpcId

Jenis `AWS::EC2::SecurityGroup::Id` parameter atau grup keamanan IDs.  
+ Tag. *tag\$1key*