Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga / Notatka
Polecenie jsonrpc zostało po raz pierwszy wprowadzone w Bicep w wersji 0.29.45. Parametry i format wyniku są stabilne i zgodne z poprzednimi wersjami. Nowe pola mogą zostać dodane do wyników w przyszłych wersjach, ale istniejące pola nie zostaną usunięte ani zmienione. Klienci powinni ignorować nieznane pola, aby zachować zgodność z nowszymi wersjami interfejsu wiersza polecenia Bicep.
Polecenie jsonrpc uruchamia interfejs wiersza polecenia Bicep z interfejsem JSON-RPC. Za pomocą tego interfejsu można programowo wchodzić w interakcje ze strukturą danych wyjściowych. Należy również unikać opóźnień zimnego startu podczas kompilowania wielu plików. Ta konfiguracja obsługuje kompilowanie bibliotek do interakcji z Bicep programowo.
Format przewodu
Format przewodu jest zgodny ze specyfikacjąJSON-RPC 2.0. Każdy komunikat jest rozdzielany nagłówkami, używając następującej struktury, gdzie \r i \n reprezentują znaki powrotu karetki i wiersza:
Content-Length: <length>\r\n\r\n<message>\r\n\r\n
-
<length>to długość<message>ciągu, w tym ciąg końcowy\r\n\r\n. -
<message>to nieprzetworzona wiadomość JSON.
Aby na przykład wywołać metodę bicep/version :
Content-Length: 72\r\n\r\n{"jsonrpc": "2.0", "id": 0, "method": "bicep/version", "params": {}}\r\n\r\n
Odpowiedni wynik wygląda następująco:
Content-Length: 64\r\n\r\n{"jsonrpc": "2.0", "id": 0, "result": {"version": "0.38.5"}}\r\n\r\n
Uwaga / Notatka
Serwer JSON-RPC jest bezpieczny wątkowo, ale ponieważ żądania są multipleksowane przez jeden kanał, obowiązkiem klienta jest zapewnienie serializacji żądań. Oznacza to, że każde żądanie musi być wysyłane w całości przed wysłaniem drugiego żądania, a dla każdego żądania należy wysłać unikatowe id żądanie. Klient nie musi czekać na odpowiedź przed wysłaniem nowego żądania.
Methods
Poniższe metody są dostępne za pośrednictwem interfejsu JSON-RPC.
bicep/wersja
Zwraca wersję interfejsu wiersza polecenia Bicep.
Params
Ta metoda nie przyjmuje parametrów.
Wynik
| Majątek | Typ | Opis |
|---|---|---|
version |
ciąg | Ciąg wersji semantycznej interfejsu wiersza polecenia Bicep (np. "0.38.5"). |
Przykład
Params:
{}
Wynik:
{
"version": "0.24.211"
}
bicep/compile
Kompiluje określony .bicep plik i zwraca skompilowany kod JSON szablonu usługi ARM.
Params
| Majątek | Typ | Opis |
|---|---|---|
path |
ciąg | Ścieżka pliku do .bicep pliku do skompilowania. |
Wynik
| Majątek | Typ | Opis |
|---|---|---|
success |
typ logiczny (boolowski) | Czy kompilacja została ukończona bez błędów. |
diagnostics |
DiagnosticDefinition[] | Diagnostyka utworzona podczas kompilacji. |
contents |
ciąg | Null | Skompilowany kod JSON szablonu usługi ARM lub null kompilacja nie powiodła się. |
Przykład
Params:
{
"path": "/path/to/main.bicep"
}
Wynik:
{
"success": true,
"diagnostics": [],
"contents": "{\"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\", ...}"
}
bicep/compileParams
Kompiluje określony .bicepparam plik. Zwraca skompilowane parametry JSON i skojarzony szablon.
Params
| Majątek | Typ | Opis |
|---|---|---|
path |
ciąg | Ścieżka pliku do .bicepparam pliku do skompilowania. |
parameterOverrides |
obiekt | Słownik nazw parametrów do wartości JSON, które zastępują wartości domyślne określone w pliku parametrów. |
Wynik
| Majątek | Typ | Opis |
|---|---|---|
success |
typ logiczny (boolowski) | Czy kompilacja została ukończona bez błędów. |
diagnostics |
DiagnosticDefinition[] | Diagnostyka utworzona podczas kompilacji. |
parameters |
ciąg | Null | Skompilowany kod JSON parametrów usługi ARM lub null kompilacja nie powiodła się. |
template |
ciąg | Null | Skompilowany kod JSON szablonu usługi ARM, do których odwołuje się plik parametrów, lub null jeśli nie można go rozpoznać. |
templateSpecId |
ciąg | Null | Identyfikator zasobu Azure specyfikacji szablonu, jeśli plik parametrów odwołuje się do jednego; w przeciwnym razie null. |
Przykład
Params:
{
"path": "/path/to/main.bicepparam",
"parameterOverrides": {}
}
Wynik:
{
"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
Zwraca metadane dotyczące określonego .bicep pliku, w tym parametry, dane wyjściowe, eksporty i dekoratory metadanych.
Params
| Majątek | Typ | Opis |
|---|---|---|
path |
ciąg | Ścieżka pliku do .bicep pliku do analizy. |
Wynik
| Majątek | Typ | Opis |
|---|---|---|
metadata |
MetadataDefinition[] | Wpisy metadanych na poziomie pliku zadeklarowane za pomocą słowa kluczowego metadata . |
parameters |
SymbolDefinition[] | Definicje parametrów zadeklarowane w pliku Bicep. |
outputs |
SymbolDefinition[] | Definicje danych wyjściowych zadeklarowane w pliku Bicep. |
exports |
ExportDefinition[] | Wyeksportowane symbole zadeklarowane za pomocą dekoratora @export() . |
Przykład
Params:
{
"path": "/path/to/main.bicep"
}
Wynik:
{
"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
Zwraca wykres wdrożenia dla określonego .bicep pliku opisujący zasoby i ich zależności.
Params
| Majątek | Typ | Opis |
|---|---|---|
path |
ciąg | Ścieżka pliku do .bicep pliku do analizy. |
Wynik
| Majątek | Typ | Opis |
|---|---|---|
nodes |
Węzeł[] | Węzły zasobów na grafie wdrażania. |
edges |
Edge[] | Krawędzie zależności między węzłami zasobów. |
Przykład
Params:
{
"path": "/path/to/main.bicep"
}
Wynik:
{
"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
Pobiera pełną listę ścieżek plików, do których odwołuje się kompilacja. Przydatne do określenia zestawu plików do obserwowanego pod kątem zmian.
Params
| Majątek | Typ | Opis |
|---|---|---|
path |
ciąg | Ścieżka pliku do .bicep pliku do analizy. |
Wynik
| Majątek | Typ | Opis |
|---|---|---|
filePaths |
string[] | Ścieżki bezwzględne wszystkich plików, do których odwołuje się podczas kompilacji, w tym sam plik wejściowy, wszystkie moduły i pliki konfiguracji. |
Przykład
Params:
{
"path": "/path/to/main.bicep"
}
Wynik:
{
"filePaths": [
"/path/to/main.bicep",
"/path/to/modules/storage.bicep",
"/path/to/bicepconfig.json"
]
}
bicep/getSnapshot
Uwaga / Notatka
Ta metoda wymaga interfejsu wiersza polecenia Bicep w wersji 0.36.1 lub nowszej.
Tworzy migawkę wdrożenia dla danego .bicepparam pliku. Migawka zawiera wszystkie informacje potrzebne do wdrożenia w jednym samodzielnym dokumencie JSON.
Params
| Majątek | Typ | Opis |
|---|---|---|
path |
ciąg | Ścieżka pliku do .bicepparam pliku. |
metadata |
SnapshotMetadata | Metadane wdrożenia zapewniające kontekst Azure. Wszystkie pola są opcjonalne. |
externalInputs |
ExternalInputValue[] | Null | Zewnętrzne wartości wejściowe do wstrzykiwania do migawki. Przekaż, null jeśli nie jest to konieczne. |
Wynik
| Majątek | Typ | Opis |
|---|---|---|
snapshot |
ciąg | Samodzielna migawka wdrożenia jako ciąg JSON. |
Przykład
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": []
}
Wynik:
{
"snapshot": "{...}"
}
bicep/format
Uwaga / Notatka
Ta metoda wymaga interfejsu wiersza polecenia Bicep w wersji 0.37.1 lub nowszej.
Formatuje określony .bicep plik.
Params
| Majątek | Typ | Opis |
|---|---|---|
path |
ciąg | Ścieżka pliku do .bicep pliku do formatu. |
Wynik
| Majątek | Typ | Opis |
|---|---|---|
contents |
ciąg | Sformatowany kod źródłowy Bicep. |
Przykład
Params:
{
"path": "/path/to/file.bicep"
}
Wynik:
{
"contents": "..."
}
Types
Następujące typy są używane w danych wejściowych i wyjściowych metody.
Stanowisko
Reprezentuje pozycję opartą na zerze w pliku źródłowym Bicep.
| Majątek | Typ | Opis |
|---|---|---|
line |
liczba całkowita | Numer wiersza na podstawie zera. |
char |
liczba całkowita | Przesunięcie znaku na podstawie zera w wierszu. |
Zakres
Reprezentuje zakres w pliku źródłowym Bicep.
| Majątek | Typ | Opis |
|---|---|---|
start |
położenie | Pozycja początkowa zakresu (włącznie). |
end |
położenie | Pozycja końcowa zakresu (wyłączna). |
DiagnostykaDefinition
Reprezentuje komunikat diagnostyczny generowany podczas kompilacji lub analizy.
| Majątek | Typ | Opis |
|---|---|---|
source |
ciąg | Źródło diagnostyki (np. "bicep" dla diagnostyki kompilatora lub nazwa reguły linter). |
range |
Range | Zakres lokalizacji źródłowej, w którym ma zastosowanie diagnostyka. |
level |
ciąg | Poziom ważności: "Error", lub "Warning""Info". |
code |
ciąg | Kod diagnostyczny identyfikujący typ diagnostyki (np. "BCP001"). |
message |
ciąg | Czytelny dla człowieka komunikat diagnostyczny. |
MetadataDefinition
Reprezentuje wpis metadanych na poziomie pliku zadeklarowany za pomocą słowa kluczowego metadata .
| Majątek | Typ | Opis |
|---|---|---|
name |
ciąg | Nazwa klucza metadanych (np. "description"). |
value |
ciąg | Wartość metadanych. |
SymbolDefinition
Reprezentuje parametr lub symbol wyjściowy w pliku Bicep.
| Majątek | Typ | Opis |
|---|---|---|
range |
Range | Lokalizacja źródłowa deklaracji symbolu. |
name |
ciąg | Nazwa parametru lub danych wyjściowych. |
type |
TypeDefinition | Null | Typ symbolu lub null , jeśli nie można go rozwiązać. |
description |
ciąg | Null | Opis z dekoratora @description() lub null , jeśli nie został określony. |
Definicja typu
Reprezentuje odwołanie do typu dla parametru lub danych wyjściowych.
| Majątek | Typ | Opis |
|---|---|---|
range |
Zakres | Null | Lokalizacja źródłowa odwołania do typu lub null dla typów wbudowanych. |
name |
ciąg | Nazwa typu (np. "string", "int", "object"lub nazwa typu zdefiniowanego przez użytkownika). |
ExportDefinition (Definicje eksportu)
Reprezentuje wyeksportowany symbol zadeklarowany za pomocą dekoratora @export() .
| Majątek | Typ | Opis |
|---|---|---|
range |
Range | Lokalizacja źródłowa deklaracji eksportu. |
name |
ciąg | Nazwa wyeksportowanego symbolu. |
kind |
ciąg | Rodzaj eksportu: "Type", lub "Variable""Function". |
description |
ciąg | Null | Opis z dekoratora @description() lub null , jeśli nie został określony. |
Node
Reprezentuje węzeł zasobu na grafie wdrożenia.
| Majątek | Typ | Opis |
|---|---|---|
range |
Range | Lokalizacja źródłowa deklaracji zasobu. |
name |
ciąg | Symboliczna nazwa zasobu w pliku Bicep. |
type |
ciąg | W pełni kwalifikowany typ zasobu Azure (np. "Microsoft.Storage/storageAccounts"). |
isExisting |
typ logiczny (boolowski) | Czy zasób jest odwołaniem existing , a nie nowym wdrożeniem. |
relativePath |
ciąg | Null | Ścieżka względna, jeśli zasób jest zdefiniowany w module; w przeciwnym razie null. |
Edge
Reprezentuje skierowaną krawędź zależności między dwoma węzłami zasobów na grafie wdrożenia.
| Majątek | Typ | Opis |
|---|---|---|
source |
ciąg | Symboliczna nazwa zasobu zależnego. |
target |
ciąg | Symboliczna nazwa zasobu, od których zależy. |
SnapshotMetadata
Udostępnia Azure kontekst wdrażania na potrzeby generowania migawek. Wszystkie pola są opcjonalne.
| Majątek | Typ | Opis |
|---|---|---|
tenantId |
ciąg | Null | Identyfikator dzierżawy Azure Active Directory. |
subscriptionId |
ciąg | Null | Identyfikator subskrypcji Azure. |
resourceGroup |
ciąg | Null | Nazwa docelowej grupy zasobów. |
location |
ciąg | Null | Region Azure wdrożenia. |
deploymentName |
ciąg | Null | Nazwa wdrożenia. |
ExternalInputValue
Reprezentuje zewnętrzną wartość wejściową do wstrzykiwania do migawki.
| Majątek | Typ | Opis |
|---|---|---|
kind |
ciąg | Rodzaj danych wejściowych zewnętrznych (np. typ dostawcy danych wejściowych). |
config |
dowolny | Null | Opcjonalna konfiguracja JSON dla danych wejściowych zewnętrznych lub null w razie potrzeby. |
value |
any | Wartość JSON dla danych wejściowych zewnętrznych. |
Użycie
Z nazwanym transportem rur
Użyj argumentu --pipe, aby przekazać nazwany potok interfejsu wiersza polecenia Bicep do nawiązania połączenia. Należy pamiętać, że proces wywołujący musi już zainicjować potok jako serwer, a Bicep interfejs wiersza polecenia połączy się jako klient.
bicep jsonrpc --pipe <named_pipe>
<named_pipe> to istniejący nazwany potok do łączenia klienta JSON-RPC z.
Przykład
Aby nawiązać połączenie z nazwanym potokiem w systemie macOS lub Linux:
bicep jsonrpc --pipe /tmp/bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock
Aby nawiązać połączenie z nazwanym potokiem na Windows:
bicep jsonrpc --pipe \\.\pipe\\bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock
Z transportem gniazda TCP
Użyj argumentu --socket, aby przekazać port TCP dla interfejsu wiersza polecenia Bicep do nawiązania połączenia. Należy pamiętać, że proces wywołujący musi już nasłuchiwać połączeń na porcie.
bicep jsonrpc --socket <tcp_socket>
<tcp_socket> to numer gniazda, z którym łączy się klient JSON-RPC.
Przykład
Aby nawiązać połączenie z gniazdem TCP:
bicep jsonrpc --socket 12345
Z transportem stdin/stdout
Użyj następującej składni, aby uruchomić serwer JSON-RPC z danymi żądania odebranymi za pośrednictwem narzędzia stdin i danymi odpowiedzi wysyłanymi za pośrednictwem stdout.
bicep jsonrpc --stdio
biblioteka klienta .NET
Azure.Bicep. RpcClient pakiet NuGet udostępnia bibliotekę klienta .NET dla interfejsu Bicep JSON-RPC. Może automatycznie pobrać określoną wersję interfejsu wiersza polecenia Bicep i zarządzać jej cyklem życia, aby nie trzeba było go instalować oddzielnie.
Przykład
Poniższy przykład pobiera Bicep wersję interfejsu wiersza polecenia 0.39.26, kompiluje plik Bicep i drukuje wynikowy szablon usługi ARM:
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);