Cloud Config menggunakan aturan kondisi kustom sebagai salah satu cara untuk menerapkan dan mengimplementasikan aturan. Aturan kondisi kustom terdiri dari beberapa elemen dasar seperti Resource, Condition, dan DryRun.
Condition merupakan elemen utama dari aturan kondisi kustom. Condition terdiri dari klausa kondisi. Beberapa klausa dapat digabungkan menggunakan operator logika AND dan OR untuk membentuk struktur logika yang lebih kompleks. Sekelompok klausa yang digabungkan oleh operator logika disebut grup kondisi. Klausa adalah inti dari grup kondisi dan terdiri dari elemen featurePath, operator, dan desired.
Elemen | Diperlukan | Deskripsi |
Ya | Karakteristik sumber daya. Properti suatu sumber daya atau sumber karakteristik terkait dari suatu sumber daya dijelaskan menggunakan JSONPath. Sebagai contoh, properti status sumber daya adalah Status, dan deskripsi karakteristiknya adalah | |
Ya | Sumber karakteristik sumber daya. | |
Ya | Operator kondisi. | |
Tidak | Operator unary. Elemen desired dapat dibiarkan kosong. Contoh operator adalah IsStringEmpty. |
featurePath
Kebijakan mendukung format JSONPath. Saat membuat atau memperbarui kebijakan, Cloud Config memeriksa apakah kebijakan tersebut memenuhi standar sintaksis JSONPath. Anda juga dapat menggunakan validator dan editor JSONPath pihak ketiga untuk memeriksa apakah kebijakan tersebut sesuai dengan standar sintaksis JSONPath. Untuk informasi lebih lanjut tentang standar sintaksis JSONPath, lihat JSONPath.
JSONPath | Deskripsi |
$ | Objek atau elemen root. |
@ | Objek atau elemen saat ini. |
. atau [] | Operator anak. |
.. | Penurunan rekursif. JSONPath meminjam sintaks ini dari E4X. |
* | Wildcard. Semua objek atau elemen tanpa memandang nama mereka. |
[] | Operator subscript. XPath menggunakannya untuk mengulangi koleksi elemen dan untuk predikat. Dalam Javascript dan JSON, ini adalah operator array asli. |
[,] | Operator Union dalam XPath menghasilkan kombinasi set node. JSONPath memungkinkan nama alternatif atau indeks array sebagai set. |
[start:end:step] | Operator slice array yang dipinjam dari ES4. |
?() | Menerapkan ekspresi filter (skrip). |
() | Ekspresi skrip, menggunakan mesin skrip dasar. |
Contoh 1: Karakteristik status ACS::ECS::Instance adalah
$.Status, tipe ditentukan sebagai String, dan operator tipe String direkomendasikan.Contoh 2: Karakteristik tag ACS::ECS::Instance adalah
$.Tags[*].TagKey, dan hasilnya adalah Array.Contoh 3: Karakteristik konfigurasi izin ACS::ECS::SecurityGroup adalah
$.Permissions.Permission[?(@.Policy=='Accept')][?(@.IpProtocol=='TCP' || @.IpProtocol=='UDP')][?(@.SourceCidrIp=='0.0.0.0/0')].PortRange. Ini menunjukkan bahwa sistem mengizinkan entri di mana protokolnya adalah TCP atau UDP, alamat IP sumber adalah alamat IP apa pun dari port, dan rentang port dapat dikonfigurasi apakah termasuk 22, 3389, dan port lainnya.{ "featureSource": "CONFIGURATION", "desired": "21/21,22/22,23/23,3389/3389,445/445,-1/-1", "children": [], "operator": "ExcludeAll", "featurePath": "$.Permissions.Permission[?(@.Policy=='Accept')][?(@.IpProtocol=='TCP' || @.IpProtocol=='UDP')][?(@.SourceCidrIp=='0.0.0.0/0')].PortRange" }
featureSource
Sumber karakteristik sumber daya.
CONFIGURATION (nilai default): konfigurasi properti sumber daya. Jika elemen featureSource dibiarkan kosong, sistem tetap melakukan pemrosesan berdasarkan properti sumber daya.
RESOURCE_RELATIONSHIP_${targetResourceType}: hubungan sumber daya, sepertiRESOURCE_RELATIONSHIP_ACS::ECS::DISK.
operator
Operator mencakup operator logika dan operator perhitungan. Operator logika mencakup operator logika AND dan operator logika OR. Tabel berikut menjelaskan operator perhitungan.
Operator | Deskripsi |
SizeLess | Jumlah elemen array kurang dari. |
DistinctSizeGreater | Jumlah elemen setelah deduplikasi lebih besar dari. |
AllGreaterOrEquals | Semua elemen lebih besar dari atau sama dengan. |
InAllItem | Semua elemen berisi. |
AllLessOrEquals | Semua elemen lebih kecil dari atau sama dengan. |
AllGreater | Semua elemen lebih besar dari. |
SizeGreater | Jumlah elemen array lebih besar dari. |
NotContainsIP | Array tidak berisi alamat IP tertentu. |
ContainsIP | Array berisi alamat IP tertentu. |
ContainsAny | Array tidak berisi objek apa pun di array tujuan. |
NotContainsNull | Array tidak berisi elemen kosong. |
NotContainsInternetCidr | Tidak berisi blok CIDR publik. |
IsNotEmpty | Tidak kosong. |
AllIn | Semua ada. |
IsEmpty | Kosong. |
ExcludeAll | Kecualikan semua. |
ContainsAll | Memuat semua. |
NotIn | Tidak ada. |
In | Ada. |
NotContains | Tidak memuat. |
Contains | Memuat. |
NotBase64Contains | Tidak memuat. |
Base64Contains | Memuat. |
NotBoolEquals | Tidak sama dengan. |
BoolEquals | Sama dengan. |
NotEquals | Tidak sama dengan. |
Equals | Sama dengan. |
LessOrEquals | Kurang dari atau sama dengan. |
Less | Kurang dari. |
Greater | Lebih besar dari. |
GreaterOrEquals | Lebih besar dari atau sama dengan. |
StringItemSizeGreater | Jumlah elemen pembagian string melebihi nilai yang ditentukan. |
StringMatch | Pencocokan ekspresi reguler. |
NotStringTrimIn | Nilai valid tidak ada. |
StringTrimIn | Nilai valid ada. |
IsNotStringEmpty | Tidak kosong. |
IsStringEmpty | Kosong. |
NotStringContains | Tidak memuat. |
StringContains | Memuat. |
NotStringIn | Tidak ada. |
StringIn | Ada. |
NotStringEquals | Tidak sama dengan. |
StringEquals | Sama dengan. |
desired
Elemen desired dapat dibiarkan kosong. Contoh operator adalah IsStringEmpty.