

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

# 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"
      }
    ]
  }
}
```