Debugging von Rego-Richtlinien
Es gibt zwei Möglichkeiten, Ihre Rego-Richtlinien zu debuggen: Verwenden von print-Anweisungen oder Verwenden des VSCode-Debuggers.
Methode 1: Verwenden von Print-Anweisungen
Grundlegende Verwendung
Fügen Sie print()-Anweisungen überall in Ihrer Rego-Richtlinie hinzu:
package infraguard.rules.aliyun.my_rule
import rego.v1
import data.infraguard.helpers
deny contains result if {
print("Starting policy evaluation")
some name, resource in helpers.resources_by_types(rule_meta.resource_types)
print("Checking resource:", name)
print("Resource type:", resource.Type)
not is_compliant(resource)
print("Found violation for resource:", name)
result := {...}
}
Ausgabeformat
Print-Anweisungen geben an stderr mit Dateispeicherort aus:
/path/to/policy.rego:42: Starting policy evaluation
/path/to/policy.rego:45: Checking resource: MyBucket
/path/to/policy.rego:46: Resource type: ALIYUN::OSS::Bucket
/path/to/policy.rego:49: Found violation for resource: MyBucket
Häufige Verwendungsbeispiele
Eingabedaten Inspizieren:
print("Input keys:", object.keys(input))
print("Template version:", input.ROSTemplateFormatVersion)
print("Number of resources:", count(input.Resources))
Ressourceniteration Debuggen:
some name, resource in helpers.resources_by_types(rule_meta.resource_types)
print("Resource:", name)
print("Properties:", object.keys(resource.Properties))
Bedingungen Prüfen:
condition1 := some_check(resource)
print("Condition 1 result:", condition1)
Variablen Inspizieren:
property := helpers.get_property(resource, "SomeProperty", null)
print("Property value:", property)
print("Property type:", type_name(property))
Methode 2: Verwenden des VSCode-Debuggers
VSCode bietet eine leistungsstärkere Debugging-Erfahrung mit Breakpoints, Variableninspektion und schrittweiser Ausführung.
Voraussetzungen
-
OPA Installieren
Laden Sie OPA von der offiziellen Website herunter und installieren Sie es:
-
Regal Installieren
Installieren Sie Regal für verbesserte Rego-Entwicklung:
https://www.openpolicyagent.org/projects/regal#download-regal
-
VSCode OPA-Erweiterung Installieren
Installieren Sie die offizielle OPA-Erweiterung aus dem VSCode-Marketplace:
https://marketplace.visualstudio.com/items?itemName=tsandall.opa
Einrichtungsschritte
-
Testeingabe Vorbereiten
Erstellen Sie eine Datei namens
input.jsonin Ihrem Richtlinienverzeichnis mit Ihren Testdaten:{
"ROSTemplateFormatVersion": "2015-09-01",
"Resources": {
"MyBucket": {
"Type": "ALIYUN::OSS::Bucket",
"Properties": {
"BucketName": "test-bucket",
"AccessControl": "private"
}
}
}
} -
Breakpoints Setzen
Öffnen Sie Ihre
.rego-Richtliniendatei in VSCode und klicken Sie auf den linken Rand, um Breakpoints dort zu setzen, wo Sie die Ausführung anhalten möchten. -
Debugging Starten
- Drücken Sie
F5oder gehen Sie zu Ausführen → Debugging Starten - Der Debugger hält an Ihren Breakpoints an
- Sie können Variablen inspizieren, schrittweise durch den Code gehen und Ausdrücke auswerten
- Drücken Sie
Eine Methode Wählen
- Print-Anweisungen: Schnell und einfach, funktioniert in jeder Umgebung, nützlich für Produktions-Debugging
- VSCode-Debugger: Leistungsstärker, interaktives Debugging mit vollständiger Variableninspektion, besser für Entwicklung
Sie können beide Methoden zusammen verwenden: Verwenden Sie print-Anweisungen für schnelle Überprüfungen und den Debugger für tiefgreifende Untersuchungen.