

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

# Menggunakan AWS Service Catalog Kendala
<a name="constraints"></a>

Anda menerapkan batasan untuk mengontrol aturan yang diterapkan ke produk dalam portofolio tertentu ketika pengguna akhir meluncurkannya. Ketika pengguna akhir meluncurkan produk, mereka akan melihat aturan yang telah Anda terapkan menggunakan batasan. Anda dapat menerapkan batasan untuk sebuah produk setelah dimasukkan ke dalam portofolio. Batasan akan aktif segera setelah Anda membuatnya, dan batasan tersebut diterapkan ke semua versi terbaru dari produk yang belum diluncurkan.

**Topics**
+ [Batasan Peluncuran](constraints-launch.md)
+ [Batasan Notifikasi](constraints-notification.md)
+ [Batasan Pembaruan Tanda](constraints-resourceupdate.md)
+ [Batasan Set Tumpukan](constraints-stackset.md)
+ [Batasan Templat](catalogs_constraints_template-constraints.md)

# AWS Service Catalog Luncurkan Kendala
<a name="constraints-launch"></a>

Batasan peluncuran menentukan peran AWS Identity and Access Management (IAM) yang AWS Service Catalog mengasumsikan saat pengguna akhir meluncurkan, memperbarui, atau menghentikan produk. Peran IAM adalah kumpulan izin yang dapat diasumsikan oleh pengguna atau AWS layanan sementara untuk menggunakan AWS layanan. Untuk contoh pengantar, lihat:
+ CloudFormation jenis produk: [Langkah 6: Tambahkan batasan peluncuran untuk menetapkan peran IAM](getstarted-launchconstraint.md)
+ Jenis produk Terraform Open Source atau Terraform Cloud: [Langkah 5: Buat peran peluncuran](getstarted-launchrole-Terraform.md)

Batasan peluncuran berlaku untuk produk dalam portofolio (asosiasi portofolio produk). Batasan peluncuran tidak berlaku pada tingkat portofolio atau produk di semua portofolio. Untuk mengaitkan batasan peluncuran dengan semua produk dalam portofolio, Anda harus menerapkan batasan peluncuran untuk setiap produk satu per satu.

Tanpa batasan peluncuran, pengguna akhir harus meluncurkan dan mengelola produk menggunakan kredensial IAM mereka sendiri. Untuk melakukannya, mereka harus memiliki izin untuk CloudFormation, AWS layanan yang digunakan produk, dan AWS Service Catalog. Dengan menggunakan peran peluncuran, Anda dapat membatasi izin pengguna akhir seminimal mungkin yang mereka butuhkan untuk produk tersebut. Untuk informasi selengkapnya tentang izin pengguna akhir, lihat [Identity and Access Management di AWS Service Catalog](controlling_access.md).

Untuk membuat dan menetapkan IAM role, Anda harus memiliki izin administratif IAM berikut:
+ `iam:CreateRole`
+ `iam:PutRolePolicy`
+ `iam:PassRole`
+ `iam:Get*`
+ `iam:List*`

## Mengonfigurasi Peran Peluncuran
<a name="constraints-launch-role"></a>

Peran IAM yang Anda tetapkan ke produk sebagai kendala peluncuran harus memiliki izin untuk menggunakan yang berikut:

**Untuk produk Cloudformation**
+ Kebijakan yang `arn:aws:iam::aws:policy/AWSCloudFormationFullAccess` CloudFormation dikelola
+ Layanan dalam AWS CloudFormation template untuk produk
+ Baca akses ke AWS CloudFormation template dalam bucket Amazon S3 milik layanan. 

**Untuk produk Terraform**
+ Layanan dalam template Amazon S3 untuk produk
+ Baca akses ke template Amazon S3 dalam bucket Amazon S3 milik layanan. 
+ `resource-groups:Tag`untuk menandai instans Amazon EC2 (diasumsikan oleh mesin penyediaan Terraform saat melakukan operasi penyediaan)
+ `resource-groups:CreateGroup`untuk penandaan grup sumber daya (diasumsikan oleh AWS Service Catalog untuk membuat grup sumber daya dan menetapkan tag) 

Kebijakan kepercayaan peran IAM harus memungkinkan AWS Service Catalog untuk mengambil peran tersebut. Pada prosedur di bawah ini, kebijakan kepercayaan akan disetel secara otomatis saat Anda memilih AWS Service Catalog sebagai tipe peran. Jika Anda tidak menggunakan konsol, lihat bagian *Membuat kebijakan kepercayaan untuk AWS layanan yang mengambil peran* dalam [Cara menggunakan kebijakan kepercayaan dengan peran IAM](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/). 

