该文件 azure.yaml 是 Azure 开发人员 CLI (azd) 项目的配置文件。 将其置于项目的根目录中,以定义构成应用程序的服务、Azure 资源、基础结构、挂钩和 CI/CD 管道。 运行命令(或 azd upazd provisionazd deployCLI)时,会读取此文件以了解应用的结构以及如何将其部署到 Azure。
本文是 azure.yaml 架构的完整参考。 有关模板入门 azd ,请参阅 Azure 开发人员 CLI 模板概述。
样本
下面是模板文件的azure.yaml一般示例azd。 有关实际示例,请参阅 azure.yamlToDo NodeJs Mongo 模板:
name: yourApp
metadata:
template: yourApp@0.0.1-beta
services:
web:
project: ./src/web
dist: build
language: js
host: appservice
api:
project: ./src/api
language: js
host: appservice
顶级属性
| 元素名称 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | 应用程序名称。 只允许小写字母、数字和连字符 (-) 。 名称必须以字母或数字开头和结尾。 |
resourceGroup |
N | 字符串 | Azure 资源组的名称。 指定后,重写用于基础结构预配的资源组名称。 支持环境变量替换。 |
metadata |
N | 对象 | 有关应用程序模板的元数据。 |
infra |
N | 对象 | 为 Azure 基础结构预配提供其他配置。 |
services |
N | 对象 | 构成应用程序的服务的定义。 |
resources |
N | 对象 | 应用程序使用的 Azure 资源的定义。 |
pipeline |
N | 对象 | 持续集成管道的定义。 |
hooks |
N | 对象 | 命令的命令级别挂钩 azd 。 |
requiredVersions |
N | 对象 | 为所需的版本 azd 和扩展提供其他配置。 |
state |
N | 对象 | 为状态管理提供其他配置。 |
platform |
N | 对象 | 为特定于平台的功能(例如 Azure 开发人员中心)提供其他配置。 |
workflows |
N | 对象 | 为工作流提供其他配置,例如重写 azd up 行为。 |
cloud |
N | 对象 | 提供用于部署到主权云的其他配置。 默认云为 AzureCloud. |
name
(字符串,必需) 应用程序名称。 只允许小写字母、数字和连字符 (-) 。 名称必须以字母或数字开头和结尾。 最小长度:2 个字符。
name: my-app
resourceGroup
(string) Azure 资源组的名称。 指定后,重写用于基础结构预配的资源组名称。 支持环境变量替换。 必须介于 3 到 64 个字符之间。
resourceGroup: rg-my-app-${AZURE_ENV_NAME}
metadata
(对象) 有关应用程序模板的元数据。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
template |
N | 字符串 | 从中创建应用程序的模板的标识符。 |
metadata:
template: todo-nodejs-mongo@0.0.1-beta
infra
(对象) 为 Azure 基础结构预配提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
provider |
N | 字符串 | 用于为应用程序预配 Azure 资源的基础结构预配提供程序。 内置值为 bicep 和 terraform。 扩展可以注册其他命名提供程序(例如 microsoft.foundry)。 默认值:bicep。 |
path |
N | 字符串 | 指定提供程序的 Azure 预配模板的相对文件夹路径。 默认值:infra。 |
module |
N | 字符串 | Azure 预配模板中默认模块的名称。 默认值:main。 |
layers |
N | 数组 | Azure 基础结构预配的层。 请参阅 infra.layers。 |
注释
如果 layers 指定了至少一个项, path 则无法使用和 module 属性。 请改用特定于 path 层的值和 module 值。
infra.layers
(对象数组) 定义 Azure 基础结构的预配层。 每个层表示独立的预配单元。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | 预配层的名称。 |
path |
Y | 字符串 | 指定提供程序的 Azure 预配模板的相对文件夹路径。 |
module |
N | 字符串 | 预配资源时使用的 Azure 预配模块的名称。 默认值:main。 |
dependsOn |
N | 字符串数组 | 此层所依赖的其他层的名称。 用于声明挂钩中介依赖项(例如,postprovision当另一层中的挂钩写入此层的 bicepparam 在预配时读取的 env var 时),azd静态分析器无法从.bicep / .bicepparam / .parameters.json内容推断。 |
hooks |
N | 对象 | 预配层挂钩。 支持 preprovision 和 postprovision 挂钩。 指定路径时,它们应相对于层路径。 请参阅 Hook 定义。 |
infra:
provider: bicep
layers:
- name: core
path: ./infra/core
- name: services
path: ./infra/services
dependsOn:
- core
hooks:
postprovision:
shell: sh
run: ./scripts/post-provision.sh
Terraform 作为 IaC 提供程序示例
若要使用 Terraform 而不是 Bicep,请将它 provider 设置为 terraform。 有关详细信息,请参阅 将 Terraform 用作 IaC 提供程序。
name: yourApp-terraform
metadata:
template: yourApp-terraform@0.0.1-beta
services:
web:
project: ./src/web
dist: build
language: js
host: appservice
api:
project: ./src/api
language: js
host: appservice
infra:
provider: terraform
services
(object) 构成应用程序的服务的定义。 每个密钥都是服务名称,值是服务配置对象。
服务属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
host |
Y | 字符串 | 用于服务实现的 Azure 资源的类型。 请参阅 主机类型。 |
project |
Conditional | 字符串 | 服务源代码目录的路径。 大多数主机类型都是必需的。 |
image |
Conditional | 字符串 | 要用于容器映像的源映像,而不是从源生成。 支持环境变量替换。 仅对 containerapp 主机有效。 |
language |
N | 字符串 | 服务实现语言。 允许的值:dotnet、、csharpfsharp、。 pypythonjstsjavagogolangdocker |
module |
N | 字符串 | 用于部署服务相对于根基础结构文件夹的基础结构模块的路径。 如果省略,CLI 假定模块名称与服务名称相同。 |
dist |
N | 字符串 | 服务部署项目的相对路径。 |
resourceName |
N | 字符串 | 实现服务的 Azure 资源的名称。 默认情况下,CLI 会发现已设置为当前服务名称的标记 azd-service-name 的 Azure 资源。 支持环境变量替换。 |
resourceGroup |
N | 字符串 | 包含资源的 Azure 资源组的名称。 指定后,CLI 将查找指定资源组中的 Azure 资源。 支持环境变量替换。 |
remoteBuild |
N | 布尔 | 是否对函数应用部署使用远程生成。 仅当 host 为 function. 设置为该部署 true包时,将使用 Oryx 远程生成部署包。
true默认为 JavaScript、TypeScript 和 Python 函数应用。 |
docker |
N | 对象 | Docker 配置。 仅适用于基于容器的主机。 请参阅 docker。 |
k8s |
N | 对象 | AKS 配置选项。 仅当 host 为 aks. 请参阅 k8s。 |
config |
N | 对象 | 服务的额外配置选项。 |
uses |
N | 数组 | 此服务依赖的服务名称和资源名称的列表。 |
env |
N | 对象 | 环境变量名称映射到值。 支持环境变量替换。 |
apiVersion |
N | 字符串 | 部署的资源提供程序 API 版本。 仅当 host 为 containerapp. |
hooks |
N | 对象 | 服务级别挂钩。 请参阅 服务挂钩。 |
Tip
有关不同服务配置的完整 YAML 示例,请参阅 服务示例 。
主机类型
该 host 属性确定用于服务实现的 Azure 资源的类型,并控制哪些其他属性有效。
| 主机值 | 描述 | 需要 project |
支持 image |
支持 docker |
支持 k8s |
支持 env |
支持 apiVersion |
|---|---|---|---|---|---|---|---|
appservice |
Azure App 服务 | N | Y | Y | N | Y | N |
containerapp |
Azure 容器应用 |
project 或 image (不是两者) |
Y | Y | N | Y | Y |
function |
Azure Functions | Y | N | N | N | N | N |
staticwebapp |
Azure Static Web Apps | Y | N | N | N | N | N |
springapp |
Azure Spring Apps | Y | N | N | N | N | N |
aks |
Azure Kubernetes 服务 | N | N | Y | Y | N | N |
ai.endpoint |
Azure AI 联机终结点 | Y | N | Y | N | N | N |
azure.ai.agent |
Azure AI 代理 | Y | Y | Y | N | Y | N |
microsoft.foundry |
Microsoft Foundry (旧版) | N | N | N | N | N | N |
azure.ai.project |
Microsoft Foundry 项目 | N | N | N | N | N | N |
azure.ai.connection |
Microsoft Foundry 连接 | N | N | N | N | N | N |
azure.ai.toolbox |
Microsoft Foundry 工具箱 | N | N | N | N | N | N |
azure.ai.skill |
Microsoft Foundry 技能 | N | N | N | N | N | N |
azure.ai.routine |
Microsoft Foundry 例程 | N | N | N | N | N | N |
注释
springapp 支持需要选择加入 alpha 功能。 有关详细信息,请参阅 Alpha 功能。
注释
如果host为containerapp,则必须提供或imageproject,但不能同时提供这两者。 如果 image 已设置,则从指定的映像部署容器。 如果 project 已设置,则从源生成容器映像。
注释
当 host 是 appservice时,可以通过设置 project或通过设置 image 和 docker从容器部署源。
注释
如果为 <config 个形状仍然有效。
注释
microsoft.foundry、azure.ai.project、azure.ai.connection、azure.ai.toolboxazure.ai.skill和 azure.ai.routine hosts 是声明性Microsoft Foundry 资源主机。 不会为其生成或部署应用程序代码。 相反,每个资源都声明了预配和配置的支持 Foundry 资源 azd 。 它们的配置来自相应的 azd 扩展而不是源代码,因此属性(如 project) image不适用 docker 。 用于 azure.ai.project 新项目; microsoft.foundry 是旧版兼容性主机。 有关属性详细信息,请参阅Microsoft Foundry 主机。
ai.endpoint 配置
(对象,需要何时hostai.endpoint) 为 Azure AI 联机终结点部署提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
workspace |
N | 字符串 | AI Studio 项目工作区的名称。 如果省略, azd 请使用环境变量中指定的 AZUREAI_PROJECT_NAME 值。 支持环境变量替换。 |
flow |
N | 对象 | Azure AI Studio Prompt Flow 配置。 省略时,不会创建提示流。 请参阅 AI 组件配置。 |
environment |
N | 对象 | Azure AI Studio 自定义环境配置。 省略时,不会创建自定义环境。 请参阅 AI 组件配置。 |
model |
N | 对象 | Azure AI Studio 模型配置。 省略时,不会创建模型。 请参阅 AI 组件配置。 |
deployment |
Y | 对象 | Azure AI Studio 联机终结点部署配置。 创建新的联机终结点部署,并在成功完成后自动将流量转移到新部署。 请参阅 AI 部署配置。 |
注释
何时hostai.endpoint为这两者project,并且config均是必需的。 请参阅ai.endpoint所需配置属性的配置。
AI 组件配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | AI 组件的名称。 省略时, azd 根据组件类型和服务名称生成名称。 支持环境变量替换。 |
path |
Y | 字符串 | AI 组件配置文件或源代码的路径。 |
overrides |
N | 对象 | 用于替代 AI 组件配置的键值对的映射。 支持环境变量替换。 |
AI 部署配置
从 AI 组件配置继承所有属性,以及:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
environment |
N | 对象 | 要设置为部署环境变量的键/值对的映射。 值支持 OS 和 azd 环境变量替换。 |
services:
myendpoint:
project: ./src/endpoint
host: ai.endpoint
config:
workspace: my-ai-project
deployment:
path: ./deployment
environment:
MODEL_NAME: ${AZURE_OPENAI_MODEL}
docker
(对象) 服务的 Docker 配置。 仅适用于支持容器(appservice、、containerappaks、、ai.endpoint) azure.ai.agent的主机。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
path |
N | 字符串 | Dockerfile 的路径,相对于服务。 默认值:./Dockerfile。 |
context |
N | 字符串 | docker 生成上下文。 指定后,重写默认上下文。 默认值:.。 |
platform |
N | 字符串 | 平台目标。 默认值:amd64。 |
registry |
N | 字符串 | 要将映像推送到的容器注册表。 如果省略,则默认为环境变量的值 AZURE_CONTAINER_REGISTRY_ENDPOINT 。 支持环境变量替换。 |
image |
N | 字符串 | 应用于生成的容器映像的名称。 如果省略,则默认为 {appName}/{serviceName}-{environmentName}. 支持环境变量替换。 |
tag |
N | 字符串 | 应用于生成的容器映像的标记。 如果省略,则默认为 azd-deploy-{unix time (seconds)}. 支持环境变量替换。 |
buildArgs |
N | 字符串数组 | 要传递给 docker 生成命令的生成参数。 |
network |
N | 字符串 | Docker 生成期间 RUN 指令的网络模式。
--network传递给 docker 生成。 例如,用于 host 允许生成容器访问主机网络。 |
remoteBuild |
N | 布尔 | 是否远程生成映像。 如果设置为 true该映像,则使用 Azure 容器注册表远程生成功能远程生成映像。 如果远程生成失败, azd 请使用 Docker 或 Podman 自动回退到本地生成(如果可用)。 |
k8s
(对象) Azure Kubernetes 服务 (AKS) 配置选项。 仅当 host 为 aks.
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
deploymentPath |
N | 字符串 | 从服务路径到 k8s 部署清单的相对路径。 默认值:manifests。 |
namespace |
N | 字符串 | 已部署资源的 k8s 命名空间。 指定后,将创建一个新的 k8s 命名空间(如果尚不存在)。 默认值:项目名称。 |
deployment |
N | 对象 | k8s 部署配置。 请参阅 部署配置。 |
service |
N | 对象 | k8s 服务配置。 请参阅 服务配置。 |
ingress |
N | 对象 | k8s 入口配置。 请参阅 入口配置。 |
helm |
N | 对象 | helm 配置。 请参阅 Helm 配置。 |
kustomize |
N | 对象 | kustomize 配置。 请参阅 Kustomize 配置。 |
部署配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | 部署期间要使用的 k8s 部署资源的名称。 如果未设置,请搜索包含服务名称的同一命名空间中的部署资源。 默认值:服务名称。 |
服务配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | 用作默认服务终结点的 k8s 服务资源的名称。 如果未设置,请搜索包含服务名称的同一命名空间中的服务资源。 默认值:服务名称。 |
入口配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | 要用作默认服务终结点的 k8s 入口资源的名称。 如果未设置,则搜索包含服务名称的同一命名空间中的入口资源。 默认值:服务名称。 |
relativePath |
N | 字符串 | 入口控制器根目录中的服务的相对路径。 设置后,它会追加到入口资源路径的根目录。 |
Helm 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
repositories |
N | 数组 | 要添加的 helm 存储库。 |
releases |
N | 数组 | 要安装的 helm 版本。 |
repositories 数组项:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | helm 存储库的名称。 |
url |
Y | 字符串 | helm 存储库的 URL。 |
releases 数组项:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | helm 版本的名称。 |
chart |
Y | 字符串 | helm 图表的名称。 |
version |
N | 字符串 | helm 图表的版本。 |
namespace |
N | 字符串 | 要安装 helm 图表的 k8s 命名空间。 默认为服务命名空间。 |
values |
N | 字符串 | 从服务到要 values.yaml 传递到 helm 图表的相对路径。 |
Kustomize 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
dir |
N | 字符串 | kustomize 目录的相对路径。 支持环境变量替换。 |
edits |
N | 字符串数组 | 在部署之前要应用的 kustomize 编辑。 支持环境变量替换。 |
env |
N | 对象 | 用于在 kustomize 目录中生成 .env 文件的环境键/值对。 值支持环境变量替换。 |
Microsoft Foundry 主机
主机azure.ai.agent和声明性 Foundry 资源主机(microsoft.foundry、、azure.ai.projectazure.ai.connection、azure.ai.toolbox和azure.ai.skillazure.ai.routine)使用 Microsoft Foundry 资源。 主机 azure.ai.agent 从 project 文件夹部署生成的应用程序代码,而声明性主机不涉及生成的任何代码。 每个声明性主机描述了预配和配置的支持 Foundry 资源 azd 。 与嵌套设置下的主机不同ai.endpoint,这些主机将其特定于主机的属性定义为平面同级host。config 每个主机的属性都来自 azd 扩展架构而不是核心 azure.yaml 架构,因此必须安装该扩展才能验证这些属性。 对于声明性主机,服务密钥是资源名称(例如连接、工具箱、技能或例程名称)。
azure.ai.agent 配置
(服务级别的属性,何时hostazure.ai.agent) 配置托管Microsoft Foundry 代理。 该服务还需要 project。 完整的属性集由 azure.ai.agent 扩展架构定义。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | 代理名称。 |
displayName |
N | 字符串 | 代理的友好显示名称。 |
description |
N | 字符串 | 代理的说明。 |
kind |
N | 字符串 | 代理类型。 仅支持 hosted。 |
env |
N | 对象 | 环境变量作为键/值对。 |
deployments |
N | 数组 | 代理的模型部署。 请参阅 代理模型部署。 |
codeConfiguration |
N | 对象 | 从源而不是容器映像部署代理。 请参阅 代理代码配置。 |
container |
N | 对象 | 代理的容器资源设置。 请参阅 代理容器资源。 |
startupCommand |
N | 字符串 | 用于在本地启动代理服务器的命令,例如 python main.py。 由 azd ai agent run. |
resources |
N | 数组 | 代理执行的外部资源。 每个项都有一个 resource 标识符和一个 connectionName。 |
toolConnections |
N | 数组 | 与外部服务(MCP 工具、A2A、自定义 API)的连接是在预配期间创建的。 请参阅 扩展架构。 |
toolboxes |
N | 数组 | 要部署的工具箱(Foundry 工具集)。 请参阅 扩展架构。 |
connections |
N | 数组 | Project通过Bicep预配创建的连接。 请参阅 扩展架构。 |
memoryStores |
N | 数组 | Foundry 内存存储,允许代理跨会话保留上下文。 请参阅 扩展架构。 |
policies |
N | 数组 | 附加到代理的治理策略,例如负责任的 AI。 请参阅 扩展架构。 |
protocols |
N | 数组 | 代理实现的调用协议,例如 responses, invocations或 a2a。 |
agentEndpoint |
N | 对象 | 代理终结点配置,例如协议、版本选择和身份验证。 |
agentCard |
N | 对象 | 代理的 A2A 发现元数据。 |
metadata |
N | 对象 | 代理的元数据键/值对。 |
inputSchema |
N | 对象 | 代理的输入架构。 |
outputSchema |
N | 对象 | 代理的输出架构。 |
代理模型部署
更新插入中的每个 deployments 项都会部署模型。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | 模型部署的名称。 |
model |
Y | 对象 | 模型配置: name、 format和 version (全部必需)。 |
sku |
Y | 对象 | SKU 配置: name 和 capacity (两者均必需)。 |
代理代码配置
如果 codeConfiguration 存在,则代理是从源 (ZIP) 而不是容器映像部署的。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
runtime |
Y | 字符串 | 运行时标识符,例如 python_3_12 或 dotnet_9。 |
entryPoint |
Y | 字符串 | 代理源的入口点。 |
dependencyResolution |
N | 字符串 | 依赖项解析模式,例如 bundled 或 remote_build。 |
代理容器资源
该 container 对象通过嵌套 resources 对象设置计算资源。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
cpu |
N | 字符串 | 例如 1 ,CPU 分配或 500m。 |
memory |
N | 字符串 | 例如, 1Gi 内存分配或 512Mi。 |
services:
myagent:
project: ./src/agent
host: azure.ai.agent
language: python
name: support-agent
displayName: Support Agent
kind: hosted
env:
LOG_LEVEL: info
deployments:
- name: gpt-4o
model:
name: gpt-4o
format: OpenAI
version: "2024-08-06"
sku:
name: GlobalStandard
capacity: 50
codeConfiguration:
runtime: python_3_12
entryPoint: main.py
dependencyResolution: remote_build
container:
resources:
cpu: "1"
memory: 2Gi
其他Microsoft Foundry 主机
以下声明性主机从 azd 扩展架构获取其属性。 不为其生成或部署代码。 每个资源声明预配的支持 Foundry 资源 azd 。 服务密钥是资源名称。 有关完整的属性集,请参阅每个主机的架构。
| 主机 | 关键特性 | Schema |
|---|---|---|
microsoft.foundry(旧版) |
endpoint、deployments、connections、toolboxes、skills、routines、agents |
microsoft.foundry.json |
azure.ai.project |
endpoint、deployments、network |
azure.ai.project.json |
azure.ai.connection |
category、target、authType、credentials、metadata |
azure.ai.connection.json |
azure.ai.toolbox |
description、tools |
azure.ai.toolbox.json |
azure.ai.skill |
description、instructions、tools |
azure.ai.skill.json |
azure.ai.routine |
description、enabled、triggers、action |
azure.ai.routine.json |
services:
# Foundry project that owns model deployments
project:
host: azure.ai.project
deployments:
- name: gpt-4o
model:
name: gpt-4o
format: OpenAI
version: "2024-08-06"
sku:
name: GlobalStandard
capacity: 50
# Connection referenced by tools (service key is the connection name)
my-search:
host: azure.ai.connection
uses:
- project
category: CognitiveSearch
target: https://my-search.search.windows.net
authType: ApiKey
服务挂钩
服务级别挂钩在服务生命周期事件期间执行。 挂钩应与前缀为 pre 或 post. 指定路径时,它们应相对于服务路径。 有关详细信息,请参阅 使用命令和事件挂钩自定义 Azure 开发人员 CLI 工作流。
支持的服务挂钩:prerestore、、、postrestoreprebuildpostbuildprepackagepostpackageprepublish、。 postpublishpredeploypostdeploy
每个挂钩都使用 挂钩定义 格式。
服务示例
使用 Docker 选项的容器应用
services:
api:
project: ./src/api
language: js
host: containerapp
docker:
path: ./Dockerfile
context: ../
web:
project: ./src/web
language: js
host: containerapp
docker:
remoteBuild: true
预生成的映像中的容器应用
services:
api:
image: myregistry.azurecr.io/myapp:latest
host: containerapp
具有服务级别挂钩的 AKS
services:
web:
project: ./src/web
dist: build
language: js
host: aks
hooks:
postdeploy:
shell: sh
run: azd env set REACT_APP_WEB_BASE_URL ${SERVICE_WEB_ENDPOINT_URL}
api:
project: ./src/api
language: js
host: aks
k8s:
ingress:
relativePath: api
hooks:
postdeploy:
shell: sh
run: azd env set REACT_APP_API_BASE_URL ${SERVICE_API_ENDPOINT_URL}
resources
(对象) 应用程序使用的 Azure 资源的定义。 每个键都是资源名称,值是资源配置对象。 可以通过属性由服务 uses 引用资源。
常见资源属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
type |
Y | 字符串 | 资源的类型。 请参阅 资源类型。 |
uses |
N | 数组 | 此资源依赖的其他资源。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
Tip
有关合并多个资源类型的完整 YAML 示例,请参阅 “资源”示例 。
资源类型
该 type 属性确定 Azure 资源的类型,并控制哪些附加属性可用。
| 类型值 | 描述 | 其他属性 |
|---|---|---|
host.appservice |
Azure 应用服务 Web 应用 | 请参阅 host.appservice 属性。 |
host.containerapp |
基于 Docker 的容器应用 | 请参阅 host.containerapp 属性。 |
ai.openai.model |
已部署的现成 AI 模型 | 请参阅 ai.openai.model 属性。 |
ai.project |
具有模型的 Microsoft Foundry 项目 | 请参阅 ai.project 属性。 |
ai.search |
Azure AI 搜索 | 请参阅 ai.search 属性。 |
db.postgres |
Azure Database for PostgreSQL | 没有额外的属性。 |
db.mysql |
Azure Database for MySQL | 没有额外的属性。 |
db.redis |
Azure Cache for Redis | 没有额外的属性。 |
db.mongo |
Azure Cosmos DB for MongoDB | 没有额外的属性。 |
db.cosmos |
Azure Cosmos DB for NoSQL | 请参阅 db.cosmos 属性。 |
messaging.eventhubs |
Azure 事件中心命名空间 | 请参阅 messaging.eventhubs 属性。 |
messaging.servicebus |
Azure 服务总线命名空间 | 请参阅 messaging.servicebus 属性。 |
storage |
Azure 存储 帐户 | 请参阅 storage 属性。 |
keyvault |
Azure 密钥保管库 | 请参阅 keyvault 属性。 |
host.appservice 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
port |
N | 整数 | Web 应用侦听的端口。 默认值:80。 |
runtime |
Y | 对象 | 语言运行时配置。 请参阅下文。 |
env |
N | 数组 | 环境变量。 每个项都有 name (必需) value和 secret 属性。 支持环境变量替换。 |
startupCommand |
N | 字符串 | 作为 Web 应用启动的一部分运行的启动命令。 |
uses |
N | 字符串数组 | 此资源使用的其他资源。 |
runtime 对象:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
stack |
Y | 字符串 | 语言运行时堆栈。 允许的值:node、python。 |
version |
Y | 字符串 | 语言运行时版本。 格式因堆栈而异(例如, 22-lts 对于 Node, 3.13 对于 Python)。 |
resources:
web:
type: host.appservice
port: 8080
runtime:
stack: node
version: 22-lts
uses:
- db
host.containerapp 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
port |
N | 整数 | 容器应用侦听的端口。 默认值:80。 |
env |
N | 数组 | 环境变量。 每个项都有 name (必需) value和 secret 属性。 支持环境变量替换。 |
uses |
N | 字符串数组 | 此资源使用的其他资源。 |
ai.openai.model 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
model |
Conditional | 对象 | 基础 AI 模型。 当 existing 是 false 时为必需项。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
model 对象:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | AI 模型的名称。 |
version |
Y | 字符串 | AI 模型的版本。 |
resources:
chatModel:
type: ai.openai.model
model:
name: gpt-4o
version: "2024-08-06"
ai.project 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
models |
N | 数组 | 要作为 AI 项目的一部分部署的 AI 模型。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
models 数组项:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | AI 模型的名称。 |
version |
Y | 字符串 | AI 模型的版本。 |
format |
Y | 字符串 | AI 模型的格式(例如 Microsoft, OpenAI)。 |
sku |
Y | 对象 | AI 模型的 SKU 配置。 |
sku 对象:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | SKU 的名称(例如 GlobalStandard)。 |
usageName |
Y | 字符串 | 用于计费目的的 SKU 的使用名称(例如 OpenAI.GlobalStandard.gpt-4o-mini)。 |
capacity |
Y | 整数 | SKU 的容量。 |
ai.search 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
db.cosmos 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
containers |
N | 数组 | 用于存储数据的容器。 每个容器存储一组项。 |
containers 数组项:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
Y | 字符串 | 容器的名称。 |
partitionKeys |
Y | 数组 | 用于跨分区分布数据的分区键(s)。 最多 3 个键。 默认值:/id。 |
messaging.eventhubs 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
hubs |
N | 字符串数组 | 在事件中心命名空间中创建的中心名称。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
messaging.servicebus 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
queues |
N | 字符串数组 | 在服务总线命名空间中创建的队列名称。 |
topics |
N | 字符串数组 | 在服务总线命名空间中创建的主题名称。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
storage 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
containers |
N | 字符串数组 | Azure 存储帐户容器名称。 |
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
keyvault 属性
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
existing |
N | 布尔 | 设置为 true此资源时,不会创建此资源,而是用于引用目的。 默认值:false。 |
资源示例
resources:
db:
type: db.postgres
cache:
type: db.redis
chatModel:
type: ai.openai.model
model:
name: gpt-4o
version: "2024-08-06"
web:
type: host.containerapp
port: 3100
uses:
- db
- chatModel
pipeline
(对象) 持续集成管道的定义。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
provider |
N | 字符串 | 要用于持续集成的管道提供程序。 默认值:github。 允许的值:github、azdo。 |
variables |
N | 字符串数组 |
azd在管道中用作变量的环境变量列表。 |
secrets |
N | 字符串数组 |
azd在管道中用作机密的环境变量列表。 |
pipeline:
provider: azdo
variables:
- CUSTOM_SETTING
secrets:
- API_KEY
hooks
(对象) 命令级别挂钩。 挂钩应与前缀为 azd 或 pre 的 post 命令名称匹配,具体取决于脚本的执行时间。 指定路径时,它们应相对于项目路径。 有关详细信息,请参阅 使用命令和事件挂钩自定义 Azure 开发人员 CLI 工作流。
支持的命令挂钩:preprovision、、postprovision、preinfracreatepostinfracreate、。 preinfradeletepostinfradeletepredownpostdownpreuppostupprepackagepostpackageprepublishpostpublishpredeploypostdeployprerestorepostrestore
每个挂钩都使用 挂钩定义 格式。
Tip
有关完整的 YAML 示例,请参阅 Hook 示例 ,包括特定于平台的挂钩、类型化执行程序以及每个事件的多个挂钩。
hooks:
preprovision:
shell: sh
run: ./scripts/setup.sh
postdeploy:
shell: sh
run: azd env set APP_URL ${SERVICE_WEB_ENDPOINT_URL}
挂钩定义
挂钩可以是单个挂钩对象或挂钩对象的数组。 每个挂钩对象具有以下属性:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
run |
Conditional | 字符串 | 脚本的内联脚本或相对路径。 指定shell、、kind、dir、interactive、continueOnError或secretsconfig时必需。 对于文件路径,shell 会自动从文件扩展名推断。 |
shell |
N | 字符串 | 要执行脚本的 shell 类型。 Optional. 省略时,azd根据操作系统选择默认值:pwsh在 Windows 和 sh Linux 和 macOS 上,并输出建议显式值的警告。 允许的值:sh、pwsh。 |
kind |
N | 字符串 | 挂钩脚本的执行程序类型。 省略时,将从路径的run文件扩展名(例如,.py变为,变为python.ps1)pwsh自动检测类型。 允许的值:sh、pwsh、js、ts、python、dotnet。 |
dir |
N | 字符串 | 用于挂钩执行的工作目录。 用作依赖项安装的项目根目录,并在运行脚本时用作工作目录。 从项目或服务根目录解析相对路径。 省略时,默认为包含脚本文件的目录。 |
continueOnError |
N | 布尔 | 脚本错误是否停止 azd 命令。 默认值:false。 |
interactive |
N | 布尔 | 脚本是否以交互模式运行、绑定到stdinstdoutstderr和正在运行的控制台。 默认值:false。 |
windows |
N | 对象 | 指定后,在 Windows 环境中执行时重写挂钩配置。 使用相同的挂钩对象格式。 |
posix |
N | 对象 | 指定后,在 POSIX(Linux 和 macOS)环境中执行时重写挂钩配置。 使用相同的挂钩对象格式。 |
secrets |
N | 对象 | 用于挂钩机密的 azd 环境变量映射。 如果变量在环境中设置为机密,则会将机密值传递给挂钩。 |
config |
N | 对象 | 执行程序特定的配置。 可用属性取决于 kind 值。 请参阅 Hook 执行程序配置。 |
注释
windows当同时指定和posix指定时,run不能在顶级使用 、、shellkinddirinteractivecontinueOnError、 secrets和config属性。 请改用特定于平台的对象。
挂钩执行程序配置
该 config 属性接受不同的属性,具体取决于 kind 值。
JavaScript 和 TypeScript (js, ts) 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
packageManager |
N | 字符串 | 用于依赖项安装的包管理器。 替代锁定文件中的自动检测。 允许的值:npm、pnpm、yarn。 |
Python 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
virtualEnvName |
N | 字符串 | Python 虚拟环境的目录名称。 默认为自动检测(.venv,或venv{baseName}_env)。 |
.NET (dotnet) 配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
configuration |
N | 字符串 | 用于生成挂钩脚本的 MSBuild 配置(例如,DebugRelease)。 |
framework |
N | 字符串 | 用于生成和运行挂钩脚本的目标框架名字对象(例如,net8.0)。 net10.0 |
Shell (sh, pwsh) 配置
Shell 执行程序目前 config 不支持属性。
挂钩示例
特定于平台的挂钩
hooks:
preprovision:
windows:
shell: pwsh
run: ./scripts/setup.ps1
posix:
shell: sh
run: ./scripts/setup.sh
具有种类的 Python 挂钩
hooks:
postprovision:
kind: python
run: ./scripts/seed-data.py
dir: ./scripts
config:
virtualEnvName: .venv
单个事件的多个挂钩
hooks:
postprovision:
- shell: sh
run: ./scripts/step1.sh
- shell: sh
run: ./scripts/step2.sh
requiredVersions
(对象) 为所需的版本 azd 和扩展提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
azd |
N | 字符串 | 此项目的一系列受支持的 azd 版本。
azd如果版本超出此范围,则项目无法加载。 支持 semver 范围语法。 |
extensions |
N | 对象 | 此项目所需的扩展和版本约束的映射。 支持 semver 约束。 如果省略版本,则安装最新版本。 |
requiredVersions:
azd: ">= 0.6.0-beta.3"
extensions:
azure.ai.agents: ">=1.0.0"
my-extension: latest
state
(对象) 为状态管理提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
remote |
N | 对象 | 为远程状态管理提供其他配置。 请参阅 state.remote。 |
state.remote
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
backend |
Y | 字符串 | 远程状态后端类型。 默认值:AzureBlobStorage。 允许的值: AzureBlobStorage. |
config |
Conditional | 对象 | 特定于后端的配置。 当 backend 是 AzureBlobStorage 时为必需项。 请参阅 Azure Blob 存储配置。 |
Azure Blob 存储配置
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
accountName |
Y | 字符串 | Azure 存储账户名称。 |
containerName |
N | 字符串 | Azure 存储容器名称。 如果未指定,则默认为项目名称。 |
endpoint |
N | 字符串 | Azure 存储终结点。 默认值:blob.core.windows.net。 |
state:
remote:
backend: AzureBlobStorage
config:
accountName: mystorageaccount
containerName: azd-state
platform
(对象) 为特定于平台的功能(例如 Azure 开发人员中心)提供其他配置。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
type |
Y | 字符串 | 平台类型。 允许的值: devcenter. |
config |
N | 对象 | 特定于平台的配置。 请参阅 开发人员中心配置。 |
开发人员中心配置
在以下type情况下devcenter可用:
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | Azure 开发人员中心的名称。 用作此项目的默认开发人员中心。 |
project |
N | 字符串 | Azure 开发人员中心项目的名称。 |
catalog |
N | 字符串 | Azure 开发人员中心目录的名称。 |
environmentDefinition |
N | 字符串 | 开发人员中心目录环境定义的名称。 |
environmentType |
N | 字符串 | 用于部署环境的开发人员中心项目环境类型。 |
platform:
type: devcenter
config:
name: my-devcenter
project: my-project
catalog: my-catalog
environmentDefinition: my-env-def
environmentType: dev
workflows
(对象) 为工作流提供其他配置,例如重写 azd up 行为。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
up |
N | 对象或数组 | 指定后,重写工作流的默认行为 azd up 。 |
工作流步骤
工作流 up 接受 steps 数组(也可以直接指定为数组)。 每个步骤都运行一个 azd 命令。
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
azd |
Y | 字符串或对象 | 要 azd 执行的命令。 可以是字符串(例如), provision也可以是具有 args 数组的对象。 |
配置工作流步骤顺序
以下azure.yaml文件更改了在步骤后azd up移动azd package步骤的默认行为azd provision。 在生成或打包过程中需要知道资源的 URL 的情况下,请使用此方法。
name: todo-nodejs-mongo
metadata:
template: todo-nodejs-mongo@0.0.1-beta
workflows:
up:
steps:
- azd: provision
- azd: package
- azd: deploy --all
cloud
(对象) 提供用于部署到主权云(例如 Azure 政府)的其他配置。 默认云为 AzureCloud.
| 财产 | 必填 | 类型 | 描述 |
|---|---|---|---|
name |
N | 字符串 | 云环境名称。 允许的值:AzureCloud、AzureChinaCloud、AzureUSGovernment。 |
cloud:
name: AzureUSGovernment
请求帮助
有关如何提交 bug、请求帮助或为 Azure 开发人员 CLI 提出新功能的信息,请访问 故障排除和支持 页。