定义资源
Bicep 模板是你创作的文件,用于定义要部署的 Azure 资源。
你所在的玩具公司需要你为产品发布创建一个可重用的 Bicep 模板。 该模板需要部署 Azure 存储帐户和 Azure 应用服务资源,这些资源将用于新产品发布过程中每个产品的市场营销。
在本单元中,你将了解如何在 Bicep 模板中定义资源、资源名称的作用,以及如何创建彼此关联的资源。
注意
本单元中显示的命令用于说明概念。 请暂时不要运行这些命令。 稍后你将练习在此处学到的知识。
定义资源
在 Bicep 模板中的主要操作是定义 Azure 资源。 下面的示例是 Bicep 中的一个典型资源定义。 此示例创建一个名为 toylaunchstorage
的存储帐户。
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: 'toylaunchstorage'
location: 'westus3'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
我们来仔细看看此资源定义中的一些关键部分:
开头处的
resource
关键字告诉 Bicep 你要定义资源。接下来,你为资源提供一个符号名称。 在本例中,资源的符号名称是
storageAccount
。 符号名称在 Bicep 中用于指示资源,但不会显示在 Azure 中。Microsoft.Storage/storageAccounts@2022-09-01
是资源的资源类型和 API 版本。Microsoft.Storage/storageAccounts
告诉 Bicep 你正在声明一个 Azure 存储帐户。 日期2022-09-01
是 Azure 存储 API 的版本,Bicep 在创建资源时会用到它。提示
适用于 Visual Studio Code 的 Bicep 扩展可帮助你查找你所创建资源的资源类型和 API 版本。 如果你熟悉 ARM 模板,请注意,API 版本也与你在其中使用的版本一致。
必须声明资源名称,这是将在 Azure 中向存储帐户分配的名称。 将使用
name
关键字设置资源名称。重要
符号名称只能在 Bicep 模板中使用,并且不会显示在 Azure 中。 资源名称会在 Azure 中显示。
然后,设置资源的其他详细信息,例如它的位置、SKU(定价层)和种类。 还可以定义一些属性,每种资源类型都有不同的属性。 不同的 API 版本也可能会引入不同的属性。 在本例中,我们将存储帐户的访问层设置为
Hot
。
提示
资源名称通常包含必须遵循的规则,如最大长度、允许的字符以及在所有 Azure 中的唯一性。 每个 Azure 资源类型的资源名称要求不同。 在将其添加到模板之前,请务必了解命名限制和要求。
当资源依赖于其他资源时会发生什么情况?
Bicep 模板通常包含若干个资源。 通常,你需要一个资源依赖于另一个资源。 可能需要从一个资源提取一些信息才能定义另一个资源。 如果你要部署 Web 应用程序,则必须先创建服务器基础结构,然后才能向其添加应用程序。 这些关系称为“依赖关系”。
你需要为模板部署一个应用服务应用,以帮助发布玩具产品,但若要创建应用服务应用,首先需要创建一个应用服务计划。 应用服务计划表示服务器托管资源,其声明如下:
resource appServicePlan 'Microsoft.Web/serverFarms@2023-12-01' = {
name: 'toy-product-launch-plan'
location: 'westus3'
sku: {
name: 'F1'
}
}
此资源定义正在通知 Bicep 你要部署一项应用服务计划(资源类型为 Microsoft.Web/serverFarms
)。 该计划资源名为 toy-product-launch-plan
,将在美国西部 3 区域部署。 它使用 F1 定价 SKU,这是应用服务的免费层。
现在,你已声明应用服务计划,下一步是声明应用:
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: 'toy-product-launch-1'
location: 'westus3'
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
此模板指示 Azure 在你创建的计划中托管应用。 请注意,计划的定义包括以下行上应用服务计划的符号名称:serverFarmId: appServicePlan.id
。 此行表示 Bicep 将使用 id
属性获取应用服务计划的资源 ID。 它实际上表示:“此应用的服务器场 ID 是前面定义的应用服务计划的 ID”。
提示
在 Azure 中,资源 ID 是每个资源的唯一标识符。 资源 ID 包括 Azure 订阅 ID、资源组名称和资源名称,以及一些其他信息。
通过使用引用计划符号名称的属性声明应用资源,Azure 可了解应用服务应用与计划之间的隐式依赖关系。 当 Azure 部署资源时,将确保它在开始部署应用之前完全部署计划。