**catatan**  
Izin `servicecatalog:ProvisionProduct`, `servicecatalog:TerminateProvisionedProduct`, dan `servicecatalog:UpdateProvisionedProduct` tidak dapat ditetapkan dalam peran peluncuran. Anda harus menggunakan peran IAM, seperti yang ditunjukkan dalam langkah-langkah kebijakan sebaris di bagian [Memberikan Izin kepada AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-iamenduser.html) Pengguna Akhir.

**catatan**  
Untuk melihat produk dan sumber daya Cloudformation yang disediakan di AWS Service Catalog konsol, pengguna akhir memerlukan akses baca. CloudFormation Melihat produk dan sumber daya yang disediakan di konsol **tidak** menggunakan peran peluncuran.

**Untuk membuat peran peluncuran**

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   Produk Terraform memerlukan konfigurasi peran peluncuran tambahan. Untuk informasi lebih lanjut, tinjau [Langkah 5: Buat peran peluncuran](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-launchrole-Terraform) di *Memulai dengan produk Terraform Open Source*. 

1. Pilih **Peran**.

1. Pilih **Buat Peran Baru**.

1. Masukkan nama peran dan pilih **Langkah Selanjutnya**.

1. Di bawah **Peran Layanan AWS ** di samping **AWS Service Catalog**, pilih **Pilih**.

1. Pada halaman **Lampirkan Kebijakan**, pilih **Langkah Selanjutnya**.

1. Untuk membuat peran, pilih **Buat Peran**. 

**Untuk melampirkan kebijakan ke peran baru**

1. Pada halaman peran yang telah Anda buat untuk melihat halaman detail perannya.

1. Pilih tab **Izin**, dan perluas bagian **Kebijakan Sebaris**. Lalu, pilih **klik di sini**.

1. Pilih **Kebijakan Kustom**, lalu pilih **Pilihan**. 

1. Masukkan nama untuk kebijakan, lalu tempelkan bagian berikut ke bagian editor **Dokumen Kebijakan**: 

   ```
     
             "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":"*",
            "Condition":{
               "StringEquals":{
                  "s3:ExistingObjectTag/servicecatalog:provisioning":"true"
               }
            }
      ]
   }
   ```
**catatan**  
Saat Anda mengonfigurasi peran peluncuran untuk batasan peluncuran, Anda harus menggunakan string ini:. `"s3:ExistingObjectTag/servicecatalog:provisioning":"true"` 

1. Tambahkan baris ke kebijakan untuk setiap layanan tambahan yang digunakan oleh produk. Misalnya, untuk menambahkan izin untuk Amazon Relational Database Service (Amazon RDS), masukkan koma pada akhir baris terakhir pada daftar `Action`, lalu tambahkan baris berikut: 

   ```
   "rds:*"
   ```

1. Pilih **Terapkan Kebijakan**.

## Menerapkan Batasan Peluncuran
<a name="constraints-launch-constraint"></a>

Setelah Anda mengonfigurasi peran peluncuran, tetapkan peran ke produk sebagai batasan peluncuran. Tindakan ini memberitahu AWS Service Catalog untuk mengambil peran ketika pengguna akhir meluncurkan produk. 

**Menetapkan peran ke sebuah produk**

