Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
O comando jsonrpc foi introduzido pela primeira vez na versão Bicep 0.29.45. Os parâmetros e o formato do resultado são estáveis e retrocompatíveis. Novos campos poderão ser adicionados aos resultados em versões futuras, mas os campos existentes não serão removidos nem renomeados. Os clientes devem ignorar campos desconhecidos para se manterem compatíveis com as versões mais recentes da CLI do Bicep.
O comando jsonrpc executa a CLI Bicep com uma interface JSON-RPC. Ao usar esta interface, pode interagir programaticamente com a saída estruturada. Também evita atrasos no arranque a frio ao compilar vários ficheiros. Esta configuração suporta a construção de bibliotecas para interagir programáticamente com o Bicep.
Formato de fios
O formato do fio segue a especificaçãoJSON-RPC 2.0. Cada mensagem é delimitada por cabeçalhos, usando a seguinte estrutura, onde \r e \n representam caracteres de retorno de carro e de avanço de linha:
Content-Length: <length>\r\n\r\n<message>\r\n\r\n
-
<length>é o<message>comprimento da cadeia de caracteres, incluindo o trailing\r\n\r\n. -
<message>é a mensagem JSON bruta.
Por exemplo, chamar o bicep/version método:
Content-Length: 72\r\n\r\n{"jsonrpc": "2.0", "id": 0, "method": "bicep/version", "params": {}}\r\n\r\n
O resultado correspondente é o seguinte:
Content-Length: 64\r\n\r\n{"jsonrpc": "2.0", "id": 0, "result": {"version": "0.38.5"}}\r\n\r\n
Observação
O servidor JSON-RPC é seguro para threads, mas como os pedidos são multiplexados num único canal, é responsabilidade do cliente garantir que os pedidos são serializados. Isto significa que cada pedido deve ser enviado na íntegra antes de enviar um segundo pedido, e um pedido id único deve ser enviado para cada pedido. O cliente não precisa de esperar por uma resposta antes de enviar um novo pedido.
Methods
Os seguintes métodos estão disponíveis através da interface JSON-RPC.
bíceps/versão
Devolve a versão do Bicep CLI.
Params
Este método não aceita parámetros.
Result
| Propriedade | Tipo | Descrição |
|---|---|---|
version |
cadeia (de caracteres) | A cadeia semântica da Bicep CLI (por exemplo, "0.38.5"). |
Exemplo
Parámetros:
{}
Resultado:
{
"version": "0.24.211"
}
bíceps/compilar
Compila um ficheiro especificado .bicep e devolve o template ARM compilado JSON.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia (de caracteres) | O caminho do ficheiro para o .bicep ficheiro a compilar. |
Result
| Propriedade | Tipo | Descrição |
|---|---|---|
success |
Booleano | Se a compilação foi concluída sem erros. |
diagnostics |
DiagnósticoDefinição[] | Diagnósticos produzidos durante a compilação. |
contents |
string | null | O modelo ARM compilado JSON, ou null se a compilação falhasse. |
Exemplo
Parámetros:
{
"path": "/path/to/main.bicep"
}
Resultado:
{
"success": true,
"diagnostics": [],
"contents": "{\"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\", ...}"
}
bicep/compileParams
Compila um ficheiro especificado .bicepparam . Devolve os parâmetros compilados JSON e o template associado.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia (de caracteres) | O caminho do ficheiro para o .bicepparam ficheiro a compilar. |
parameterOverrides |
objecto | Um dicionário de nomes de parâmetros para valores JSON que sobrepõem os valores definidos especificados no ficheiro de parâmetros. |
Result
| Propriedade | Tipo | Descrição |
|---|---|---|
success |
Booleano | Se a compilação foi concluída sem erros. |
diagnostics |
DiagnósticoDefinição[] | Diagnósticos produzidos durante a compilação. |
parameters |
string | null | Os parâmetros ARM compilados JSON, ou null se a compilação falhasse. |
template |
string | null | O template ARM compilado em JSON referenciado pelo ficheiro de parâmetros, ou null se não fosse resolvível. |
templateSpecId |
string | null | O ID de recurso Azure da especificação do template se o ficheiro de parâmetros referir um; caso contrário, null. |
Exemplo
Parámetros:
{
"path": "/path/to/main.bicepparam",
"parameterOverrides": {}
}
Resultado:
{
"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
}
bícep/getMetadata
Devolve metadados sobre um ficheiro especificado .bicep , incluindo parâmetros, saídas, exportações e decoradores de metadados.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia (de caracteres) | O caminho do ficheiro para o .bicep ficheiro a analisar. |
Result
| Propriedade | Tipo | Descrição |
|---|---|---|
metadata |
MetadataDefinição[] | Entradas de metadados ao nível do ficheiro declaradas com a metadata palavra-chave. |
parameters |
Definição de Símbolo[] | Definições de parâmetros declaradas no ficheiro Bicep. |
outputs |
Definição de Símbolo[] | Definições de saída declaradas no ficheiro Bicep. |
exports |
ExportDefinition[] | Símbolos exportados declarados com o @export() decorador. |
Exemplo
Parámetros:
{
"path": "/path/to/main.bicep"
}
Resultado:
{
"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
Devolve o gráfico de implementação de um ficheiro especificado .bicep , descrevendo os recursos e as suas dependências.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia (de caracteres) | O caminho do ficheiro para o .bicep ficheiro a analisar. |
Result
| Propriedade | Tipo | Descrição |
|---|---|---|
nodes |
Nó[] | Os nós de recursos no grafo de implementação. |
edges |
Borda[] | As arestas de dependência entre nós de recurso. |
Exemplo
Parámetros:
{
"path": "/path/to/main.bicep"
}
Resultado:
{
"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" }
]
}
bíceps/getFileReferences
Obtém a lista completa de caminhos de ficheiro referenciados por uma compilação. Útil para determinar um conjunto de ficheiros a observar para alterações.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia (de caracteres) | O caminho do ficheiro para o .bicep ficheiro a analisar. |
Result
| Propriedade | Tipo | Descrição |
|---|---|---|
filePaths |
string[] | Caminhos absolutos de todos os ficheiros referenciados durante a compilação, incluindo o próprio ficheiro de entrada, quaisquer módulos e ficheiros de configuração. |
Exemplo
Parámetros:
{
"path": "/path/to/main.bicep"
}
Resultado:
{
"filePaths": [
"/path/to/main.bicep",
"/path/to/modules/storage.bicep",
"/path/to/bicepconfig.json"
]
}
bíceps/getSnapshot
Observação
Este método requer a versão 0.36.1 do Bicep CLI ou superior.
Cria um snapshot de implementação para um determinado .bicepparam ficheiro. O snapshot agrupa toda a informação necessária para a implementação num único documento JSON autónomo.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia (de caracteres) | O caminho do ficheiro para o .bicepparam ficheiro. |
metadata |
SnapshotMetadados | Metadados de implementação que fornecem contexto Azure. Todos os campos são opcionais. |
externalInputs |
ValorEntradaExterna[] | null | Valores de entrada externos para injetar no snapshot. Passe null se não for necessário. |
Result
| Propriedade | Tipo | Descrição |
|---|---|---|
snapshot |
cadeia (de caracteres) | O snapshot de implementação autónomo como uma string JSON. |
Exemplo
Parámetros:
{
"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": []
}
Resultado:
{
"snapshot": "{...}"
}
bíceps/formato
Observação
Este método requer a versão 0.37.1 do Bicep CLI ou superior.
Formata um ficheiro especificado .bicep .
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia (de caracteres) | O caminho do ficheiro para o .bicep ficheiro a formatar. |
Result
| Propriedade | Tipo | Descrição |
|---|---|---|
contents |
cadeia (de caracteres) | O código-fonte formatado do Bicep. |
Exemplo
Parámetros:
{
"path": "/path/to/file.bicep"
}
Resultado:
{
"contents": "..."
}
Tipos
Os seguintes tipos são usados nas entradas e saídas dos métodos.
Position
Representa uma posição baseada em zero dentro de um ficheiro-fonte Bicep.
| Propriedade | Tipo | Descrição |
|---|---|---|
line |
número inteiro | Número de linha com base zero. |
char |
número inteiro | Deslocamento de caracteres base zero dentro da linha. |
Intervalo
Representa um intervalo dentro de um ficheiro-fonte Bicep.
| Propriedade | Tipo | Descrição |
|---|---|---|
start |
Posição | Posição inicial do campo de tiro (inclusive). |
end |
Posição | Posição final do intervalo (exclusivo). |
Definição de Diagnóstico
Representa uma mensagem de diagnóstico produzida durante a compilação ou análise.
| Propriedade | Tipo | Descrição |
|---|---|---|
source |
cadeia (de caracteres) | Fonte do diagnóstico (por exemplo, "bicep" para diagnósticos do compilador, ou um nome de regra linter). |
range |
Intervalo | Intervalo de localização da fonte onde o diagnóstico se aplica. |
level |
cadeia (de caracteres) | Nível de gravidade: "Error", "Warning", ou "Info". |
code |
cadeia (de caracteres) | Código de diagnóstico que identifica o tipo de diagnóstico (por exemplo, "BCP001"). |
message |
cadeia (de caracteres) | Mensagem diagnóstica legível para humanos. |
MetadadosDefinição
Representa uma entrada de metadados ao nível do ficheiro declarada com a metadata palavra-chave.
| Propriedade | Tipo | Descrição |
|---|---|---|
name |
cadeia (de caracteres) | O nome da chave de metadados (por exemplo, "description"). |
value |
cadeia (de caracteres) | O valor dos metadados. |
SymbolDefinition
Representa um parâmetro ou símbolo de saída num ficheiro Bicep.
| Propriedade | Tipo | Descrição |
|---|---|---|
range |
Intervalo | Localização de origem da declaração do símbolo. |
name |
cadeia (de caracteres) | Nome do parâmetro ou saída. |
type |
Definição de Tipo | null | Tipo do símbolo, ou null se não resolvível. |
description |
string | null | Descrição do @description() decorador, ou null se não especificada. |
Definição de Tipo
Representa uma referência de tipo para um parâmetro ou saída.
| Propriedade | Tipo | Descrição |
|---|---|---|
range |
Alcance | null | Localização de origem da referência de tipos, ou null para tipos incorporados. |
name |
cadeia (de caracteres) | O nome do tipo (por exemplo, "string", "int", "object", ou um nome de tipo definido pelo utilizador). |
ExportDefinition
Representa um símbolo exportado declarado com o @export() decorador.
| Propriedade | Tipo | Descrição |
|---|---|---|
range |
Intervalo | Localização de origem da declaração de exportação. |
name |
cadeia (de caracteres) | Nome do símbolo exportado. |
kind |
cadeia (de caracteres) | Tipo de exportação: "Type", "Variable", ou "Function". |
description |
string | null | Descrição do @description() decorador, ou null se não especificada. |
Node
Representa um nó de recurso num grafo de implantação.
| Propriedade | Tipo | Descrição |
|---|---|---|
range |
Intervalo | Localização de origem da declaração de recurso. |
name |
cadeia (de caracteres) | Nome simbólico do recurso no ficheiro Bicep. |
type |
cadeia (de caracteres) | Totalmente qualificado Azure tipo de recurso (por exemplo, "Microsoft.Storage/storageAccounts"). |
isExisting |
Booleano | Se o recurso é uma existing referência e não uma nova implementação. |
relativePath |
string | null | Caminho relativo se o recurso estiver definido num módulo; caso contrário null. |
Edge
Representa uma aresta de dependência direcionada entre dois nós de recurso num grafo de implementação.
| Propriedade | Tipo | Descrição |
|---|---|---|
source |
cadeia (de caracteres) | Nome simbólico do recurso dependente. |
target |
cadeia (de caracteres) | Nome simbólico do recurso em que depende. |
SnapshotMetadados
Fornece contexto de implementação no Azure para geração de snapshots. Todos os campos são opcionais.
| Propriedade | Tipo | Descrição |
|---|---|---|
tenantId |
string | null | O ID do inquilino do Azure Active Directory. |
subscriptionId |
string | null | O ID de subscrição do Azure. |
resourceGroup |
string | null | O nome do grupo de recursos-alvo. |
location |
string | null | A região Azure para a implementação. |
deploymentName |
string | null | O nome da implantação. |
Valor de EntradaExterna
Representa um valor de entrada externo para injetar num instantâneo.
| Propriedade | Tipo | Descrição |
|---|---|---|
kind |
cadeia (de caracteres) | O tipo de entrada externa (por exemplo, o tipo de fornecedor de entrada). |
config |
qualquer | null | Configuração JSON opcional para a entrada externa, ou null se não for necessária. |
value |
any | O valor JSON para a entrada externa. |
Usage
Com transporte de tubos nomeado
Use o argumento --pipe para passar um canal nomeado para a Bicep CLI se ligar. Note que o processo de chamada já deve ter iniciado o pipeline como servidor, e a CLI do Bicep irá ligar-se como cliente.
bicep jsonrpc --pipe <named_pipe>
<named_pipe> é um tubo nomeado existente para ligar o cliente JSON-RPC.
Exemplo
Para se ligar a um pipe nomeado no macOS ou Linux:
bicep jsonrpc --pipe /tmp/bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock
Para ligar a um tubo nomeado no Windows:
bicep jsonrpc --pipe \\.\pipe\\bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock
Com transporte de soquete TCP
Use o argumento --socket para passar uma porta TCP para que a CLI do Bicep se ligue. Note que o processo de chamada já deve estar a ouvir ligações na porta.
bicep jsonrpc --socket <tcp_socket>
<tcp_socket> é o número do socket ao qual o cliente JSON-RPC se liga.
Exemplo
Para ligar a um soquete TCP:
bicep jsonrpc --socket 12345
Com transporte stdin/stdout
Use a seguinte sintaxe para iniciar o servidor JSON-RPC com dados de pedido recebidos via stdin e dados de resposta enviados via stdout.
bicep jsonrpc --stdio
Biblioteca cliente .NET
O Azure.Bicep. O pacote NuGet RpcClient fornece uma biblioteca cliente .NET para a interface Bicep JSON-RPC. Pode descarregar automaticamente a versão especificada do Bicep CLI e gerir o seu ciclo de vida, por isso não precisa de o instalar separadamente.
Exemplo
O exemplo seguinte descarrega Bicep versão CLI 0.39.26, compila um ficheiro Bicep e imprime o template ARM resultante:
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);