Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
O comando jsonrpc foi introduzido pela primeira vez no Bicep versão 0.29.45. Os parâmetros e o formato de resultado são estáveis e compatíveis com versões anteriores. Novos campos podem ser adicionados aos resultados em versões futuras, mas os campos existentes não serão removidos ou renomeados. Os clientes devem ignorar campos desconhecidos para permanecerem compatíveis com versões mais recentes da CLI Bicep.
O comando jsonrpc executa a CLI Bicep com uma interface JSON-RPC. Usando essa interface, você pode interagir programaticamente com a saída estruturada. Você também evita atrasos de início frio ao compilar vários arquivos. Essa configuração dá suporte à criação de bibliotecas para interagir com Bicep programaticamente.
Formato de fio
O formato de fio adere à especificaçãoJSON-RPC 2.0. Cada mensagem é delimitada por cabeçalho, usando a seguinte estrutura, onde \r e \n representam caracteres de retorno de carro e feed de linha:
Content-Length: <length>\r\n\r\n<message>\r\n\r\n
-
<length>é o comprimento da cadeia de<message>caracteres, incluindo o .\r\n\r\n -
<message>é a mensagem JSON bruta.
Por exemplo, para 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 se parece com:
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 é thread-safe, mas como as solicitações são multiplexadas em um único canal, é responsabilidade do cliente garantir que as solicitações sejam serializadas. Isso significa que cada solicitação deve ser enviada na íntegra antes de enviar uma segunda solicitação e uma exclusiva id deve ser enviada para cada solicitação. O cliente não precisa aguardar uma resposta antes de enviar uma nova solicitação.
Methods
Os métodos a seguir estão disponíveis por meio da interface JSON-RPC.
bicep/versão
Retorna a versão da CLI do Bicep.
Params
Esse método não usa parâmetros.
Resultado
| Propriedade | Tipo | Descrição |
|---|---|---|
version |
cadeia | A cadeia de caracteres de versão semântica da CLI do Bicep (por exemplo, "0.38.5"). |
Exemplo
Params:
{}
Resultado:
{
"version": "0.24.211"
}
bicep/compile
Compila um arquivo especificado .bicep e retorna o modelo do ARM compilado JSON.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia | O caminho do arquivo para o .bicep arquivo a ser compilado. |
Resultado
| Propriedade | Tipo | Descrição |
|---|---|---|
success |
boolean | Se a compilação foi concluída sem erros. |
diagnostics |
DiagnosticDefinition[] | Diagnóstico produzido durante a compilação. |
contents |
cadeia de caracteres | Null | O JSON do modelo arm compilado ou null se a compilação falhou. |
Exemplo
Params:
{
"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 arquivo especificado .bicepparam . Retorna os parâmetros compilados JSON e o modelo associado.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia | O caminho do arquivo para o .bicepparam arquivo a ser compilado. |
parameterOverrides |
objeto | Um dicionário de nomes de parâmetro para valores JSON que substituem os padrões especificados no arquivo de parâmetros. |
Resultado
| Propriedade | Tipo | Descrição |
|---|---|---|
success |
boolean | Se a compilação foi concluída sem erros. |
diagnostics |
DiagnosticDefinition[] | Diagnóstico produzido durante a compilação. |
parameters |
cadeia de caracteres | Null | O JSON dos parâmetros ARM compilados ou null se a compilação falhou. |
template |
cadeia de caracteres | Null | O JSON do modelo arm compilado referenciado pelo arquivo de parâmetros ou null , se não for resolvível. |
templateSpecId |
cadeia de caracteres | Null | O Azure ID do recurso da especificação de modelo se o arquivo de parâmetros fizer referência a um; caso contrário, null. |
Exemplo
Params:
{
"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
}
bicep/getMetadata
Retorna metadados sobre um arquivo especificado .bicep , incluindo parâmetros, saídas, exportações e decoradores de metadados.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia | O caminho do arquivo para o .bicep arquivo a ser analisado. |
Resultado
| Propriedade | Tipo | Descrição |
|---|---|---|
metadata |
MetadataDefinition[] | Entradas de metadados no nível do arquivo declaradas com a metadata palavra-chave. |
parameters |
SymbolDefinition[] | Definições de parâmetro declaradas no arquivo Bicep. |
outputs |
SymbolDefinition[] | Definições de saída declaradas no arquivo Bicep. |
exports |
ExportDefinition[] | Símbolos exportados declarados com o @export() decorador. |
Exemplo
Params:
{
"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
Retorna o grafo de implantação de um arquivo especificado .bicep , descrevendo os recursos e suas dependências.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia | O caminho do arquivo para o .bicep arquivo a ser analisado. |
Resultado
| Propriedade | Tipo | Descrição |
|---|---|---|
nodes |
node[] | Os nós de recurso no grafo de implantação. |
edges |
Borda[] | As bordas de dependência entre nós de recurso. |
Exemplo
Params:
{
"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" }
]
}
bicep/getFileReferences
Obtém a lista completa de caminhos de arquivo referenciados por uma compilação. Útil para determinar um conjunto de arquivos para observar as alterações.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia | O caminho do arquivo para o .bicep arquivo a ser analisado. |
Resultado
| Propriedade | Tipo | Descrição |
|---|---|---|
filePaths |
cadeia de caracteres[] | Caminhos absolutos de todos os arquivos referenciados durante a compilação, incluindo o próprio arquivo de entrada, quaisquer módulos e arquivos de configuração. |
Exemplo
Params:
{
"path": "/path/to/main.bicep"
}
Resultado:
{
"filePaths": [
"/path/to/main.bicep",
"/path/to/modules/storage.bicep",
"/path/to/bicepconfig.json"
]
}
bicep/getSnapshot
Observação
Esse método requer Bicep CLI versão 0.36.1 ou superior.
Cria um instantâneo de implantação para um determinado .bicepparam arquivo. O instantâneo agrupa todas as informações necessárias para implantação em um único documento JSON independente.
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia | O caminho do arquivo para o .bicepparam arquivo. |
metadata |
SnapshotMetadata | Metadados de implantação que fornecem Azure contexto. Todos os campos são opcionais. |
externalInputs |
ExternalInputValue[] | Null | Valores de entrada externos para injetar no instantâneo. Passe null se não for necessário. |
Resultado
| Propriedade | Tipo | Descrição |
|---|---|---|
snapshot |
cadeia | O instantâneo de implantação autossuficiente como uma cadeia de caracteres JSON. |
Exemplo
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": []
}
Resultado:
{
"snapshot": "{...}"
}
bicep/format
Observação
Esse método requer Bicep CLI versão 0.37.1 ou superior.
Formata um arquivo especificado .bicep .
Params
| Propriedade | Tipo | Descrição |
|---|---|---|
path |
cadeia | O caminho do arquivo para o .bicep arquivo a ser formatado. |
Resultado
| Propriedade | Tipo | Descrição |
|---|---|---|
contents |
cadeia | O código-fonte Bicep formatado. |
Exemplo
Params:
{
"path": "/path/to/file.bicep"
}
Resultado:
{
"contents": "..."
}
Tipos
Os tipos a seguir são usados em entradas e saídas de método.
Posição
Representa uma posição baseada em zero em um arquivo de origem Bicep.
| Propriedade | Tipo | Descrição |
|---|---|---|
line |
inteiro | Número de linha baseado em zero. |
char |
inteiro | Deslocamento de caractere baseado em zero dentro da linha. |
Intervalo
Representa um intervalo dentro de um arquivo de origem Bicep.
| Propriedade | Tipo | Descrição |
|---|---|---|
start |
Posição | Posição inicial do intervalo (inclusive). |
end |
Posição | Posição final do intervalo (exclusivo). |
DiagnosticDefinition
Representa uma mensagem de diagnóstico produzida durante a compilação ou análise.
| Propriedade | Tipo | Descrição |
|---|---|---|
source |
cadeia | Origem do diagnóstico (por exemplo, "bicep" para diagnóstico do compilador ou um nome de regra linter). |
range |
Intervalo | Intervalo de localização de origem em que o diagnóstico se aplica. |
level |
cadeia | Nível de gravidade: "Error", "Warning"ou "Info". |
code |
cadeia | Código de diagnóstico que identifica o tipo de diagnóstico (por exemplo, "BCP001"). |
message |
cadeia | Mensagem de diagnóstico legível por humanos. |
MetadadosDefinition
Representa uma entrada de metadados no nível do arquivo declarada com a metadata palavra-chave.
| Propriedade | Tipo | Descrição |
|---|---|---|
name |
cadeia | O nome da chave de metadados (por exemplo, "description"). |
value |
cadeia | O valor dos metadados. |
SymbolDefinition
Representa um parâmetro ou símbolo de saída em um arquivo Bicep.
| Propriedade | Tipo | Descrição |
|---|---|---|
range |
Intervalo | Local de origem da declaração de símbolo. |
name |
cadeia | Nome do parâmetro ou saída. |
type |
TypeDefinition | Null | Tipo do símbolo ou null , se não for retomável. |
description |
cadeia de caracteres | Null | Descrição do @description() decorador ou null se não for especificada. |
TypeDefinition
Representa uma referência de tipo para um parâmetro ou saída.
| Propriedade | Tipo | Descrição |
|---|---|---|
range |
Intervalo | Null | Local de origem da referência de tipo ou null para tipos internos. |
name |
cadeia | O nome do tipo (por exemplo, "string", ou "int""object"um nome de tipo definido pelo usuário). |
ExportDefinição
Representa um símbolo exportado declarado com o @export() decorador.
| Propriedade | Tipo | Descrição |
|---|---|---|
range |
Intervalo | Local de origem da declaração de exportação. |
name |
cadeia | Nome do símbolo exportado. |
kind |
cadeia | Tipo de exportação: "Type", "Variable"ou "Function". |
description |
cadeia de caracteres | Null | Descrição do @description() decorador ou null se não for especificada. |
Node
Representa um nó de recurso em um grafo de implantação.
| Propriedade | Tipo | Descrição |
|---|---|---|
range |
Intervalo | Local de origem da declaração de recurso. |
name |
cadeia | Nome simbólico do recurso no arquivo Bicep. |
type |
cadeia | Tipo de recurso de Azure totalmente qualificado (por exemplo, "Microsoft.Storage/storageAccounts"). |
isExisting |
boolean | Se o recurso é uma existing referência em vez de uma nova implantação. |
relativePath |
cadeia de caracteres | Null | Caminho relativo se o recurso for definido em um módulo; caso contrário null. |
Edge
Representa uma borda de dependência direcionada entre dois nós de recurso em um grafo de implantação.
| Propriedade | Tipo | Descrição |
|---|---|---|
source |
cadeia | Nome simbólico do recurso dependente. |
target |
cadeia | Nome simbólico do recurso que está sendo dependente. |
SnapshotMetadata
Fornece Azure contexto de implantação para geração de instantâneo. Todos os campos são opcionais.
| Propriedade | Tipo | Descrição |
|---|---|---|
tenantId |
cadeia de caracteres | Null | A ID do locatário Azure Active Directory. |
subscriptionId |
cadeia de caracteres | Null | A ID da assinatura Azure. |
resourceGroup |
cadeia de caracteres | Null | O nome do grupo de recursos de destino. |
location |
cadeia de caracteres | Null | A região Azure para a implantação. |
deploymentName |
cadeia de caracteres | Null | O nome da implantação. |
ExternalInputValue
Representa um valor de entrada externo para injetar em um instantâneo.
| Propriedade | Tipo | Descrição |
|---|---|---|
kind |
cadeia | O tipo de entrada externa (por exemplo, o tipo de provedor de entrada). |
config |
any | Null | Configuração JSON opcional para a entrada externa ou null , se não for necessário. |
value |
qualquer | O valor JSON para a entrada externa. |
Usage
Com transporte de pipe nomeado
Use o argumento --pipe para passar um pipe nomeado para a CLI do Bicep para se conectar. Observe que o processo de chamada já deve ter iniciado o pipe como um servidor e Bicep CLI se conectará como um cliente.
bicep jsonrpc --pipe <named_pipe>
<named_pipe> é um pipe nomeado existente para conectar o cliente JSON-RPC.
Exemplo
Para se conectar a um pipe nomeado no macOS ou linux:
bicep jsonrpc --pipe /tmp/bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock
Para se conectar a um pipe nomeado no Windows:
bicep jsonrpc --pipe \\.\pipe\\bicep-81375a8084b474fa2eaedda1702a7aa40e2eaa24b3.sock
Com o transporte de soquete TCP
Use o argumento --socket para passar uma porta TCP para a CLI Bicep para se conectar. Observe que o processo de chamada já deve estar escutando conexões na porta.
bicep jsonrpc --socket <tcp_socket>
<tcp_socket> é o número do soquete ao qual o cliente JSON-RPC se conecta.
Exemplo
Para se conectar a um soquete TCP:
bicep jsonrpc --socket 12345
Com transporte stdin/stdout
Use a sintaxe a seguir para iniciar o servidor JSON-RPC com dados de solicitação recebidos por meio de stdin e dados de resposta enviados por meio de stdout.
bicep jsonrpc --stdio
biblioteca de clientes .NET
O Azure.Bicep. RpcClient pacote NuGet fornece uma biblioteca de cliente .NET para a interface Bicep JSON-RPC. Ele pode baixar automaticamente a versão especificada da CLI do Bicep e gerenciar seu ciclo de vida, portanto, você não precisa instalá-la separadamente.
Exemplo
O exemplo a seguir baixa Bicep versão da CLI 0.39.26, compila um arquivo Bicep e imprime o modelo do 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);