@azure/provisioning-core
TypeScript中作者Azure基础设施的运行时间:资源树,符号表达式,共享配置,以及JSON和Bicep序列化. 创建或编辑这些对象会改变部署定义,而不是活的Azure资源.
开始 开始 使用核心和服务类,例如 StorageAccount 财务报告和审定财务报表 KeyVault。 。 。 .
主要特点
资源作者
部署定义是 ProvisioningComponent 对象. Stack, (中文(简体) ), Resource,以及诸如 StorageAccount 是它的直接或间接的子类。 每个组成部分与源执行的联系:
- 规定 构成部分 - 树节点的基级,提供亲子跟踪、继承部署环境、转弯和转换。 可以创建自己的子类来分组相关资源,应用共享配置,并曝光资源手柄作为可再使用组件. 组件本身不声明 Azure 资源 .
- 堆栈 - 定义、持有资源和部署投入及产出的根基部分.
- 资源 - 服务类别和一般ARM申报的基础,包括现有参考资料、条件和依赖性。 可写入属性可以在构建后和序列化前进行编辑;只读属性仍可作为参考.
- 资源组 - 内置的Azure资源,也为其资源提供父环境.
- 部署背景 - 通过构件树携带继承位置、标记和命名政策。 最近的祖先供应地点和政策;祖先标记被合并,较近的价值观念优先.
- 命名 - 通过可配置的政策生成省略的资源名称,使用 资源命名规则 描述Azure的长度,性能和独特性要求. 这些规则指导名称生成;明确名称使用不变.
- 参数 - 在部署时提供的投入,有可选的缺省和限制.
- 变量 - 定义中共有的指定值或表达式.
- 产出 - 部署返回的值,例如资源ID.
- 资源查询 - 按类型或字面名称找到作者对象,这样可以不经询问Azure而对其进行检查和编辑.
更多信息
- 开始 - 通过公共API构建和配置资源.
- 配置资源属性 - 在序列化之前编辑可写入属性或替换嵌入对象.
- 基础设施撰写模式 - 资源关系和可重复使用的组件.
- 名称和共享默认值 - 命名政策、继承的设置和资源级别覆盖.
- 参数、变量和产出 - 通过堆栈收藏声明部署值.
函数和表达式
将资源设置与参数,计算和其他资源连接起来,即使其数值尚不得而知. 核心保存这些关系作为部署时表达,而不是在JavaScript中评价.
- 函数助手 - 说吧
fn构建连接,比较,资源ID计算等符号操作. - 表达式类型 - 说吧
Expression<T>财务报告和审定财务报表ExpressionOrValue<T>描述符号值和字面值;生成的输入/视图类型使用核心的打字合同支持嵌入式作者. - 资源属性表达式 - 使用资源属性作为部署时间表达式来连接资源,例如将一个资源的ID传递给另一个资源的输入.
更多信息
部署时间歧视者
使用 asDiscriminator 当一个部署表达式必须填充一个字面歧视者.
在这个例子中, kindParam 是一个 Expression<"cache">,以及
widget.properties.primaryRule 接受缓存规则 cacheKind 财务报告和审定财务报表 days
或重定向规则。 帮助者在保留其属性检查的同时选择缓存变体.
import { asDiscriminator } from "@azure/provisioning-core";
widget.properties.primaryRule = {
kind: asDiscriminator(kindParam),
cacheKind: "long",
days: 7,
};
如果可能的话,最好选一个字面歧视者。 这个帮助者是一个类型断言,而不是运行时间验证.
序列化和恢复
序列化 将树、值和引用转换为 JSON 兼容文档. 淡化 重建所支持的资源对象, 以便再次查询、 编辑和序列化 。 三块支持这次来回旅行:
- 序列化 AST - 定义用于在TypeScript和.NET之间交换提供定义的跨语言的JSON格式,因此双方对资源声明,数值和参考文献的解释一致.
- 运行时形状 - 保留客户端到ARM属性映射,嵌入类型,以及TypeScript去除后编码元数据,指导双向值转换.
- 资源登记 - 按资源类型、API版本和变体解决已登记的类别和形状。 在恢复前装入相关服务包,以便提供注册.
进口范围尽可能解决已知的母关系。 否则, 它们的表达式被保留下来,用于圆形和清晰的Bicep渲染,而不包含 推断一个部署目的地。 这不增加明确的写作范围 新资源.
更多信息
Bicep 生成
内部 制作Bicep 文件夹 API 生成 来自作者Stacks的Bicep文件.
import { renderBicepFiles } from "@azure/provisioning-core/internal";
for (const file of renderBicepFiles(stack)) {
console.log(file.path);
console.log(file.contents);
}
渲染器接受一个 Stack 或一系列 Stack 并返回路径和源
文本不写入文件或部署资源。 将保存的 JSON 恢复为
deserialize() 在制作之前.
见 Bicep 生成 用于文件 排版和交叉文件引用,以及 Bicep 瞄准镜 用于部署范围规则.
相关软件包
关于服务类、其类型和运行时间元数据是如何生成的,参见 服务包解剖学 编辑 TypeSpec 发射器概览。 。 。 .