Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Der Befehl jsonrpc wurde erstmals in Bicep Version 0.29.45 eingeführt. Das Params- und Ergebnisformat ist stabil und abwärtskompatibel. Neue Felder können zu Ergebnissen in zukünftigen Versionen hinzugefügt werden, vorhandene Felder werden jedoch nicht entfernt oder umbenannt. Clients sollten unbekannte Felder ignorieren, um mit neueren Versionen der Bicep CLI kompatibel zu bleiben.
Der Befehl jsonrpc führt die Bicep CLI mit einer JSON-RPC Schnittstelle aus. Mithilfe dieser Schnittstelle können Sie programmgesteuert mit strukturierter Ausgabe interagieren. Sie vermeiden auch Verzögerungen beim Kaltstart beim Kompilieren mehrerer Dateien. Dieses Setup unterstützt das Erstellen von Bibliotheken für die programmgesteuerte Interaktion mit Bicep.
Drahtformat
Das Drahtformat entspricht der JSON-RPC 2.0-Spezifikation. Jede Nachricht ist durch Kopfzeilen getrennt, wobei die folgende Struktur verwendet wird, wobei \r Wagenrücklauf- und Zeilenvorschubzeichen dargestellt werden \n :
Content-Length: <length>\r\n\r\n<message>\r\n\r\n
-
<length>ist die Länge der<message>Zeichenfolge, einschließlich des nachgestellten\r\n\r\n. -
<message>ist die unformatierte JSON-Nachricht.
So rufen Sie beispielsweise die bicep/version Methode auf:
Content-Length: 72\r\n\r\n{"jsonrpc": "2.0", "id": 0, "method": "bicep/version", "params": {}}\r\n\r\n
Das entsprechende Ergebnis sieht wie folgt aus:
Content-Length: 64\r\n\r\n{"jsonrpc": "2.0", "id": 0, "result": {"version": "0.38.5"}}\r\n\r\n
Hinweis
Der JSON-RPC-Server ist threadsicher, da Anforderungen jedoch über einen einzelnen Kanal multixiert werden, liegt es in der Verantwortung des Clients, sicherzustellen, dass Anforderungen serialisiert werden. Dies bedeutet, dass jede Anforderung vollständig gesendet werden muss, bevor eine zweite Anforderung gesendet wird, und eine eindeutige id Anforderung muss für jede Anforderung gesendet werden. Der Client muss nicht auf eine Antwort warten, bevor eine neue Anforderung gesendet wird.
Methodik
Die folgenden Methoden sind über die JSON-RPC Schnittstelle verfügbar.
bicep/version
Gibt die Version der Bicep CLI zurück.
Params
Diese Methode verwendet keine Params.
Ergebnis
| Eigentum | Typ | Beschreibung |
|---|---|---|
version |
Schnur | Die semantische Versionszeichenfolge der Bicep CLI (z. B. "0.38.5"). |
Beispiel
Params:
{}
Ergebnis:
{
"version": "0.24.211"
}
bicep/compile
Kompiliert eine angegebene .bicep Datei und gibt die kompilierte ARM-Vorlagen-JSON zurück.
Params
| Eigentum | Typ | Beschreibung |
|---|---|---|
path |
Schnur | Der Dateipfad zur .bicep zu kompilierten Datei. |
Ergebnis
| Eigentum | Typ | Beschreibung |
|---|---|---|
success |
boolean | Gibt an, ob die Kompilierung ohne Fehler abgeschlossen wurde. |
diagnostics |
DiagnosticDefinition[] | Während der Kompilierung produzierte Diagnose. |
contents |
Zeichenfolge | Null | Die kompilierte ARM-Vorlagen-JSON oder null wenn die Kompilierung fehlgeschlagen ist. |
Beispiel
Params:
{
"path": "/path/to/main.bicep"
}
Ergebnis:
{
"success": true,
"diagnostics": [],
"contents": "{\"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\", ...}"
}
bicep/compileParams
Kompiliert eine angegebene .bicepparam Datei. Gibt die kompilierten Parameter JSON und die zugeordnete Vorlage zurück.
Params
| Eigentum | Typ | Beschreibung |
|---|---|---|
path |
Schnur | Der Dateipfad zur .bicepparam zu kompilierten Datei. |
parameterOverrides |
Objekt | Ein Wörterbuch mit Parameternamen zu JSON-Werten, die die in der Parameterdatei angegebenen Standardwerte überschreiben. |
Ergebnis
| Eigentum | Typ | Beschreibung |
|---|---|---|
success |
boolean | Gibt an, ob die Kompilierung ohne Fehler abgeschlossen wurde. |
diagnostics |
DiagnosticDefinition[] | Während der Kompilierung produzierte Diagnose. |
parameters |
Zeichenfolge | Null | Die kompilierten ARM-Parameter JSON oder null wenn die Kompilierung fehlgeschlagen ist. |
template |
Zeichenfolge | Null | Die kompilierte ARM-Vorlage JSON, auf die von der Parameterdatei verwiesen wird oder null nicht aufgelöst werden kann. |
templateSpecId |
Zeichenfolge | Null | Die Azure Ressourcen-ID der Vorlagenspezifikation, wenn die Parameterdatei auf eine verweist; andernfalls null. |
Beispiel
Params:
{
"path": "/path/to/main.bicepparam",
"parameterOverrides": {}
}
Ergebnis:
{
"success": true,
"diagnostics": [],
"parameters": "{\"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#\", ...}",
"template": "{\"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\", ...}",
"templateSpecId": null
}
bicep/getMetadata
Gibt Metadaten zu einer angegebenen .bicep Datei zurück, einschließlich Parametern, Ausgaben, Exporten und Metadatendekortoren.
Params
| Eigentum | Typ | Beschreibung |
|---|---|---|
path |
Schnur | Der Dateipfad zur .bicep zu analysierenden Datei. |
Ergebnis
| Eigentum | Typ | Beschreibung |
|---|---|---|
metadata |
MetadataDefinition[] | Metadateneinträge auf Dateiebene, die mit dem metadata Schlüsselwort deklariert wurden. |
parameters |
SymbolDefinition[] | Parameterdefinitionen, die in der datei Bicep deklariert sind. |
outputs |
SymbolDefinition[] | In der datei Bicep deklarierte Ausgabedefinitionen. |
exports |
ExportDefinition[] | Exportierte Symbole, die mit dem @export() Dekorierer deklariert wurden. |
Beispiel
Params:
{
"path": "/path/to/main.bicep"
}
Ergebnis:
{
"metadata": [
{ "name": "description", "value": "My deployment" }
],
"parameters": [
{
"range": { "start": { "line": 0, "char": 0 }, "end": { "line": 0, "char": 20 } },
"name": "location",
"type": { "range": null, "name": "string" },
"description": "The Azure region for deployment"
}
],
"outputs": [
{
"range": { "start": { "line": 5, "char": 0 }, "end": { "line": 5, "char": 30 } },
"name": "endpoint",
"type": { "range": null, "name": "string" },
"description": null
}
],
"exports": []
}
bicep/getDeploymentGraph
Gibt das Bereitstellungsdiagramm für eine angegebene .bicep Datei zurück, das die Ressourcen und deren Abhängigkeiten beschreibt.
Params
| Eigentum | Typ | Beschreibung |
|---|---|---|
path |
Schnur | Der Dateipfad zur .bicep zu analysierenden Datei. |
Ergebnis
| Eigentum | Typ | Beschreibung |
|---|---|---|
nodes |
Knoten[] | Die Ressourcenknoten im Bereitstellungsdiagramm. |
edges |
Edge[] | Die Abhängigkeitsränder zwischen Ressourcenknoten. |
Beispiel
Params:
{
"path": "/path/to/main.bicep"
}
Ergebnis:
{
"nodes": [
{
"range": { "start": { "line": 2, "char": 0 }, "end": { "line": 8, "char": 1 } },
"name": "storageAccount",
"type": "Microsoft.Storage/storageAccounts",
"isExisting": false,
"relativePath": null
}
],
"edges": [
{ "source": "roleAssignment", "target": "storageAccount" }
]
}
bicep/getFileReferences
Ruft die vollständige Liste der Dateipfade ab, auf die von einer Kompilierung verwiesen wird. Nützlich, um eine Reihe von Dateien zu bestimmen, die auf Änderungen überwacht werden sollen.
Params
| Eigentum | Typ | Beschreibung |
|---|---|---|
path |
Schnur | Der Dateipfad zur .bicep zu analysierenden Datei. |
Ergebnis
| Eigentum | Typ | Beschreibung |
|---|---|---|
filePaths |
string[] | Absolute Pfade aller Dateien, auf die während der Kompilierung verwiesen wird, einschließlich der Eingabedatei selbst, aller Module und Konfigurationsdateien. |
Beispiel
Params:
{
"path": "/path/to/main.bicep"
}
Ergebnis:
{
"filePaths": [
"/path/to/main.bicep",
"/path/to/modules/storage.bicep",
"/path/to/bicepconfig.json"
]
}
bicep/getSnapshot
Hinweis
Diese Methode erfordert Bicep CLI Version 0.36.1 oder höher.
Erstellt eine Bereitstellungsmomentaufnahme für eine bestimmte .bicepparam Datei. Die Momentaufnahme bündelt alle Informationen, die für die Bereitstellung in einem einzigen eigenständigen JSON-Dokument erforderlich sind.
Params
| Eigentum | Typ | Beschreibung |
|---|---|---|
path |
Schnur | Der Dateipfad zur .bicepparam Datei. |
metadata |
SnapshotMetadata | Bereitstellungsmetadaten, die Azure Kontext bereitstellen. Alle Felder sind optional. |
externalInputs |
ExternalInputValue[] | Null | Externe Eingabewerte, die in die Momentaufnahme eingefügt werden sollen. Pass, null falls nicht erforderlich. |
Ergebnis
| Eigentum | Typ | Beschreibung |
|---|---|---|
snapshot |
Schnur | Die eigenständige Bereitstellungsmomentaufnahme als JSON-Zeichenfolge. |
Beispiel
Params:
{
"path": "/path/to/main.bicepparam",
"metadata": {
"tenantId": "00000000-0000-0000-0000-000000000000",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"resourceGroup": "myResourceGroup",
"location": "eastus",
"deploymentName": "myDeployment"
},
"externalInputs": []
}
Ergebnis:
{
"snapshot": "{...}"
}
bicep/format
Hinweis
Diese Methode erfordert Bicep CLI Version 0.37.1 oder höher.
Formatiert eine angegebene .bicep Datei.
Params
| Eigentum | Typ | Beschreibung |
|---|---|---|
path |
Schnur | Der Dateipfad zur .bicep zu formatierenden Datei. |
Ergebnis
| Eigentum | Typ | Beschreibung |
|---|---|---|
contents |
Schnur | Der formatierte Bicep Quellcode. |
Beispiel
Params:
{
"path": "/path/to/file.bicep"
}
Ergebnis:
{
"contents": "..."
}
Typen
Die folgenden Typen werden in Methodeneingaben und -ausgaben verwendet.
Position
Stellt eine nullbasierte Position innerhalb einer Bicep Quelldatei dar.
| Eigentum | Typ | Beschreibung |
|---|---|---|
line |
Integer | Nullbasierte Zeilennummer. |
char |
Integer | Nullbasierter Zeichenabstand innerhalb der Zeile. |
Bereich
Stellt einen Bereich in einer Bicep Quelldatei dar.
| Eigentum | Typ | Beschreibung |
|---|---|---|
start |
Position | Startposition des Bereichs (einschließlich). |
end |
Position | Endposition des Bereichs (exklusiv). |
DiagnosticDefinition
Stellt eine Diagnosenachricht dar, die während der Kompilierung oder Analyse erstellt wurde.
| Eigentum | Typ | Beschreibung |
|---|---|---|
source |
Schnur | Quelle der Diagnose (z. B. "bicep" für compilerdiagnose oder linter-Regelname). |
range |
Bereich | Quellspeicherortbereich, in dem die Diagnose angewendet wird. |
level |
Schnur | Schweregrad: "Error", "Warning", oder "Info". |
code |
Schnur | Diagnosecode, der den Diagnosetyp identifiziert (z. B. "BCP001"). |
message |
Schnur | Lesbare Diagnosenachricht. |
MetadataDefinition
Stellt einen Metadateneintrag auf Dateiebene dar, der mit dem metadata Schlüsselwort deklariert ist.
| Eigentum | Typ | Beschreibung |
|---|---|---|
name |
Schnur | Der Name des Metadatenschlüssels (z. B. "description"). |
value |
Schnur | Der Metadatenwert. |
SymbolDefinition
Stellt einen Parameter oder ein Ausgabesymbol in einer Bicep Datei dar.
| Eigentum | Typ | Beschreibung |
|---|---|---|
range |
Bereich | Quellspeicherort der Symboldeklaration. |
name |
Schnur | Name des Parameters oder der Ausgabe. |
type |
TypeDefinition | Null | Typ des Symbols oder null wenn nicht aufgelöst werden kann. |
description |
Zeichenfolge | Null | Beschreibung vom @description() Dekorateur oder null falls nicht angegeben. |
TypeDefinition
Stellt einen Typverweis für einen Parameter oder eine Ausgabe dar.
| Eigentum | Typ | Beschreibung |
|---|---|---|
range |
Bereich | Null | Quellspeicherort des Typverweises oder null für integrierte Typen. |
name |
Schnur | Der Typname (z. B. , "string", "int", oder "object"ein benutzerdefinierter Typname). |
ExportDefinition
Stellt ein exportiertes Symbol dar, das mit dem @export() Dekorateur deklariert ist.
| Eigentum | Typ | Beschreibung |
|---|---|---|
range |
Bereich | Quellspeicherort der Exportdeklaration. |
name |
Schnur | Name des exportierten Symbols. |
kind |
Schnur | Art des Exports: "Type", , "Variable"oder "Function". |
description |
Zeichenfolge | Null | Beschreibung vom @description() Dekorateur oder null falls nicht angegeben. |
Node
Stellt einen Ressourcenknoten in einem Bereitstellungsdiagramm dar.
| Eigentum | Typ | Beschreibung |
|---|---|---|
range |
Bereich | Quellspeicherort der Ressourcendeklaration. |
name |
Schnur | Symbolischer Name der Ressource in der datei Bicep. |
type |
Schnur | Vollqualifizierter Azure Ressourcentyp (z. B. "Microsoft.Storage/storageAccounts"). |
isExisting |
boolean | Gibt an, ob es sich bei der Ressource um einen existing Verweis und nicht um eine neue Bereitstellung handelt. |
relativePath |
Zeichenfolge | Null | Relativer Pfad, wenn die Ressource in einem Modul definiert ist; andernfalls null. |
Microsoft Edge
Stellt einen gerichteten Abhängigkeitsrand zwischen zwei Ressourcenknoten in einem Bereitstellungsdiagramm dar.
| Eigentum | Typ | Beschreibung |
|---|---|---|
source |
Schnur | Symbolischer Name der abhängigen Ressource. |
target |
Schnur | Symbolischer Name der Ressource, von der abhängig ist. |
SnapshotMetadata
Stellt Azure Bereitstellungskontext für die Momentaufnahmegenerierung bereit. Alle Felder sind optional.
| Eigentum | Typ | Beschreibung |
|---|---|---|
tenantId |
Zeichenfolge | Null | Die Azure Active Directory Mandanten-ID. |
subscriptionId |
Zeichenfolge | Null | Die Azure Abonnement-ID. |
resourceGroup |
Zeichenfolge | Null | Der Name der Zielressourcengruppe. |
location |
Zeichenfolge | Null | Die region Azure für die Bereitstellung. |
deploymentName |
Zeichenfolge | Null | Der Name des Einsatzes. |
ExternalInputValue
Stellt einen externen Eingabewert dar, der in eine Momentaufnahme eingefügt werden soll.
| Eigentum | Typ | Beschreibung |
|---|---|---|
kind |
Schnur | Die Art der externen Eingabe (z. B. der Eingabeanbietertyp). |
config |
any | Null | Optionale JSON-Konfiguration für die externe Eingabe oder null bei Bedarf. |
value |
Beliebig | Der JSON-Wert für die externe Eingabe. |
Verwendung
Mit benannten Rohrtransporten
Verwenden Sie das Argument --pipe, um eine benannte Pipe für die Bicep CLI zur Verbindung zu übergeben. Beachten Sie, dass der Aufrufvorgang die Pipe bereits als Server initiiert haben muss, und Bicep CLI eine Verbindung als Client herstellt.
bicep jsonrpc --pipe <named_pipe>
<named_pipe> ist eine vorhandene benannte Pipe, mit der der JSON-RPC Client verbunden werden soll.
Beispiel
So stellen Sie eine Verbindung mit einer benannten Pipe unter macOS oder Linux her:
bicep jsonrpc --pipe /tmp/bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock
So stellen Sie eine Verbindung mit einer benannten Pipe auf Windows her:
bicep jsonrpc --pipe \\.\pipe\\bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock
Mit TCP-Sockettransport
Verwenden Sie das Argument --socket, um einen TCP-Port für die Bicep CLI zur Verbindung zu übergeben. Beachten Sie, dass der Aufrufvorgang bereits auf Verbindungen am Port lauschen muss.
bicep jsonrpc --socket <tcp_socket>
<tcp_socket> ist die Socketnummer, mit der der JSON-RPC Client eine Verbindung herstellt.
Beispiel
So stellen Sie eine Verbindung mit einem TCP-Socket her:
bicep jsonrpc --socket 12345
Mit Stdin/Stdout-Transport
Verwenden Sie die folgende Syntax, um den JSON-RPC-Server mit Anforderungsdaten zu starten, die über Stdin empfangen wurden, und Antwortdaten, die über stdout gesendet werden.
bicep jsonrpc --stdio
.NET-Clientbibliothek
Die Azure.Bicep. RpcClient NuGet-Paket stellt eine .NET Clientbibliothek für die Bicep JSON-RPC Schnittstelle bereit. Sie kann die angegebene Version der Bicep CLI automatisch herunterladen und den Lebenszyklus verwalten, sodass Sie sie nicht separat installieren müssen.
Beispiel
Im folgenden Beispiel werden Bicep CLI-Version 0.39.26 heruntergeladen, eine Bicep Datei kompiliert und die resultierende ARM-Vorlage gedruckt:
using Bicep.RpcClient;
var factory = new BicepClientFactory();
using var bicep = await factory.Initialize(new() {
BicepVersion = "0.39.26"
});
var version = await bicep.GetVersion();
Console.WriteLine($"Bicep version: {version}");
var tempFile = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.bicep");
File.WriteAllText(tempFile, """
param foo string
output foo string = foo
""");
var result = await bicep.Compile(new(tempFile));
Console.Write(result.Contents);