定义资源
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 文件之前,请务必了解命名限制和要求。
当资源依赖于其他资源时会发生什么情况?
Bicep 文件通常包含多个资源。 通常,你需要一个资源依赖于另一个资源。 可能需要从一个资源提取一些信息才能定义另一个资源。 如果你要部署 Web 应用程序,则必须先创建服务器基础结构,然后才能向其添加应用程序。 这些关系称为“依赖关系”。
你需要为 Bicep 文件部署应用服务应用,该应用有助于启动玩具产品,但要创建应用服务应用,首先需要创建应用服务计划。 应用服务计划表示服务器托管资源,其声明如下:
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
}
}
此 Bicep 文件指示 Azure 在创建的计划中托管应用。 请注意,计划的定义包括以下行上应用服务计划的符号名称:serverFarmId: appServicePlan.id。 此行表示 Bicep 将使用 属性获取应用服务计划的资源 IDid。 它实际上表示:“此应用的服务器场 ID 是前面定义的应用服务计划的 ID”。
小窍门
在 Azure 中,资源 ID 是每个资源的唯一标识符。 资源 ID 包括 Azure 订阅 ID、资源组名称和资源名称,以及一些其他信息。
通过使用引用计划符号名称的属性声明应用资源,Azure 可了解应用服务应用与计划之间的隐式依赖关系。 当 Azure 部署资源时,将确保它在开始部署应用之前完全部署计划。