Bicep 中的导入

本文介绍用于导出和导入共享功能的语法,以及 Bicep 扩展性提供程序的命名空间。

导出类型、变量和函数(预览版)

注意

需要 Bicep CLI 版本 0.23.X 或更高版本才能使用此功能。 必须从 Bicep 配置文件启用试验功能 compileTimeImports。 对于用户定义的函数,还必须启用试验功能 userDefinedFunctions

@export() 修饰器用于指示给定语句可由另一个文件导入。 此修饰器仅在类型、变量和函数语句上有效。 标记为 @export() 的变量语句必须是编译时常数。

导出在其他 Bicep 文件中使用的功能的语法如下:

@export()
<statement_to_export>

导入类型、变量和函数(预览版)

注意

需要 Bicep CLI 版本 0.23.X 或更高版本才能使用此功能。 必须从 Bicep 配置文件启用试验功能 compileTimeImports。 对于用户定义的函数,还必须启用试验功能 userDefinedFunctions

从另一个 Bicep 文件导入功能的语法为:

import {<symbol_name>, <symbol_name>, ...} from '<bicep_file_name>'

使用可选别名重命名符号:

import {<symbol_name> as <alias_name>, ...} from '<bicep_file_name>'

使用通配符导入语法:

import * as <alias_name> from '<bicep_file_name>'

可以混合和匹配上述语法。 若要使用通配符语法访问导入的符号,必须使用 . 运算符:<alias_name>.<exported_symbol>

只能导入在引用的文件中导出的语句。

已从另一个文件导入的功能可以不受限制地使用。 例如,导入的变量可以在文件中声明的变量通常有效的任何位置使用。

示例

exports.bicep

@export()
type myObjectType = {
  foo: string
  bar: int
}

@export()
var myConstant = 'This is a constant value'

@export()
func sayHello(name string) string => 'Hello ${name}!'

main.bicep

import * as myImports from 'exports.bicep'
import {myObjectType, sayHello} from 'exports.bicep'

param exampleObject myObjectType = {
  foo: myImports.myConstant
  bar: 0
}

output greeting string = sayHello('Bicep user')
output exampleObject myImports.myObjectType = exampleObject

导入命名空间和扩展性提供程序(预览版)

注意

必须从 Bicep 配置文件启用试验功能 extensibility,才能使用此功能。

导入命名空间的语法为:

import 'az@1.0.0'
import 'sys@1.0.0'

azsys都是 Bicep 内置命名空间。 默认情况下会导入它们。 有关azsys中定义的数据类型和函数的详细信息,请参阅数据类型Bicep 函数

用于导入 Bicep 扩展性提供程序的语法为:

import '<provider-name>@<provider-version>'

导入需要配置的 Bicep 扩展性提供程序的语法为:

import '<provider-name>@<provider-version>' with {
  <provider-properties>
}

请参阅 Bicep 扩展性 Kubernetes 提供程序,查看示例。

后续步骤