1. Buka konsol Service Catalog di [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Pilih portofolio yang berisi produk.

1. Pilih tab **Batasan** dan pilih **Buat batasan**.

1. Pilih produk dari **Produk** lalu pilih **Luncurkan** di **Tipe batasan**. Pilih **Lanjutkan**.

1. Di bagian **Batasan peluncuran**, Anda dapat memilih IAM role dari akun Anda dan memasukkan ARN IAM role, atau memasukkan nama peran.

   Jika Anda menetapkan nama peran dan jika akun menggunakan batasan peluncuran, akun akan menggunakan nama tersebut untuk IAM role. Pendekatan ini memungkinkan batasan peran peluncuran menjadi akun agnostik sehingga Anda dapat membuat lebih sedikit sumber daya per akun bersama. 
**catatan**  
Nama peran yang diberikan harus muncul di akun yang menciptakan batasan peluncurannya dan di akun pengguna yang meluncurkan produk dengan batasan peluncuran ini. 

1. Setelah menentukan IAM role, pilih **Buat**.

## Menambahkan Deputi Bingung untuk Meluncurkan Kendala
<a name="constraint-confused-deputy"></a>

AWS Service Catalog mendukung perlindungan [Deputi Bingung](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) untuk APIs yang berjalan dengan permintaan Asumsikan Peran. Saat menambahkan batasan peluncuran, Anda dapat membatasi akses peran peluncuran dengan menggunakan `sourceAccount` dan `sourceArn` kondisi dalam kebijakan kepercayaan peran peluncuran. Ini memastikan bahwa peran peluncuran dipanggil oleh sumber tepercaya.

Dalam contoh berikut, AWS Service Catalog pengguna akhir milik akun 111111111111. Saat AWS Service Catalog administrator membuat `LaunchConstraint` untuk produk, pengguna akhir dapat menentukan kondisi berikut dalam kebijakan kepercayaan peran peluncuran untuk membatasi peran yang diasumsikan ke akun 111111111111.

```
"Condition":{
   "ArnLike":{
      "aws:SourceArn":"arn:aws:servicecatalog:us-east-1:111111111111:*"
   },
   "StringEquals":{
      "aws:SourceAccount":"111111111111"
   }
  
}
```

Pengguna yang menyediakan produk dengan produk `LaunchConstraint` harus memiliki yang sama `AccountId` (111111111111). Jika tidak, operasi gagal dengan `AccessDenied` kesalahan, mencegah penyalahgunaan peran peluncuran.

Berikut ini AWS Service Catalog APIs dijamin untuk perlindungan Deputi Bingung:
+ `LaunchConstraint`
+ `ProvisionProduct`
+ `UpdateProvisionedProduct`
+ `TerminateProvisionedProduct`
+ `ExecuteProvisionedProductServiceAction`
+ `CreateProvisionedProductPlan`
+ `ExecuteProvisionedProductPlan`

`sourceArn `Perlindungan untuk AWS Service Catalog hanya mendukung templated ARNs, seperti "`arn:<aws-partition>:servicecatalog:<region>:<accountId>:`" Itu tidak mendukung sumber daya ARNs tertentu.

## Memverifikasi Kendala Peluncuran
<a name="constraints-launch-test"></a>

Untuk memverifikasi AWS Service Catalog penggunaan peran untuk meluncurkan produk dan berhasil menyediakan produk, luncurkan produk dari AWS Service Catalog konsol. Untuk menguji batasan sebelum melepaskannya ke pengguna, buat portofolio uji yang berisi produk yang sama dan uji batasan dengan portofolio tersebut.

**Untuk meluncurkan produk**

1. Di menu untuk AWS Service Catalog konsol, pilih **Service Catalog**, **End user**.

1. Pilih produk untuk membuka halaman **Detail produk**. Di tabel **Opsi peluncuran**, verifikasi Amazon Resource Name (ARN) dari peran yang muncul.

1. Pilih **Luncurkan produk**.

1. Lanjutkan melalui langkah-langkah peluncuran, mengisi informasi yang diperlukan.

1. Verifikasi bahwa produk yang dimulai berhasil.

# AWS Service Catalog Kendala Pemberitahuan
<a name="constraints-notification"></a>

**catatan**  
AWS Service Catalog tidak mendukung batasan pemberitahuan untuk produk Terraform Open Source atau Terraform Cloud. 

Batasan notifikasi menentukan topik Amazon SNS untuk menerima notifikasi tentang peristiwa tumpukan. 

Gunakan prosedur berikut untuk membuat topik SNS dan berlanggananlah ke topik tersebut.

**Untuk membuat topik SNS dan sebuah langganan**

1. [Buka konsol Amazon SNS di https://console.aws.amazon.com/sns/ v3/home.](https://console.aws.amazon.com/sns/v3/home)

1. Pilih **Buat topik**.

1. Ketik nama topik lalu pilih **Buat topik**.

1. Pilih **Buat langganan**.

1. Untuk **Protokol**, pilih **Email**. Untuk **Titik Akhir**, ketik alamat email yang bisa Anda gunakan untuk menerima notifikasi. Pilih **Buat langganan**.

1. Anda akan menerima email konfirmasi dengan baris subjek `AWS Notification - Subscription Confirmation`. Buka email dan ikuti petunjuk untuk menyelesaikan langganan Anda.

Gunakan prosedur berikut untuk menerapkan batasan notifikasi menggunakan topik SNS yang Anda buat menggunakan prosedur sebelumnya.

**Untuk menerapkan batasan notifikasi pada sebuah produk**

1. Buka konsol Service Catalog di [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Pilih portofolio yang berisi produk.

1. Perluas **Batasan** dan pilih **Tambahkan batasan**.

1. Pilih produk dari **Produk** dan atur **Tipe batasan** ke **Notifikasi**. Pilih **Lanjutkan**.

1. Pilih **Pilih topik dari akun Anda** dan pilih topik SNS yang Anda buat dari **Nama topik**.

1. Pilih **Kirim**.

# AWS Service Catalog Tandai Kendala Pembaruan
<a name="constraints-resourceupdate"></a>

**catatan**  
AWS Service Catalog tidak mendukung batasan pembaruan tag untuk produk Terraform Open Source.

Dengan batasan pembaruan tag, AWS Service Catalog administrator dapat mengizinkan atau melarang pengguna akhir memperbarui tag pada sumber daya yang terkait dengan produk yang disediakan. Jika memperbarui tanda diperbolehkan, maka tanda baru yang terkait dengan produk atau portofolio akan diterapkan ke sumber daya yang ditetapkan selama pembaruan produk yang ditetapkan. 

**Cara mengaktifkan pembaruan tanda pada produk**

1. Buka konsol Service Catalog di [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Pilih portofolio yang berisi produk yang ingin Anda perbarui.

1. Pilih tab **Batasan** dan pilih **Tambahkan batasan**.

1. Di bawah **Tipe batasan**, pilih **Pembaruan Tanda**.

1. Pilih produk dari **Produk**, lalu pilih **Lanjutkan**.

1. Pada **halaman Pembaruan Tanda**, pilih **Aktifkan Pembaruan Tanda**.

1. Pilih **Kirim**.

# AWS Service Catalog Stack Set Kendala
<a name="constraints-stackset"></a>

**catatan**  
AWS Service Catalog tidak mendukung batasan set tumpukan untuk produk Terraform Open Source.
AutoTags saat ini tidak didukung dengan CloudFormation StackSets. 

Batasan set tumpukan memungkinkan Anda mengonfigurasi opsi penerapan produk menggunakan. CloudFormation StackSets Anda dapat menentukan beberapa akun dan wilayah untuk peluncuran produk. Pengguna akhir dapat mengelola akun tersebut dan menentukan tempat produk di-deploy dan urutan deployment.

**Untuk menerapkan batasan set tumpukan ke produk**

1. Buka konsol Service Catalog di [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Pilih portofolio dengan produk yang Anda inginkan.

1. Pilih **Batasan** lalu pilih **Buat batasan**.

1. Pada **Produk**, pilih produk. Pada **Tipe batasan**, pilih **Set tumpukan**. 

1. Konfigurasikan akun, wilayah, dan izin untuk batasan set tumpukan Anda.
   + Di **Pengaturan akun**, identifikasi akun tempat Anda ingin membuat produk.
   + Pada **Pengaturan wilayah**, pilih wilayah geografis untuk men-deploy produk dan urutan produk yang Anda inginkan untuk di-deploy pada wilayah tersebut.
   + Di **Izin, pilih Peran** StackSet Administrator IAM untuk mengelola akun target Anda. Jika Anda tidak memilih peran, StackSets gunakan ARN default. [Pelajari lebih lanjut tentang menyiapkan izin set tumpukan.](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html)

1. Pilih **Buat**.

# AWS Service Catalog Kendala Template
<a name="catalogs_constraints_template-constraints"></a>

**catatan**  
AWS Service Catalog tidak mendukung batasan template untuk produk Terraform Open Source atau Terraform Cloud. 

Untuk membatasi opsi yang tersedia untuk pengguna akhir saat mereka meluncurkan produk tersebut, Anda terapkan batasan templat. Terapkan batasan templat guna memastikan bahwa pengguna akhir dapat menggunakan produk tanpa melanggar persyaratan kepatuhan organisasi Anda. Anda menerapkan batasan template untuk produk dalam portofolio. AWS Service Catalog Portofolio harus berisi satu atau beberapa produk sebelum Anda dapat menentukan batasan templat.

Batasan template terdiri dari satu atau lebih aturan yang mempersempit nilai yang diijinkan untuk parameter yang didefinisikan dalam template dasar produk. CloudFormation Parameter dalam templat CloudFormation menentukan kumpulan nilai yang dapat ditentukan pengguna saat membuat sebuah tumpukan. Misalnya, parameter mungkin menentukan berbagai jenis instance yang dapat dipilih pengguna saat meluncurkan tumpukan yang menyertakan EC2 instance.

Jika set nilai parameter dalam templat terlalu banyak untuk target audiens portofolio Anda, Anda dapat menentukan batasan templat guna membatasi nilai yang dapat dipilih pengguna saat meluncurkan produk. Misalnya, jika parameter template menyertakan tipe EC2 instance yang terlalu besar untuk pengguna yang seharusnya hanya menggunakan tipe instance kecil (seperti `t2.micro` atau`t2.small`), maka Anda dapat menambahkan batasan templat untuk membatasi jenis instance yang dapat dipilih pengguna akhir. Untuk informasi selengkapnya tentang parameter CloudFormation templat, lihat [Parameter](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html) di *Panduan CloudFormation Pengguna*.

Batasan templat terikat dalam portofolio. Jika Anda menerapkan batasan templat untuk sebuah produk dalam satu portofolio, lalu jika Anda menyertakan produk ke dalam portofolio lain, batasan tidak akan berlaku untuk produk dalam portofolio kedua.

Jika Anda menerapkan batasan templat untuk produk yang telah dibagi dengan pengguna, batasan langsung aktif untuk semua peluncuran produk berikutnya dan untuk semua versi produk dalam portofolio.

Anda menentukan aturan batasan template dengan menggunakan editor aturan atau dengan menulis aturan sebagai teks JSON di konsol administrator. AWS Service Catalog Untuk informasi selengkapnya tentang aturan, termasuk sintaks dan contoh, lihat [Aturan Batasan Templat](reference-template_constraint_rules.md).

Untuk menguji batasan sebelum melepaskannya ke pengguna, buat portofolio uji yang berisi produk yang sama dan uji batasan dengan portofolio tersebut.

**Untuk menerapkan batasan templat ke suatu produk**

1. Buka konsol Service Catalog di [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/).

1. Pada halaman **Portofolio**, Anda terapkan batasan templat ke portofolio yang berisi produk yang Anda pilih. 

1. Perluas bagian **Batasan** dan pilih **Tambahkan batasan**.

1. Pada jendela **Pilih produk dan tipe**, untuk **Produk**, Anda tetapkan batasan templat ke produk yang ingin Anda pilih. Lalu, untuk **Tipe batasan**, pilih **Templat**. Pilih **Lanjutkan**.

1. Pada halaman **Pembangun batasan templat**, edit aturan batasan dengan menggunakan editor JSON atau antarmuka pembangun aturan.
   + Untuk mengedit kode JSON untuk aturan, pilih tab **Editor Teks Batasan**. Beberapa sampel disediakan pada tab ini untuk membantu Anda memulai.

     Untuk membangun aturan dengan menggunakan antarmuka pembangun aturan, pilih tab **Pembuat Aturan**. Pada tab ini, Anda dapat memilih parameter yang ditentukan dalam templat untuk produknya, dan Anda dapat menentukan nilai yang diizinkan untuk parameter tersebut. Tergantung pada tipe parameter, Anda menentukan nilai yang diizinkan dengan memilih item dalam daftar periksa, dengan menentukan nomor, atau dengan menentukan satu set nilai dalam daftar dipisahkan dengan koma.

     Setelah Anda selesai membangun aturan, pilih **Tambahkan aturan**. Aturan muncul dalam tabel pada tab **Pembuat Aturan**. Untuk meninjau dan mengedit output JSON, pilih tab **Editor Teks Batasan**.

1. Setelah selesai mengedit aturan untuk batasan Anda, pilih **Kirim**. Untuk melihat batasan, buka halaman detail portofolio dan perluas **Batasan**.

# Aturan Batasan Templat
<a name="reference-template_constraint_rules"></a>

Aturan yang menentukan batasan template dalam AWS Service Catalog portofolio menjelaskan kapan pengguna akhir dapat menggunakan template dan nilai mana yang dapat mereka tentukan untuk parameter yang dideklarasikan dalam CloudFormation templat yang digunakan untuk membuat produk yang mereka coba gunakan. Aturan berguna untuk mencegah pengguna akhir menentukan nilai yang salah secara tidak sengaja. Misalnya, Anda dapat menambahkan aturan untuk memverifikasi apakah pengguna akhir menetapkan subnet yang valid di VPC tertentu atau tipe instance yang `m1.small` digunakan untuk lingkungan pengujian. CloudFormation menggunakan aturan untuk memvalidasi nilai parameter sebelum menciptakan sumber daya untuk produk.

Setiap aturan terdiri dari dua sifat: syarat aturan (opsional) dan pernyataan (wajib). Syarat aturan menentukan waktu berlakunya aturan. Pernyataan menjelaskan nilai yang dapat ditentukan pengguna untuk parameter tertentu. Jika Anda tidak menentukan syarat aturan, pernyataan aturan selalu berlaku. Untuk menentukan syarat aturan dan pernyataan, Anda menggunakan *fungsi intrinsik khusus aturan*, yang merupakan fungsi yang hanya dapat digunakan dalam bagian `Rules` dari templat. Anda dapat membuat nest fungsi, tetapi hasil akhir dari syarat aturan atau pernyataan harus berupa benar atau salah.

Sebagai contoh, anggap bahwa Anda telah menyatakan VPC dan subnet parameter pada bagian `Parameters`. Anda dapat membuat aturan yang memvalidasi bahwa subnet yang diberikan berada di VPC tertentu. Jadi ketika pengguna menentukan VPC CloudFormation , mengevaluasi pernyataan untuk memeriksa apakah nilai parameter subnet ada di VPC itu sebelum membuat atau memperbarui tumpukan. Jika nilai parameter tidak valid, CloudFormation segera gagal membuat atau memperbarui tumpukan. Jika pengguna tidak menentukan VPC, CloudFormation tidak memeriksa nilai parameter subnet.

## Sintaksis
<a name="template-constraint-rules-syntax"></a>

Bagian `Rules` dari templat terdiri dari nama kunci `Rules`, diikuti oleh titik dua. Kurung kurawal melampirkan semua deklarasi aturan. Jika Anda mendeklarasikan beberapa aturan, aturan-aturan tersebut dibatasi dengan koma. Untuk setiap aturan, Anda nyatakan nama logis dalam tanda kutip diikuti oleh titik dua dan tanda kurung kurawal yang menyertakan syarat dan pernyataan aturan.

Aturan dapat mencakup properti `RuleCondition` dan harus mencakup properti `Assertions`. Untuk setiap aturan, Anda dapat menentukan hanya satu aturan syarat; Anda dapat menentukan satu atau beberapa pernyataan dalam properti `Assertions`. Anda menentukan sebuah syarat dan pernyataan aturan dengan menggunakan fungsi intrinsik khusus aturan, seperti yang ditampilkan pada templat semu berikut:

```
"Rules":{
   "Rule01":{
      "RuleCondition":{
         "Rule-specific intrinsic function"
      },
      "Assertions":[
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         },
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         }
      ]
   },
   "Rule02":{
      "Assertions":[
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         }
      ]
   }
}
```

Templat semu menunjukkan bagian `Rules` yang berisi dua aturan bernama `Rule01` dan `Rule02`. `Rule01` mencakup syarat aturan dan dua pernyataan. Jika fungsi dalam syarat aturan bernilai true (benar), kedua fungsi dalam setiap pernyataan dievaluasi dan diterapkan. Jika syarat aturan adalah false (salah), aturan tidak berlaku. `Rule02` selalu berlaku karena tidak memiliki syarat aturan, yang berarti satu pernyataan selalu dievaluasi dan diterapkan.

*Untuk informasi tentang fungsi intrinsik khusus aturan guna menentukan kondisi dan pernyataan aturan, lihat Fungsi [AWS Aturan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-rules.html) di Panduan Pengguna.AWS CloudFormation *

## Contoh: Verifikasi Nilai Parameter secara Bersyarat
<a name="template-constraint-rules-example"></a>

Dalam contoh berikut, dua aturan tersebut memeriksa nilai parameter `InstanceType`. Tergantung pada nilai parameter Lingkungan (`test` atau `prod`), pengguna harus menentukan `m1.small` atau `m1.large` untuk parameter `InstanceType`. Parameter `InstanceType` dan `Environment` harus dideklarasikan dalam bagian `Parameters` dari templat yang sama.

```
"Rules" : {
  "testInstanceType" : {
    "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "test"]},
    "Assertions" : [
      {
        "Assert" :  { "Fn::Contains" : [ ["m1.small"], {"Ref" : "InstanceType"} ] },
        "AssertDescription" : "For the test environment, the instance type must be m1.small"
      }
    ]
  },
  "prodInstanceType" : {
    "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "prod"]},
    "Assertions" : [
      {
        "Assert" :  { "Fn::Contains" : [ ["m1.large"], {"Ref" : "InstanceType"} ] },
        "AssertDescription" : "For the prod environment, the instance type must be m1.large"
      }
    ]
  }
}
```