Azure 开发者 CLI (azd) 的可组合性(compose)功能可以让你逐步组合应用所需的 Azure 资源,而无需手动编写 Bicep 代码。 本文介绍如何使用撰写功能生成最小模板。 有关此功能的更多概念性信息,请访问azd撰写概述文章。
注释
azd撰写功能目前为 alpha,不应在生产应用中使用。 后续版本中对 alpha 功能的更改可能会导致中断性变更。 有关详细信息,请访问 azd 功能版本控制、发布策略 和 功能阶段 页。 使用右上角的 “反馈 ”按钮共享有关该功能和本文的 compose 反馈。
使用撰写功能
通过azd命令访问azd add撰写功能。 该 azd add 命令适用于使用以下 azd init 工作流创建的模板:
- 使用当前目录中的代码(适用于面向用于托管的 Azure 容器应用的应用)
- 创建最小项目
当前不支持通过 “选择模板流” 初始化的模板。 azd 撰写功能可为你管理基础结构,与具有现有的 infra 文件夹资产的模板不兼容。 更多信息请参阅 生成 Bicep 代码 文章和 模板创建工作流 页面。
完成以下步骤,在不编写任何代码的情况下将新资源添加到模板:
在终端窗口中,导航到模板的
azd根目录。azd add运行命令以添加新资源并启动撰写工作流:azd add选择要添加到应用的支持资源之一。 对于此示例,请选择
Database。? What would you like to add? [Use arrows to move, type to filter] > AI Database Host service Key Vault Messaging Storage account ~Existing resource对于数据库类型,请选择
PostgreSQL。? Which type of database? [Use arrows to move, type to filter] MongoDB > PostgreSQL Redis输入新资源的名称,例如
azddb。? Input the name of the app database (PostgreSQL)如果应用包含服务,
azd则提示你选择使用此资源的服务。? Select the service(s) that uses this resource > [✓] webfrontendazd可生成对azure.yaml文件所需的更改的预览。 按 Enter 接受并应用更改。Previewing changes to azure.yaml: + azddata: + type: db.postgres webfrontend: type: host.containerapp uses: - azddb + - azddata port: 80运行
azd up命令以预配通过azd add命令所做的任何更改。 在此示例中,azd在 Azure 中预配 PostgreSQL 数据库。azd add再次运行该命令以添加其他资源,例如 OpenAI 服务。
浏览 azure.yaml 文件
azure.yaml 是用于管理应用的配置文件 azd 。 azd使用相应的azd add节点和services节点管理通过resources命令组成的服务和资源。 请考虑以下通过 azure.yaml 完全更新的 azd add 文件的示例:
name: azdcomposesample
metadata:
template: azd-init@1.11.0
services:
webfrontend:
project: src
host: containerapp
language: dotnet
resources:
webfrontend:
type: host.containerapp
port: 80
uses:
- azdsql
- azdchat
azdsql:
type: db.postgres
azdchat:
type: ai.openai.model
model:
name: gpt-4o
version: "2024-08-06"
- 节点
services声明:- 在
webfrontend目录中的 .NET Web 应用和 Azure 容器应用之间的部署映射命名为src。
- 在
- 节点
resources声明:- Azure 容器应用和在托管的 .NET 容器应用和它所依赖的数据库和 AI 服务之间名为
webfrontend的匹配依赖项映射。 节点uses将应用映射到它依赖的其他资源。 - 名为
azdsql的 Azure Database for PostgreSQL 资源。 - 一个名为
azdchat的 Azure OpenAI 资源。
- Azure 容器应用和在托管的 .NET 容器应用和它所依赖的数据库和 AI 服务之间名为